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

Сжатие данных, звука и изображений

.pdf
Скачиваний:
1692
Добавлен:
01.05.2014
Размер:
7.92 Mб
Скачать

Глава 3. Сэюатие изображений

чимое. Методы сжатия изображений с непрерывными тонами пло­ хо обращаются с четкими краями дискретно-тоновых образов, д^ля которых следует разрабатывать особые методы компрессии. От­ метим, что дискретно-тоновые изображения, обычно, несут в себе большую избыточность. Многие ее фрагменты повторяются много раз в разных местах изображения.

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

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

3.3. Подходы к сжатию изображений

Методы сжатия изображений обычно разрабатываются для кон­ кретного типа изображений. Здесь перечислены различные подходы к компрессии графических образов. При этом будут обсуждаться только общие принципы. Специфические методы описаны дальше в этой главе (см. также [Salomon 2000]).

Подход 1. Для сжатия двухуровневых изображений. Каждый пик­ сел такого образа представляется одним битом. Применение прин­ ципа сжатия образов к компрессии двухуровневых изображений означает, что непосредственные соседи пиксела Р стремятся совпа­ дать с Р. Поэтому имеет смысл использовать методы кодирования длин серий (RLE) для сжатия таких изображений. Метод сжатия сканирует образ строка за строкой и вычисляет длины последова­ тельных черных и белых пикселов. Длины кодируются кодами пе­ ременной длины и записываются в сжатый файл. Примером такого сжатия является факсимильная компрессии (см. § 1.6).

Еще раз подчеркнем, что это всего лишь общий принцип сжатия, конкретные методы могут сильно отличаться друг от друга. Напри­ мер, метод может сканировать образ по строкам, а может зигзаго­ образно (см. рис. 3.5.а) или сканировать изображение область за областью с помощью заполняющих их кривых (см. [Salomon 2000]).

3.3. Подходы к сэюатию изобраэюений 121

'РУ\'\Л^\Л' 1

 

УИЛЛЛ'Ы

 

МлллАА)

 

{\ЛЛЛУУу\

 

улАллЛл)

 

Yyvwyv

 

ЖХКККК\

 

И^кККкР

 

(а)

(Ь)

Рис. 3.5. (а) Сканирование зигзагом. (Ь) Распределение Лапласа.

Подход 2. Также метод для двухуровневых изображений. Опять используется принцип совпадения ближайших пикселов в расширен­ ной форме: если текущий пиксел имеет цвет с (где с - белый или чер­ ный), то пикселы того же цвета, наблюдавшиеся в прошлом (а также те, которые появятся в будущем) будут иметь таких же ближайших соседей.

Этот подход рассматривает п последовательных соседей теку­ щего пиксела и представляет их в виде п-битного числа. Это число называется контекстом пиксела. В принципе, может быть 2^ раз­ личных контекстов, но в силу избыточности образа мы ожидаем, что контексты распределены неравномерно. Некоторые контексты встречаются чаще, а некоторые - реже.

Кодер вычисляет сколько раз встречался каждый контекст для пиксела цвета с и присваивает контекстам соответствующие веро­ ятности. Если текущий пиксел имеет цвет с и его контекст имеет вероятность р, то кодер может использовать адаптивное арифмети­ ческое кодирование А^ЛЯ кодирования пиксела с этой вероятностью. Такой подход использован в методе JBIG [Salomon 2000].

Перейдем теперь к полутоновым изображениям. Пиксел тако­ го изображения представлен п битами и может иметь одно из 2^ значений. Применяя принцип сжатия изображений, заключаем, что соседи пиксела Р стремятся быть похожими на Р, но не обязатель­ но совпадают с ним. Поэтому метод RLE здесь не годится. Вместо этого рассмотрим две другие идеи.

Подход 3. Расслоить полутоновую картинку на п двухуровневых изображений и каждую сжать с помощью RLE и префиксных ко-

Глава 3. Сжатие изобраэюений

дов. Здесь кажется, что можно применить основной принцип сжа­ тия изображений, но по отношению к каждому отдельному слою по­ лутонового изображения. Однако, это не так, и следующий пример проясняет ситуацию. Представим себе полутоновое изображение с п — А (то есть, имеем дело с 4-битовыми пикселами, или с 16 гра­ дациями серого цвета). Его можно расслоить на 4 двухуровневых изображения. Если два смежных пиксела исходного образа имели величины 0000 и 0001, то они похожи по цвету. Однако два пиксела со значениями 0111 и 1000 также близки на полутоновом изображе­ нии (это, соответственно, числа 7 и 8), но они различаются во всех 4 слоях.

Эта проблема возникает, так как в двоичном представлении со­ седние числа могут отличаться во многих разрядах. Двоичные коды для О и 1 отличаются в одном разряде, коды для 1 и 2 различаются в двух разрядах, а коды р^ля 7 и 8 различаются уже во всех четырех битах. Решением этой проблемы может служить разработка специ­ альных последовательностей двоичных кодов, в которых последова­ тельные коды с номерами г и г + 1 различались бы ровно на один бит. Примером таких кодов служат рефлексные коды Грел^ описанные в § 3.3.1.

Подход 4. Использовать контекст пиксела Р, который состоит из значений нескольких ближайших соседей. Выбираем несколько со­ седних пикселов, вычисляем среднее значение А их величин и делаем предсказание, что пиксел Р будет равен А. Основной принцип сжа­ тия изображений позволяет считать, что в большинстве случаев мы будем правы, во многих случаях будем почти правы и лишь в не­ многих случаях будем совершенно неправы. Можно сказать, что в предсказанной величине пиксела Р содержится избыточная инфор­ мация про Р. Вычислим разность

А = Р-А

и присвоим некоторый (префиксный) код переменной длины величи­ не А так, чтобы малым величинам (которые ожидаются часто) со­ ответствовали короткие коды, а большим величинам (которые ожи­ даются редко) назначались длинные коды. Если значение Р лежит

в интервале от

О до m — 1, то значения А попадают в интервал

[—(т — 1), + ( т

— 1)], для чего потребуется 2{т — 1) -h 1 или 2 т — 1

кодов.

 

Экспериментирование с большими числами показывает, что зна­ чения А стремятся иметь распределение, близкое к распределению

3.3. Подходы к союатию изобраэюений

Лапласа (см. рис. 3.5Ь), которое часто возникает в статистике. То­ гда метод сжатия может использовать это распределение для при­ своения вероятностей величинам А и весьма эффективно применять арифметическое кодирование для А. Этот подход лежит в основе метода сжатия MLP (см. [Salomon 2000]).

Контекст пиксела может состоять из одного или двух его сосе­ дей. Однако лучшие результаты получаются, если использовать не­ сколько пикселов, причем каждому пикселу присваивается некото­ рый вес для вычисления взвешенного среднего: более дальним пик­ селам присваивается меньший вес. Другое важное рассмотрение ка­ сается декодирования. Для декодирования изображения необходи­ мо уметь вычислять контекст до самого пиксела. Это означает, что контекст должен состоять из уже декодированных пикселов. Если изображение сканируется строка за строкой (сверху вниз и слева направо), то контекст может состоять только из пикселов, которые расположены выше и левее данного пиксела.

Подход 5. Сделать преобразование пикселов и кодировать преобразо­ ванные значения. Понятие преобразования образа, а также наибо­ лее важные преобразования, используемые при компрессии изобра­ жений, будут разобраны в § 3.5. Глава 4 посвящена вейвлетным пре­ образованиям. Напомним, что компрессия достигается путем уда­ ления или сокращения избыточности. Избыточность изображения образуется за счет корреляции между пикселами, поэтому преобра­ зования, которые делают декорреляцию, одновременно удаляют из­ быточность. Квантуя преобразованные значения, можно получить эффективное сжатие с частичной потерей информации. Мы хотим преобразовывать величины в независимые, так как для независи­ мых величин легче построить простую модель для их кодирования.

Обратимся теперь к кодированию цветных изображений. Пик­ селы таких изображений состоят из трех компонентов, например, красного, зеленого и голубого. Большинство цветных образов явля­ ются непрерывно-тоновыми или дискретно-тоновыми.

Подход 6. Идея этого метода заключается в разделении изображе­ ния на три полутоновых и в их независимом сжатии на основании одного из подходов 2, 3 или 4.

Принцип сжатия непрерывно-тоновых изображений гласит, что цвет соседних пикселов мало изменяется, хотя и не обязательно по­ стоянен. Однако близость цветов еще не означает близость величин пикселов. Рассмотрим, например, цветной 12-битовый пиксел, в ко­ тором каждая компонента имеет 4 бита. Итак, 12 бит 1000|0100|0000 обозначают пиксел, цвет которого получается смешением 8 единиц

Глава 3. Сэюатие изобраэюений

красного (около 50%, так как всего их 16), четырех единиц зеле­ ного (около 25%) и совсем без голубого. Представим себе теперь два пиксела со значениями 0011|0101|0011 и 0010|0101|0011. Их цве­ та весьма близки, поскольку они отличаются только в одной крас­ ной компоненте, и там их различие состоит только в одном бите. Однако, если рассмотреть их как 12-битовые числа, то два числа 0011|0101|0011=851 и 0010|0101|0011=595 различаются весьма зна­ чительно.

Важная особенность этого подхода состоит в использовании пред­ ставления цвета в виде яркости и цветности вместо обычного RGB. Эти понятия обсуждаются в § 3.7,1 и в книге [Salomon 2000]. Пре­ имущество этого представления основано на том, что глаз чувстви­ телен к маленьким изменениям яркости, но не цветности. Это позво­ ляет допускать значительную потерю в компоненте цветности, но при этом совершать декодирование без значительного визуального ухудшения качества изображения.

Подход 7. Другие методы требуются для компрессии дискретнотоновых изображений. Напомним, что такие изображения состоят из больших одноцветных областей, причем каждая область может появляться в нескольких местах образа. Хорошим примером служит содержимое экрана компьютера. Такой образ состоит из текста и пиктограмм (иконок). Каждая буква, каждая пиктограмма занима­ ют некоторую область на экране, причем каждая из этих областей может находиться в разных местах экрана. Возможный способ сжа­ тия такого изображение заключается в его сканировании и обнару­ жении таких повторяющихся областей. Если область В совпадает с ранее выделенной областью Л, то можно сжать В^ записав в файл указатель на область А. Примером такого метода служит алгоритм блоковой декомпозиции (FABD, [Salomon 2000]).

Подход 8. Разделение изображения на части (перекрывающиеся или нет) и сжатие их одна за другой. Предположим, что следующая требующая сжатия часть имеет номер 15. Постараемся сравнить ее с уже обработанными частями 1-14. Предположим, что ее можно выразить, например, с помощью комбинации частей 5 (растяжение) и 11 (поворот), тогда достаточно сохранить только несколько чисел, которые описывают требуемую комбинацию, а саму часть 15 можно отбросить. Если часть 15 не удается выразить в виде комбинации прежних частей, то ее придется сохранить в «сыром виде».

Другой подход является основой /1^ля различных фрактальных методов сжатия изображений. Здесь применяется основной принцип сжатия изображений, но вместо пикселов выступают части изобра-

3.3. Подходы к сжатию изобраэюений

жения. Этот принцип говорит о том, что «интересные» изображения (то есть те, которые будут сжиматься на практике) обладают не­ которой степенью самоподобия. Часть изображения совпадает или близка всему изображению.

Методы сжатия изображений вовсе не ограничиваются перечис­ ленными базисными подходами. В книге [Salomon 2000] обсуждают­ ся методы, которые используют контекстные деревья, марковские цепи, веивлеты и многое другое. Дополнительно следует упомянуть метод прогрессивного сэюатил образов (см. § 3.6), который доба­ вляет еще одно измерение сжатию изображений.

Искусство - это техника передачи сообщений. Труднее всего передавать образы.

Клез Тур Олденбург

3.3Л. Коды Грея

Методы сжатия изображений, разработанные для конкретных ти­ пов графических образов, иногда могут успешно применяться для компрессии других типов. Например, любой метод сжатия двух­ уровневых изображений годится для полутоновых образов, если пред­ варительно расслоить полутоновой образ на несколько двухуровне­ вых и каждый слой сжимать независимо. Представим себе изобра­ жение с 16 градациями серого цвета. Каждый пиксел определяется 4 битами, поэтому изображения разделяется на 4 двухуровневых. Однако при таком подходе может нарушиться основной принцип сжатия изображений. Вообразим себе два прилегающих 4-битных пиксела со значениями 7 — OIII2 и 8 = IOOO2. Эти пикселы имеют близкие значения, но при их разделении на 4 слоя, они будут разли­ чаться во всех 4 слоях! Происходит это из-за того, что в двоичном представлении числа 7 и 8 различаются во всех четырех разрядах. Для того, чтобы успешно применить здесь метод сжатия двухуров­ невых изображений необходимо, чтобы в двоичном представлении два последовательных числа имели двоичные коды, различающиеся только на один бит. Такое представление чисел существует и оно называется рефлексными кодами Грел (RGC, reflected Gray code). Их легко построить, следуя предлагаемому рекурсивному правилу.

Начнем с двух однобитных кодов (О, 1). Построим два семей­ ства двухбитных кодов, повторив (О, 1), а потом добавив слева (или справа), сначала О, а потом 1 к исходным семействам. В результате получим (00, 01) и (10, 11). Теперь следует переставить (отразить)

Глава 3. Сжатие изображений

коды второго семейства в обратном порядке и приписать к перво­ му семейству. Тогда получатся 4 двухбитных кода RGC (00, 01, 11, 10), с помощью которых можно кодировать целые числа от О до 3, причем последовательные числа будут различаться ровно в одном двоичном разряде. Применяем эту процедуру еще раз и получаем два семейства кодов длины 3: (000, 001, 011, 010) и (110, 111, 101, 100). Объединяем их и получаем 3-битные коды RGC. Проделаем первые три шага f\RK образования 4-битных кодов Грея:

добавить О (0000,0001, ООП, 0010, ОНО, 0111,0101,0100), добавить 1 (1000,1001,1011,1010,1110,1111,1101,1100), отразить (1100,1101,1111,1110,1010,1011,1001,1000).

в табл. 3.6 показано, как меняются отдельные биты двоичных кодов, представляющих числа от О до 32. В этой таблице в нечетных столбцах приведены обычные двоичные коды целых чисел. Жир­ ным шрифтом выделены биты числа г, которые отличаются от со­ ответствующих битов числа г — 1. Видно, что бит самого младшего (нулевого) разрядя (бит 6о) меняется каждый раз, бит bi меняется каждый второй раз, а в общем случае, бит bk меняется у каждо­ го 2^-го целого числа. В четных столбцах таблицы помещены все последовательные коды Грея. Под таблицей приведена рекурсивная функция Matlab, вычисляющая коды Грея.

43210

Gray

43210

Gray

43210

Gray

43210

Gray

00000

00000

OlOOO

10010

10000

00011

11000

10001

00001

00100

01001

10110

10001

00111

11001

10101

00010

01100

01010

11110

10010

01111

11010

11101

00011

01000

01011

11010

10011

01011

11011

11001

OOIOO

11000

01100

01010

10100

11011

11100

01001

00101

11100

01101

OHIO

10101

mil

11101

01101

00110

10100

OHIO

00110

10110

10111

11110

00101

00111

10000

01111

00010

10111

10011

11111

00001

 

function

b=rgc(a,i)

 

 

 

 

 

[r,c]=size(a);

 

 

 

 

 

b= [zeros(r,l),a; ones(r,l),flipud(a)];

 

 

 

if

i > l , b=rgc(b,i-l);

end;

 

 

 

Табл. 3.6. Первые 32 двоичных и RGC кода.

Коды RGC МОЖНО построить для целого п, и не прибегая к рекур­ сивной процедуре. Достаточно применить функцию «ИСКЛЮЧА­ ЮЩЕЕ ИЛИ» к числу п и к его логическому сдвигу на один раз­ ряд вправо. На языке С это запишется следующими операторами:

3.3. Подходы к сэ/сатию изображений

п'"(п>>1). Табл. 3.7 (подобная табл. 3.6) была порождена именно этим выражением.

Можно сделать следующий вывод. Слой, соответствующий само­ му старшему двоичному разряду (в обычном представлении) изо­ бражения, подчиняется принципу сжатия в большей, чем слой са­ мого младшего разряда. Когда соседние пикселы имеют значения, которые различаются на единицу (равны р и р + 1), шансы на то, что их менее значимые или более значимые разряды отличаются, одинаковы. Значит, любой метод компрессии, который будет по от­ дельности сжимать слои должен или учитывать эту особенность разрядности слоев, или использовать коды Грея для представления величин пикселов.

43210

Gray

43210

Gray

43210

Gray

43210

Gray

00000

00000

01000

01100

10000

11000

11000

10100

00001

00001

01001

01101

10001

11001

11001

10101

00010

00011

01010

01111

10010

11011

11010

10111

00011

00010

01011

OHIO

10011

11010

11011

10110

OOIOO

00110

01100

01010

10100

11110

11100

10010

00101

00111

01101

01011

10101

mil

11101

10011

OOllO

00101

OHIO

01001

10110

11101

11110

10001

00111

00100

01111

01000

10111

11100

mil

10000

a'=linspace(0,31,32) ; b = b i t s h i f t ( a , - l ) ; b=bitxor(a,b); dec2bin(b)

Табл. 3.7. Первые 32 двоичных и RGC кода.

На рис. 3.10, 3.11 и 3.12 показаны восемь побитных слоев кар­ тинки «попугаи» в обычном двоичном представлении (слева) и в ви­ де кодов Грея (справа). Слои, построенные с помощью программы Matlab, приведены на рис. 3.8. Они занумерованы числами от 8 (са­ мый старший, самый значимый бит) до 1 (самый младший бит). Очевидно, что слой самого младшего бита не показывает никакую корреляцию между пикселами; они случайны или близки к случай­ ным для обоих представлений, двоичного и RGC. Однако, слои от 2 до 5 демонстрируют большую корреляцию пикселов для кодов Грея. Слои с 6 по 8 выглядят по-разному для двоичных кодов и для кодов Грея, но кажутся сильно коррелированными в обоих случаях.

На рис. 3.13 изображены две версии первых 32 кодов Грея в их графическом представлении. На рисунке (Ь) показаны коды из табл. 3.6, а на рисунке (с) приведены коды из табл. 3.9. Несмотря на то, что оба семейства образуют коды Грея, в них по разному чере­ дуются биты О и 1 в разных побитных слоях. На рисунке (Ь) самый значимый бит меняется 4 раза. Второй значимый бит меняется 8

Глава 3. Сэюатие изобраэюений

раз, а биты трех младших разрядов меняются, соответственно, 16, 2 и 1 раз. Если использовать это множество кодов Грея для рассло­ ения изображения, то средние слои, очевидно, обнаружат наимень­ шую корреляцию между соседними пикселами.

clear;

 

clear;

 

f ilename='parrot si 28'; diin=128;

filename='parrotsi28'; dim=128;

fid=fopen(filename,'r');

fid=fopen(filename,'r');

img=fread(fid,[dim,dim])';

img=fread(fid,[dim,dim])';

mask=l; */. между

1 и 8

mask=l */, между

1 и 8

 

 

a=bitshift(img,-l);

 

 

b=bitxor(img,a);

nimg=bitget(img,mask);

nimg=bitget(b,mask);

imagesc(nimg),

colormap(gray)

imagesc(nimg),

colormap(gray)

Двоичный код

Код Грея

Рис. 3.8. Разделение изображения на слои (Matlab).

43210

Gray

43210

Gray

43210

Gray

43210

Gray

00000

00000

01000

01100

10000

11000

11000

10100

00001

00001

01001

01101

10001

11001

11001

10101

00010

00011

OIOIO

01111

10010

11011

11010

10111

00011

00010

01011

OHIO

10011

11010

11011

10110

00100

00110

OllOO

01010

10100

11110

11100

10010

00101

00111

01101

01011

10101

m i l

11101

10011

00110

00101

OHIO

01001

lOllO

11101

11110

10001

00111

00100

01111

01000

10111

11100

11111

10000

a=linspace(0,31,32); b=bitshift(a,-l); b=bitxor(a,b); dec2bin(b)

Табл. 3.9. Первые 32 двоичных и RGC кода.

В противоположность этому, коды рисунка (с) будут демонстри­ ровать большую корреляцию в слоях старших разрядов, поскольку там смена между О и 1 происходит, соответственно, 1, 2 и 4 раза (по старшинству разрядов). А младшие разряды покажут слабую кор­ реляцию пикселов, которая стремится к нулю, как при случайном распределении пикселов. Для сравнения на рис. 3.13 (а) показаны обычные двоичные коды. Видно, что в этих кодах разряды меняют­ ся суш;ественно чаще.

Даже поверхностный взгляд на коды Грея рис. 3.13 (с) обнаружи­ вает в них некоторую регулярность. Более тп1;ательное исследование выявляет две важные особенности этих кодов, которые можно ис­ пользовать при их построении. Первая особенность заключается в периодической смене значений всех пяти разрядов. Легко написать

3.3. Подходы к сэюатию изобраэюений 129 .

к^^

\4Шш

tS^f^ iJuttS^

Двоичный код

Код грея

Рис. 3.10. (а) Слои 1 и 2 изображения «попугаи».