Вопрос начинающего по арифметическому кодированию


Сайт о сжатии >> Форум #Компрессор# >> [Ответить] [Ответы]

Автор: alex, <kolin-s@list.ru>
москва, Россия, 15 мая 2003 года в 02:32:31

Ситуация.
hi = 28671- 0110111111111111
low=24576 - 0110000000000000
hi и low близки друг к другу. Расширяем интервал.
Удаляем цифры во вторых по значимости разрядах (т.е. 1 во втором разряде hi и 1 во
втором разряде low).
Увеличиваем специальный счетчик на 1. Справа дописываем 1 в hi и
ноль в low. Так продолжаем до тех пор, пока во втором разряде не появятся одинаковые
цифры в low и hi. Эту цифру затем посылаем в код сообщения, а за ней
равное счетчику колл. 0 или 1, (инвертированные совпавшей).
Вопрос. Когда появятся одинаковые цифры после 3 растяжений (когда сдвинем и удалим
2, 3 и 4 разряд)?
Ведь останутся в hi только девятки, а в low нули.(Вверху на примере). Ясно, что здесь
достаточно и двух растяжений.
(удалим 2, 3 разряды со сдвигом влево), а затем нули в 4 разряде (при сдвиге они окажутся во
втором) совпадут и их можно послать в код сообщения и на этом растяжение закончить.
А если встретится ситуация когда необходимо большее колл. растяжений? Тогда после
третьего этапа удаления и сдвига останутся одни нули и единицы. Как же они совпадут?
Или есть другой критерий когда останавливать этот процесс кроме расчета на
совпадение?
Ведь как я понимаю пока интервал не растянут, нельзя переходить
к кодированию очередного символа? И вообще. Есть ли общепринятое
правило до какого минимально – необходимого размера нужно расширять интервал ?
Ясно, что перед каждым символом достаточно расширить интервал до длины большей,
чем интервал кодируемого символа. Но тогда получаеся, что в каждом случае расширяю
как хочу. А как тогда расширять при раскодировании? Ведь тогда следующий раскодируемый
символ неизвестен? Как тогда расширять на каждом этапе?
Я понимаю, что для таких титанов это детский сад. Кто хочет, может посмеяться.
Но для меня это важно. Спасибо всем, кто ответит.

Ответы:



Ответить на это сообщение

Тема:

Имя (желательно полное):

E-Mail:

URL:

Город:

Страна:

Вежливый и подробный комментарий:
(Форматируйте его, пожалуйста, как почту - короткими строками
Еnter в конце строки, пустая строка между параграфами).

Пожалуйста, заполните все поля.
И не нажимайте по два раза на кнопку! Дождитесь ответа сервера.