FRACTALS

ѕ даРЪвРЫРе
іРЫХаХп ШЧЮСаРЦХЭШЩ даРЪвРЫЮТ
їаЮУаРЬЬл ФЫп ЯЮбваЮХЭШп даРЪвРЫЮТ
БблЫЪШ ЭР ФагУШХ бРЩвл Ю даРЪвРЫРе
ЅРЯШиШ бТЮШ ТЯХзРвЫХЭШп



 
 

LOGO
Предыдущая Следующая

NEG (negative): соответствующий вейвлет-коэффициент после прохождения порога является значимым и отрицательным;

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

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

ZT (zerotree): незначимый потомок коэффициента, являющегося корнем нуль-дерева.

В выходной файл записываются только четыре символа: POS, NEG, IZ и ZR. При декодировании символы ZT раскрываются, чтобы заполнить свои нулевые поддеревья, поэтому записывать их в файл нет необходимости. Таким образом, мы можем использовать по два бита на каждый из четырех символов (разумеется, в завершенной системе использовалось бы энтропийное кодирование в целях достижения более низкого битрейта). Использование двумерного массива символов отличается от подхода, выбранного Шапиро [41] и Сейдом и Пилма-ном [36], которые использовали дополнительный список, чтобы отслеживать значимые коэффициенты. Так как мы не производим энтропийное кодирование, то мы можем выписывать символы после каждого прохождения порога, и, таким образом, нам нужно хранить в памяти всего один символьный массив, а не по массиву для каждого порогового значения.

7.2.1.2. Работа с незначимыми коэффициентами

Значимые коэффициенты обрабатываются легко: если абсолютное значение коэффициента превышает порог, мы просто записываем символ POS или NEG в зависимости от знака коэффициента. Незначимые коэффициенты представляют собой более сложную проблему. Прежде чем выберем один из символов IZ, ZR или ZT для незначимого коэффициента, мы должны знать все обо всех его потомках, а также его родителях. Это значит, что нам нужна информация о коэффициентах, расположенных как выше, так и ниже текущего коэффициента в дереве.

192 Фракталы и вейвлеты для сжатия изображений в лейстВц^|

Мы получаем эту информацию, делая два прохода по коэгК фициентам: снизу вверх, чтобы обнаружить родителей зн^ чимых потомков, и сверху вниз, чтобы обнаружить коп нуль-дерева. Внутри поддиапазона (ЬН, НН или НЬ) снача^ осуществляется проход снизу вверх. На Рис. 7.2.5 предс^ лена блок-схема этого процесса. Начиная с нижнего блока поддиапазоне, мы выявляем значимые коэффициенты и при сваиваем соответствующим элементам в символьном массиве символы РОБ или ИЕС Одновременно мы получаем инф0р мацию о родителях этих коэффициентов: ни один из родите, лей этих значимых коэффициентов не может быть корнер нуль-дерева (Ж) или потомком корня нуль-дерева все они могут быть закодированы символами РОБ, N£0 или 12 В этой точке помечаем всех предков этих значимых коэффц. циентов как К. Таким образом, мы сопоставляем символ 12 всем элементам в символьном массиве, соответствующим предкам этих коэффициентов. Затем, по мере того как мы будем подниматься по дереву, эти элементы могут сами оказаться соответствующими значимым коэффициентам, и тогда символы К мы заменим символами РОБ или ИЕС В листинге 7.2.1 прилагаемой программы, написанной на С++, представлена функция-член тагк_^рагепЪз класса ЪгегоЪгее


Предыдущая Следующая
Реклама:
лазерные нивелиры Leica Интернет-магазин


Галерея фракталов

 

Hosted by uCoz