Кодирование изображений


Энтропийное сжатие. - часть 3


 

1.    Ищем в таблице интервал, в который попадает наше число Ч, и выдаем символ в него входящий  в декодируемый массив.

2.    Интервал И = ВГ символа - НГ символа (оба значения - из таблицы).

3.    Ч = (Ч - НГ) / И.

 

Шаг

Число

Символ

НГ

ВГ

Интервал

1

0.18989472

К

0

0.4

0.4

2

0.4747368

З

0.4

0.5

0.1

3

0.747368

С

0.5

0.8

0.3

4

0.82456

Г

0.8

0.9

0.1

5

0.2456

К

0

0.4

0.4

6

0.614

С

0.5

0.8

0.3

7

0.38

К

0

0.4

0.4

8

0.95

Б

0.9

1

0.1

9

0.5

С

0.5

0.8

0.3

10

0

К

0

0.4

0.4

 

В данном примере арифметический кодер «обогнал» метод Хаффмана на 1 бит. В отличие от метода Хаффмана трудоемкость алгоритма значительна. В чем же тогда «полезность»

алгоритма? Рассмотрим последовательность КККККККС. При кодировании методом Хаффмана получим выходную последовательность длиной в 9 бит (можно и в 8, так как массив состоит из 2 разных байт). При арифметическом кодировании данную последовательность можно закодировать числом 0.4375 или в двоичном виде как 0111, занимающей 4 бита. То есть при арифметическом кодировании возможно получать плотность кодирования меньше бита на символ. Это свойство проявляется, когда во входном массиве частоты некоторых символов значительно выше остальных.

 

 




- Начало -  - Назад -  - Вперед -