Изменения

Перейти к: навигация, поиск

Контекстное моделирование

70 байт добавлено, 19:32, 31 декабря 2018
Дописан пример декодирования для PPM
===Пример===
====Кодирование====
Имеется последовательность символов <tex>“абвавабввбббв”</tex> алфавита <tex> \{“а”а, “б”б, “в”в, “г”г\}</tex>, которая уже была ''закодирована''.
[[Файл: Qq.png|350px|thumb|right|рис. 2]]
[[Файл: PpmPart.png|350px|thumb|right|рис. 3]]
Перед обработкой следующего символа создается <tex>КМ</tex> для строки <tex>“ббв”</tex> и производится модификация счетчиков символа <tex>г</tex> в созданной и во всех просмотренных <tex>КМ</tex>. В данном случае требуется изменение <tex>КМ</tex> всех порядков от <tex>0</tex> до <tex>N</tex>.
====Декодирование====
Алгоритм декодирования ''абсолютно '' симметричен алгоритму кодирова­ниякодирования. После декодирования символа в текущей <tex>КМ </tex> проверяется, не является ли он ''символом ухода'';, если это так, то выполняется переход к <tex>КМ поряд­ком </tex> порядком ниже. Иначе считается, что исходный символ ''восстановлен'', он ''записывается '' в декодированный поток и осуществляется переход к следующему шагу. Содержание процедур обновления счетчиков, создания новых кон­текстных ''контекстных моделей'', прочих вспомогательных действий и последовательность их применения должны быть строго одинаковыми при кодировании и деко­дировании. Иначе возможна рассинхронизация копий модели кодера и де­кодера, что рано или поздно приведет к ошибочному декодированию како­го-то символа. Начиная с этой позиции вся оставшаяся часть сжатой после­довательности будет разжата неправильно. Разница между кодами символов, оценки вероятности которых одинако­вы, достигается за счет того, что <tex>РРМ</tex>-предсказатель передает кодировщику так называемые накопленные частоты (или накопленные вероятности) оце­ниваемого символа и его соседей или кодовые пространства символов. Так, например, для контекста "бв" из примера 2 <tex>“бв”</tex> можно составить табл. 4.3.Хороший кодировщик должен отобразить символ 'У с оценкой вероят­ности q(s) в код длины \og2q{s), что и обеспечит сжатие всей обрабатывае­мой последовательности в целом.следующую таблицу:
{| style="background-color:#CCC;margin:0.5px; right"
!style="background-color:#EEE"| <tex>Символ</tex>
!style="background-color:#EEE"| <tex>Оценка\ вероятности</tex>
!style="background-color:#EEE"| <tex>Накопительная\ оценка</tex>
!style="background-color:#EEE"| <tex>Кодовое \ пространство</tex>
|-
|style="background-color:#FFF;padding:2px 30px"| <tex>a</tex>
|style="background-color:#FFF;padding:2px 60px"| <tex> [0.66 ... 1) </tex>
|}
Хороший кодировщик должен отобразить символ <tex>s</tex> с оценкой вероят­ности <tex>q(s)</tex> в код длины <tex>\log_2 q(s)</tex>, что и обеспечит сжатие всей обрабатывае­мой последовательности в целом.
23
правки

Навигация