Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

(по цифровому вещанию) Dvorkovich_V_Cifrovye_videoinformacionnye_sistemy

.pdf
Скачиваний:
249
Добавлен:
15.03.2016
Размер:
23.26 Mб
Скачать
+ fi−2

Глава 4. Статистическая избыточность дискретизированных данных

f2 = 2; fi = fi−1 ). Поэтому можно построить код числа как последовательность битов, каждый из которых указывает на факт наличия в n определенного числа Фибоначчи.

Очевидно, если в разложении числа n присутствует fi, то в этом разложении не может быть числа fi+1. Поэтому логично для конца кода использовать дополнительную единицу. Тогда две идущие подряд единицы будут означать окончание кодирования текущего числа. Примеры кодов Фибоначчи приведены в табл. 4.4. В кодах Фибоначчи все биты, кроме двух последних, являются мантиссами.

Таблица 4.4. Коды Фибоначчи

n\fi

1

2

3

5

8

13

21

34

55

1

1

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

0

1

(1)

 

 

 

 

 

 

3

0

0

1

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

1

0

1

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

0

0

0

1

(1)

 

 

 

 

6

1

0

0

1

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

0

1

0

1

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

0

0

0

0

1

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

12

1

0

1

0

1

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

13

0

0

0

0

0

1

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

0

1

0

1

0

1

(1)

 

 

 

 

 

 

 

 

 

 

 

 

21

0

0

0

0

0

0

1

(1)

 

 

 

 

 

 

 

 

 

 

 

33

1

0

1

0

1

0

1

(1)

 

 

 

 

 

 

 

 

 

 

 

34

0

0

0

0

0

0

0

1

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

54

0

1

0

1

0

1

0

1

(1)

 

 

 

 

 

 

 

 

 

 

4.2.2. Алгоритм Шеннона–Фано

Первый известный метод эффективного кодирования символов известен как кодирование Шеннона–Фано [2.2, 2.12, 2.56]. Он основан на знании вероятности каждого символа, присутствующего в сообщении. Зная эти вероятности, строят таблицу кодов, обладающую следующими свойствами:

различные коды имеют различное количество битов;

коды символов, обладающих меньшей вероятностью, имеют больше битов, чем коды символов с большей вероятностью;

хотя коды имеют различную битовую длину, они могут быть декодированы единственным образом.

Алгоритм основан на рекурсивной процедуре формирования системы префиксных кодов при известном распределении вероятностей появления символов на выходе источника информации.

Все символы информационного алфавита сортируются, например, по убыванию вероятностей их появления. После этого упорядоченный ряд символов разбивается на две части таким образом, чтобы суммы вероятностей появления символов, отнесенных к каждой части, были бы примерно равны. Очевидно, что

4.2. Виды статистического кодирования

при этом количество символов в первой части будет меньше, чем во второй части, поскольку вероятности появления каждого из символов первой части больше (или только части символов) равны вероятностям появления каждого из символов во второй части. Символам первой части присваивается начальный код «0», а символам второй части — «1».

Затем каждая из двух выделенных частей, если она содержит более одного символа, вновь разбивается на две части аналогичным образом. Разделенным на две составляющие первой части присваиваются коды соответственно «00» и «01», а второй части — «10» и «11». Такие операции производятся до тех пор, пока в рядах останется лишь по одному символу. Можно убедиться в том, что длина кода символа bi с вероятностью появления P (bi), полученного с применением алгоритма Шеннона–Фано, отличается от оптимального значения − log2 P (bi) менее чем на 1 бит.

Этот алгоритм незначительно уступает по эффективности оптимальному алгоритму Хаффмана префиксного кодирования.

4.2.3. Алгоритм Хаффмана

Алгоритм Хаффмана [2.4, 2.13, 2.56], основанный на элегантной и простой процедуре построения дерева вероятностей, является самым распространенным алгоритмом генерации кода переменной длины.

При реализации этого алгоритма средняя длина кодовых слов ˆ находится

L

в диапазоне:

ˆ

ˆ

H(B) L H(B) + 1

бит/отсчет и L 1 бит/отсчет,

т. е. средняя длина слов не более чем на 1 бит/отсчет больше энтропии, но не менее 1 бит/отсчет (в предельном случае, когда энтропия равна нулю).

Принцип построения дерева вероятностей можно достаточно просто пояснить на конкретном примере.

Пусть для передачи изображения используется 8 уровней квантования, распределение которых определяется гистограммой со следующими данными:

P (b0) = P (b5) = P (b6) = P (b7) = 0,06; P (b1) = 0,23;

P (b2) = 0,30; P (b3) = 0,15; P (b4) = 0,08.

Дерево строится справа налево следующим образом (рис. 4.2, верхняя диаграмма):

в секции I уровни пикселов сортируются по вероятности от наибольшей к наименьшей сверху вниз; при равенстве P (bi) = P (bj ) выше ставится уровень bi < bj ;

в секции II две самые нижние ветви объединяются в узел, их вероятности складываются, и узел образует новую ветвь; общее количество ветвей уменьшается на одну и они вновь сортируются по вероятности от наибольшей к наименьшей;

в секциях III и IV и т. д. производятся операции, аналогичные проводимым в секции II, до тех пор пока не останется одна ветвь с вероятностью, равной 1.

Все это дерево можно перестроить (рис. 4.2, нижняя диаграмма), убрав пересечения.

Глава 4. Статистическая избыточность дискретизированных данных

Рис. 4.2. Принцип построения алгоритма хаффмановского кодирования

Кодирование осуществляется движением слева направо по дереву к каждому кодируемому уровню bi. При этом на каждом узле коду приписывается, например, двоичный «0», если осуществляется шаг вверх и «1», если осуществляется шаг вниз.

Таким образом, для данного случая наиболее вероятные значения b1 и b2 кодируются двухбитовым кодом, величины b3 и b4 — трехбитовым кодом, а наименее вероятные значения b0, b5, b6 и b7 — четырехбитовым кодом (на рис. 4.2, нижняя диаграмма, коды указаны справа).

Нетрудно понять, что эти коды легко различимы:

если второй бит кода является двоичным нулем, то код — двухбитовый,

впротивном случае количество битов в коде более двух;

если третий бит кода является двоичным нулем, то код — трехбитовый,

впротивном случае количество битов в коде равно четырем.

Приемник декодирует информацию, используя то же самое дерево, двигаясь вверх при получении «0» и вниз при получении «1». Средняя битовая скорость

в данном случае ˆ бит/пиксел при энтропии бит/пиксел (т. е. ˆ

L = 2,71 H = 2,68 L

практически совпадает с H).

Используются неадаптивный и адаптивный варианты хаффмановского кодирования. В первом случае перед передачей сообщения передается таблица вероятностей, если она заранее неизвестна на приемной стороне. При адаптивном варианте кодирования таблица вероятностей вычисляется как на передающей, так и на приемной стороне по мере поступления данных. При этом до начала кодирования исходно предполагается, например, равновероятное распределение уровней пикселов. Рассмотренный выше пример показывает высокую эффективность хаффмановской процедуры при относительно равномерном распределении уровней пикселов.

4.2. Виды статистического кодирования

Однако когда энтропия сообщения становится существенно меньше единицы, эффективность хаффмановского кодирования резко снижается, поскольку дей-

ствует упомянутое выше ограничение снизу ˆ бит/отсчет.

L 1

По этой причине при использовании, например, восьмибитовой исходной информации об изображении, хаффмановское кодирование не позволит сжать информацию более восьми раз. В связи с этим применяются различные модификации неравномерного кодирования, позволяющие обеспечить более эффективное сокращение объема передаваемой информации.

Модификация алгоритма Хаффмана с фиксированной таблицей (CCITT, Group 3) [2.63] используется при сжатии черно-белых изображений (один бит на пиксел). Данный алгоритм был предложен третьей группой по стандартизации Международного консультационного комитета по телеграфии и телефонии (Consultative Committee International Telegraph and Telephone). Последовательности подряд идущих черных и белых точек в нем заменяются числом, равным их количеству. А этот ряд, в свою очередь, сжимается, по Хаффману, с фиксированной таблицей.

Ниже приведены два вида кодов соответственно:

коды серий — от 0 до 63 с шагом 1 (табл. 4.5);

дополнительные коды — от 64 до 2560 с шагом 64 (табл. 4.6).

Таблица 4.5. Таблица кодов серий длиной от 0 до 63 (CCITT, Group 3)

Длина

Код белой

Код черной

 

Длина

Код белой

Код черной

серии

серии

серии

 

серии

серии

серии

 

 

 

 

 

 

 

0

00110101

0000110111

 

32

00011011

000001101010

 

 

 

 

 

 

 

1

00111

010

 

33

00010010

000001101011

 

 

 

 

 

 

 

2

0111

11

 

34

00010011

000011010010

3

1000

10

 

35

00010100

000011010011

 

 

 

 

 

 

 

4

1011

011

 

36

00010101

000011010100

 

 

 

 

 

 

 

5

1100

0011

 

37

00010110

000011010101

6

1110

0010

 

38

00010111

000011010110

 

 

 

 

 

 

 

7

1111

00011

 

39

00101000

000011010111

 

 

 

 

 

 

 

8

10011

000101

 

40

00101001

000001101100

9

10100

000100

 

41

00101010

000001101101

 

 

 

 

 

 

 

10

00111

0000100

 

42

00101011

000011011010

 

 

 

 

 

 

 

11

01000

0000101

 

43

00101100

000011011011

12

001000

0000111

 

44

00101101

000001010100

 

 

 

 

 

 

 

13

000011

00000100

 

45

00000100

000001010101

 

 

 

 

 

 

 

14

110100

00000111

 

46

00000101

000001010110

15

110101

000011000

 

47

00001010

000001010111

 

 

 

 

 

 

 

16

101010

0000010111

 

48

00001011

000001100100

 

 

 

 

 

 

 

17

101011

0000011000

 

49

01010010

000001100101

18

0100111

0000001000

 

50

01010011

000001010010

 

 

 

 

 

 

 

19

0001100

00001100111

 

51

01010100

000001010011

 

 

 

 

 

 

 

20

0001000

00001101000

 

52

01010101

000000100100

21

0010111

00001101100

 

53

00100100

000000110111

 

 

 

 

 

 

 

22

0000011

00000110111

 

54

00100101

000000111000

 

 

 

 

 

 

 

Глава 4. Статистическая избыточность дискретизированных данных

Таблица 4.5 (окончание)

 

Длина

Код белой

 

Код черной

 

 

Длина

Код белой

 

Код черной

 

 

серии

серии

 

серии

 

 

серии

серии

 

серии

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

23

 

0000100

 

 

00000101000

 

 

 

55

 

01011000

000000100111

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

24

 

0101000

 

 

00000010111

 

 

 

56

 

01011001

000000101000

 

 

25

 

0101011

 

 

00000011000

 

 

 

57

 

01011010

000001011000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

26

 

0010011

 

 

000011001010

 

 

 

58

 

01011011

000001011001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

27

 

0100100

 

 

000011001011

 

 

 

59

 

01001010

000000101011

 

 

28

 

0011000

 

 

000011001100

 

 

 

60

 

01001011

000000101100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

29

 

00000010

 

 

000011001101

 

 

 

61

 

00110010

000001011010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

00000011

 

 

000001101000

 

 

 

62

 

00110011

000001100110

 

 

31

 

00011010

 

 

000001101001

 

 

 

63

 

00110100

000001100111

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 4.6. Таблица кодов серий длиной от 0 до 63 (CCITT, Group 3)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Длина

 

Код белой

 

 

Код черной

 

 

 

Длина

 

Код белой

 

Код черной

 

серии

 

серии

 

 

серии

 

 

 

серии

 

серии

 

серии

 

 

 

 

 

 

 

 

 

 

 

 

 

 

64

 

11011

 

0000001111

 

 

1344

 

011011010

 

0000001010011

 

 

 

 

 

 

 

 

 

 

 

 

 

 

128

 

10010

 

000011001000

 

 

1408

 

011011011

 

0000001010100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

192

 

01011

 

000011001001

 

 

1472

 

010011000

 

0000001010101

 

256

 

0110111

 

000001011011

 

 

1536

 

010011001

 

0000001011010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

320

 

00110110

 

000000110011

 

 

1600

 

010011010

 

0000001011011

 

384

 

00110111

 

000000110100

 

 

1664

 

011000

 

0000001100100

 

448

 

01100100

 

000000110101

 

 

1728

 

010011011

 

0000001100101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

512

 

01100101

 

0000001101100

 

 

1792

 

00000001000

 

совп. с белой

 

576

 

01101000

 

0000001101101

 

 

1856

 

00000001100

 

— // —

 

640

 

01100111

 

0000001001010

 

 

1920

 

00000001101

 

— // —

 

 

 

 

 

 

 

 

 

 

 

 

 

 

704

 

011001100

 

0000001001011

 

 

1984

 

000000010010

 

— // —

 

768

 

011001101

 

0000001001100

 

 

2048

 

000000010011

 

— // —

 

 

 

 

 

 

 

 

 

 

 

 

 

 

832

 

011010010

 

0000001001101

 

 

2112

 

000000010100

 

— // —

 

 

 

 

 

 

 

 

 

 

 

 

 

 

896

 

011010011

 

0000001110010

 

 

2176

 

000000010101

 

— // —

 

960

 

011010100

 

0000001110011

 

 

2240

 

000000010110

 

— // —

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1024

 

011010101

 

0000001110100

 

 

2304

 

000000010111

 

— // —

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1088

 

011010110

 

0000001110101

 

 

2368

 

000000011100

 

— // —

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1152

 

011010111

 

0000001110110

 

 

2432

 

000000011101

 

— // —

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1216

 

011011000

 

0000001110111

 

 

2496

 

000000011110

 

— // —

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1280

 

011011001

 

0000001010010

 

 

2560

 

000000011111

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Каждая строка изображения сжимается независимо. Считается, что в изображениях существенно преобладает белый цвет, и все строки изображения начинаются с белой точки. Если строка начинается с черной точки, то считается, что строка начинается белой серией с длиной 0. На практике в тех случаях, когда в изображении преобладает черный цвет, изображение инвертируется перед компрессией и записывается эта информация в заголовке файла.

Близким к Хаффмановскому является алгоритм JBIG, разработанный группой экспертов ISO (Joint Bi-level Experts Group) специально для сжатия однобитных черно-белых изображений, например, факсов или отсканированных

4.2. Виды статистического кодирования

документов [2.64]. В принципе он может применяться и к 2-, и к 4-битовым картинкам. При этом алгоритм разбивает их на отдельные битовые плоскости. JBIG позволяет управлять такими параметрами, как порядок разбиения изображения на битовые плоскости, ширина полос в изображении, уровни масштабирования. Последняя возможность позволяет легко ориентироваться в базе больших по размерам изображений, просматривая сначала их уменьшенные копии. Распаковываться изображение на экране будет постепенно, как бы медленно «проявляясь».

Как и алгоритм Хаффмана, JBIG использует для чаще появляющихся символов короткие цепочки, а для реже появляющихся — длинные.

4.2.4. Блочное и условное кодирование

Дальнейшее снижение битового потока возможно, если использовать блочное кодирование [2.4], т. е. если кодировать и передавать информацию блоками из N отсчетов, которые можно представить как компоненты вектора:

b = (b1, b2, . . . , bN ).

При квантовании этих компонент K уровнями имеем 2N K возможных значений случайного вектора B, чьи возможные значения b имеют распределение вероят-

ностей {P (b)}. Энтропия N -го порядка (блочная энтропия) определяется как

H(B) = − P (b) · log2 P (b),

(4.3)

b

где сумма берется по всем 2N K возможным значениям.

Очевидно, что энтропия вектора H(B) связана с энтропией каждой его компоненты H(B) соотношением

N1 H(B) H(B),

причем равенство достигается лишь в том случае, когда все компоненты вектора (пикселы) статистически независимы.

 

хаффмановские коды для

{

b в соответствии с распределением ве-

Построим

 

 

 

(всего 2

N K

 

 

}

 

 

 

 

 

 

 

роятностей {P (b)}

 

кодовых слов). При этом если среднюю длину

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ˆ

 

 

 

кодового слова, определяющего вектор B, обозначить LN , то средняя длина ко-

 

 

 

 

 

 

 

 

 

 

 

 

ˆ

 

1

ˆ

 

 

 

дового слова, определяющего его компоненту, L =

N

LN , может быть ограничена

следующим соотношением:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

1

ˆ

ˆ

1

 

 

1

 

 

1

 

(4.4)

 

 

N

H(B)

N

LN

= L

N

H(B) +

N

H(B) +

N

.

Таким образом, при достаточно больших N возможно (хотя и не всегда практично из-за большого объема вычислений) кодировать поблочно и получать битовый поток, максимально отличающийся от энтропии первого порядка H(B) на малую величину N1 .

Существенным недостатком блочного кодирования является необходимость создания таблицы кодирования (или дерева), содержащей 2N K кодовых слов. При этом часто получаются весьма длинные коды.

Эта проблема частично преодолевается при так называемом условном кодировании [2.4], когда кодируется компонента bN при условии, что компоненты b1, b2, . . . , bN −1 уже переданы и известны приемнику. В этом случае коды Хаффмана для bN можно построить на основе условной вероятности {P (bN | b1, b2, . . . , bN −1)}.

Глава 4. Статистическая избыточность дискретизированных данных

Очевидно, что такой код будет иметь 2N слов, и средняя длина слов в битах

будет не более чем на 1 бит отличаться от условной энтропии:

H(BN |b1, . . . , bN −1 ) = − P (bN |b1,. . . ,bN −1 ) · log2 P (bN |b1,. . . ,bN −1 ). (4.5)

bN

Если такой код построен для всех возможных (N − 1)-мерных значений, то получается 2(N −1)K кодов, каждый из которых имеет 2K кодовых слов.

Результирующая условная энтропия может быть получена усреднением по всем (N − 1)-мерным векторам:

H(BN |B1, . . . , BN −1 ) = −

P (bN |b1, . . . , bN −1 ) · H(BN |b1, . . . ,bN −1 ) =

 

b1...bN −1

b

 

 

= −

P (b) · log2 P (bN |b1, . . . ,bN −1 ). (4.6)

ˆ

 

 

При этом средняя длина потока битов Lc оценивается с точностью 1 бит/отсчет:

ˆ

, . . . , BN −1 ) + 1

ˆ

H(BN |B1, . . . , BN −1 ) Lc H(BN |B1

бит, но Lc 1. (4.7)

Эффективность условного кодирования связана с тем, что при значительной зависимости между отсчетами условная энтропия всегда меньше отнесенной на отсчет блоковой энтропии, т. е.

1

 

H(BN |B1, . . . , BN −1 ) N H(B).

(4.8)

Однако в связи с тем, что ˆc оценена снизу битом на отсчет, условное кодирование

L

неэффективно при значениях условной энтропии, меньшей единицы.

Поэтому более эффективным является так называемое условное блочное кодирование, сочетающее преимущества двух модификаций кодирования.

К методам блочного кодирования можно отнести алгоритм группового кодирования RLE (Run Length Encoding) [2.6, 2.9], который позволяет сжимать данные любых типов независимо от содержащейся в них информации. Сама информация влияет лишь на коэффициент сжатия. Он является самым быстрым и простым алгоритмом компрессии и при этом иногда оказывается весьма эффективным.

В основу алгоритма RLE положен принцип выявления повторяющихся последовательностей данных и замены их простой структурой, в которой указывается код данных и коэффициент повтора. Он оперирует группами данных — последовательностями, в которых один и тот же символ встречается несколько раз подряд. Суть его заключается в том, что при кодировании строка повторяющихся символов, составляющих группу, заменяется строкой, которая содержит сам повторяющийся символ (значение группы) и количество его повторов (счетчик группы).

Программные реализации алгоритма RLE отличаются простотой, высокой скоростью работы, но в среднем обеспечивают недостаточное сжатие. Наилучшими объектами для данного алгоритма являются графические файлы, в которых большие одноцветные участки изображения кодируются длинными последовательностями одинаковых байтов. Этот метод также может давать заметный выигрыш на некоторых типах файлов баз данных, имеющих таблицы с фик-

4.2. Виды статистического кодирования

сированной длиной полей. Для текстовых данных методы RLE, как правило, неэффективны.

Из специфики работы алгоритма можно легко понять, для каких изображений коэффициент сжатия будет максимальным. Это изображения, содержащие минимальное количество цветов, без плавных переходов (с резкими границами) и с большими участками, заполненными одним цветом. Так как сканирование данных осуществляется построчно слева на право, высокий коэффициент сжатия будет достигаться на изображениях, строки которых содержат достаточно длинные цепочки одинаковых пикселов.

4.2.5. Арифметическое кодирование

Арифметическое кодирование во многих отношениях превосходит префиксные методы и теоретически обеспечивает среднюю битовую скорость передачи данных равной энтропии.

Арифметическое кодирование позволяет представить информацию более компактно, не требует ее разбиения на блоки для оптимизации сжатия, легко и эффективно использует адаптивную модель кодирования.

Основная концепция арифметического кодирования принадлежит П. Элайесу [2.56, 2.57] и относится к началу 60-х годов прошлого века. Дальнейшие исследования были направлены на практическую реализацию алгоритма [2.14–2.24].

Несмотря на объективную сложность нестандартного подхода, идея, лежащая в основе арифметического кодирования, весьма проста. Принцип этого метода можно пояснить следующим образом.

До начала кодирования сообщению ставится в соответствие интервал (0, 1]. Каждому символу из множества N символов, присутствующих в сообщении, на интервале (0, 1] отводится интервал, ширина которого равна вероятности появления символа. Если распределение уровней квантования пикселов изображения соответствует гистограмме, аналогичной той, что приведена в качестве примера при изучении хаффмановского кодирования, то указанный интервал (0, 1] разбивается так, как показано на рис. 4.3 слева.

При неадаптивной модели кодирования разбиение интервала (0, 1] на диапазоны, соответствующие различным символам, происходит до начала кодирования, и информация передается декодеру. При адаптивном кодировании после кодирования каждого символа уточняется таблица вероятности символов и корректируются соответствующие им интервалы как на передающей, так и на приемной стороне.

Пусть по мере сканирования изображения первым из N символом, поступающим на кодер, является символ b1. Тогда на первом этапе кодирования интервал (0, 1] преобразуется в новый интервал, границами которого являются границы интервала P (b1) на шкале (0, 1].

Диапазон новой шкалы равен r1P (b1), его минимальное значение равно l1P (b0), а максимальное h1P (b0) + P (b1).

Эта шкала также разбивается на части, пропорциональные вероятностям сообщений P (bi). Значения шкалы в n-й точке

n−1

 

i

 

g1(n) = l1 + r1 · P (bi),

(4.9)

=0

 

Глава 4. Статистическая избыточность дискретизированных данных

Рис. 4.3. Принцип обработки информации при арифметическом кодировании

причем g1(0) = l1, а g1(N )h1. Если на втором этапе на кодер поступает символ b2, то шкала вновь преобразуется, как показано на рис. 4.3. Диапазон новой шкалы равен r2r1 · P (b2), его минимальное значение равно

1

 

 

i

 

 

l2 = l1 + r1 ·

P (bi),

(4.10)

=0

 

 

а максимальное значение —

 

 

2

 

 

i

 

 

h2 = l1 + r1 ·

P (bi).

(4.11)

=0

 

 

Значение шкалы в n-й точке

 

 

n−1

 

i

 

g2(n) = l2 + r2 ·

P (bi).

(4.12)

=0

 

Таким образом, последовательно шкала по мере поступления данных уменьшается. Поступающие символы сообщения уменьшают размер интервала в соответствии с моделью вероятности символов. Более часто встречающиеся символы меньше суживают интервал, чем редкие символы, и, следовательно, добавляют меньше битов в код интервала.

На k-м этапе при поступлении на кодер n-го символа шкала итеративно изменяется таким образом, что ее диапазон равен rk rk−1 · P (bn). Его минимальное

4.2. Виды статистического кодирования

 

 

 

= lk−1 + rk−1 ·

n−1

 

значение равно lk

=0 P (bi), максимальное значение — hk =

По

 

n

 

i!

p−1

 

!

 

 

!

= lk−1

+ rk−1 ·

i=0 P (bi), а значение шкалы p-й точки — gk(p) = lk + rk ·

i=0 P (bi).

окончании цикла кодирования формируется такое число g, что выполняется неравенство lk < g hk. Это число g характеризует передаваемую последовательность символов, которая может быть однозначно восстановлена в приемнике.

Как показано на рис. 4.3, по окончании 5-го этапа число g должно быть

0,14762908 < g 0,14772844.

Если на приемной стороне сформирована исходная шкала вероятностей на интервале (0, 1], то это число g попадает на интервал, характеризующий символ b1, поступивший в кодер на первом этапе.

Зная, что на первом этапе на кодер поступил символ b1, можно рассчитать новую шкалу, соответствующую шкале кодера на 1-м этапе. В этой шкале число g попадает на интервал, характеризующий символ b2, поступивший в кодер на втором этапе. Таким образом, последовательно могут быть определены все символы, поступающие на кодер (в данном случае — последовательность b1, b2, b3, b0, b4).

Трудности в реализации приведенного алгоритма арифметического кодирования связаны с хранением чисел с большим количеством знаков после запятой

иоперациями над такими числами. Поэтому результатом дальнейших исследований стало использование более эффективных реализаций арифметического кодирования и специальных приемов повышения производительности вычислений, что позволило избежать сложных операций с плавающей точкой и существенно

упростить хранение данных. Алгоритм работает быстрее, если удается опери-

ровать двоичными дробями, задаваемыми последовательностью a1/21 + a2/22 + + a3/23 + a4/24 + · · · + ak/2k. При этом на каждом этапе вычислений необходимо дописывать дополнительные последовательности дробей, пока получившееся число не попадет в интервал, соответствующий закодированной цепочке. Чтобы избежать ограничений, связанных с используемой разрядностью переменных, реальный алгоритм работает с целыми числами и оперирует с дробями, числитель

изнаменатель которых являются целыми числами (например, знаменатель равен 216 = 65 536). При этом с потерей точности можно бороться, отслеживая сближе-

ние величин lk и hk и умножая числитель и знаменатель дроби на целое число, обычно на 2n.

4.2.6.Словарные методы кодирования дискретной информации

Словарные методы энтропийного кодирования вместо вероятностного используют так называемый комбинаторный подход, кодовые схемы которого используют коды только тех информационных последовательностей, которые реально порождаются информационным источником. Словарные модели опираются на информационную структуру, реализуемую словарем. Словарь включает в себя части уже обработанной информации, на основе которых осуществляется кодирование. Составляющие последовательности символов информационного источника кодируются посредством ссылок на идентичные им элементы словаря (совпадения).