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

1 / Salmon_sjatie_dannyh_izobrajeniy_i_zvuka[torrents.ru]

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

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

Ядра WHT изображены в графической форме на рис. 3.42 при iV = 4, где белый цвет означает +1, а черный —1 (для наглядности множитель 1/7V опущен). Строки и столбцы в блоках занумерованы значениями w и ^ от О до 3, соответственно. Число смен знаков в строке или в столбце матрицы называется частотностью строки или столбца. Строки и столбцы на этом рисунке упорядочены по возрастанию частотности. Некоторые авторы предпочитают изо­ бражать ядра неупорядоченно, так, как это было определено Уолшем и Адамаром ( см. [Gonzalez 92]).

Сжатие изображений с помощью WHT делается так же, как и для DCT с заменой уравнений (3.9) и (3.10) на (3.11) и (3.12)

Пример: На рис. 3.43 изображены 64 базисных изображения WHT и программа для их вычисления и построения на графике. Рассмотрен случай N = S. Каждое базисное изображение - это таб­ лица пикселов размера 8 x 8 .

3.5.7. Преобразование Хаара

Преобразование Хаара [Stollnitz 92] используется на практике для отоб­ ражения поддиапазона частот. Оно будет обсуждаться в главе 4. Однако, в силу простоты этого отображения, его также можно объ­ яснить в терминах базисных изображений. Поэтому мы включили его рассмотрение и в этот параграф. Преобразование Хаара осно­

вывается на функциях Хаара hk{x),

которые задаются при х G [0,1]

и для

А; =

0 , 1 , . . . , iV -

1, где iV = 2^*.

 

 

 

 

 

 

Прежде, чем задать это преобразование, напомним, что любое

целое число к можно представить

в виде суммы

к

= 2^ -\- q — I,

где

0<р<п

— 1, q = 0 или 1 при р

=

0, и 1 < ^ < 2 ^

при

р ^

0. Для АГ = 4 = 2^, например, имеем следующие представления:

0 = 2^ + 0 - 1 , l = 2 0 - h l - l , 2 = 2 1 - Ь 1 - 1 и З = 2 1 - ь 2 - 1 .

 

 

Базисные функции Хаара задаются формулами

 

 

 

 

 

ho{x) =

hoo(x) = —j= при О < а; <

1,

 

(3.14)

 

 

def

,. ,„ч _J_

2P/2

filJ.

< ^ < g-V2

 

hk(x)

^ 1

2P

2P

'

(3.15)

=

hpq(x) = —j=

\ _2P/2,

2 : ^

< ^ <

X,

 

 

 

 

0

для остальных x G [0,1].

 

Теперь можно построить N x iV-матрицу Ayv преобразования Хаара. Элемент с индексами z,j этой матрицы равен /ii(i), где i =

5.5. Преобразование изображений 171

0 , 1 , . . . , TV - 1 и J = О/Я, 1/7V,

...,{N-1)/N.

Например,

 

_ / / г о ( 0 / 2 ) /го(0/2)

\ _ W 1

П

. . ^.^

Needs[»GraphicsImage'»]

 

 

 

n=8;

 

 

(* h-O(x) *)

h[k_,xJ:=Module[{p,q}, lf[k==0, l/Sqrt[n],

p=0; While[2'p<=k

,p++] ; p ~ ; q=k-2~p+l;

(* if

k>0,calc.p,q *)

If[(q-l)/(2~p)<=x

&& x<(q-.5)/(2^p),2-(p/2),

 

If[(q - . 5)/(2>)<=x

&& x<q/(2"p),-2'*(p/2),0]]]];

HaarMatrix=Table[h[k,x],

{k,0,7}, {x,0,7/n,l/n}]

//N;

HaarTensor=Array[Outer[Times, HaarMatrix[[#!]],HaarMatrix[[#2]]]&,

{n,n}];

Show[GraphicsArray[Map[GraphicsImage[#, {-2,2}]&, HaarTensor,{2}]]] Рис. 3.44. Базисные изображения преобразования Хаара при N = S.

(напомним, чтор = О и g = 1 при г = 1). На рис. 3.44 дана программа для вычисления этой матрицы для любого iV, а также построены

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

базисные изображения при iV = 8 : Выпишем матрицы А4 и Ag.

 

 

fhoil)

ho{\)

/.о (I)

ho{l)\

 

 

1

1

1

1 \

А4

=

hi (f)

h,

{\)

 

 

/^i ( ! )

7i

1

1

- 1

- 1

h2 (I)

h,

(i)

^2(1)

^ 2 ( ! )

уД

-л/2

О

О

 

 

 

 

\ ^3 (!)

h, (1)

/^3(1)

^3 (!) J

 

 

о

о

v/2

-V2j

 

 

 

 

 

 

 

 

 

 

/

1

1

1

1

1

1

1

 

1

\

 

 

 

1 1 1

1 - 1 - 1 - 1 - 1

 

 

 

1

v/2

уД

-уД

-V2

0

0

 

0

0

 

 

 

0

 

0

0

О

уД

у/2

-уД

-уД

 

 

 

 

2

-

2

0

0

0

0

0

 

О

 

 

 

 

0

0

2 -

2

0

0

0

 

О

 

 

 

 

0

0

0

0 2

-

2

 

0

О

 

 

 

V O O O

0

 

0 0 2 - 2 /

Для блока пикселов Р размера N х N^ где N = 2^^ его преобра­ зование Хаара вычисляется по формуле АдгРА/у/^ (см. § 4.2.1).

3.5,8. Преобразование

Кархунена-Лоэвэ

Преобразование Кархунена-Лоэвэ (его еще называют преобразова­ нием Хотеллинга) имеет наилучшую эффективность в смысле кон­ центрации энергии изображения, но по указанным выше причинам, оно имеет скорее теоретическое, нежели практическое значение. Данное изображение следует разделить на к блоков по п пикселов в каждом, обычно, п ~ 64, но допускаются и другие значения, а чи­ сло к зависит от размера изображения. Рассматриваются векторы блоков, которые обозначаются Ъ^'^\ при г = 1,2,..., А;. Усредненный вектор равен

Ь = (ЕгЬ^'^)/А;. Вводится новое семейство векторов v^*) = b^^^ — b, для которого усредненный вектор (X]j v^*^) равен нулю. Матрицу преобразования (KLT) размера п х п^ которую мы будем строить, обозначим через А. Результатом преобразования вектора v^^^ будет весовой вектор w^*^ = Av^*\ Усреднение векто­

роа w^*) также равно нулю. Построим матрицу V, столбцами кото­ й буду служить векторы v^*^. Рассмотрим также матрицу W со

столбцами w^*^ :

V = ( v ( i ) , v ( 2 ) , . . . , v W ) , W = ( w ( ' ) , w ( 2 ) , . . . , w W ) .

3.5. Преобразование изобраэюений

Матрицы V и W имеют п строк и к столбцов. Из определения векторов w^*) заключаем, что W = А • V.

Все п векторов коэффициентов с^-^^ преобразования КархуненаЛоэвэ определяются равенствами

Таким образом, вектор с^-^^ состоит из j-ых элементов весовых век­ торов w^*) при г = 1,2,..., А:.

Рассмотрим матрицу-произведение W • W ^ . Элемент строки а и столбца b этой матрицы равен сумме произведений

к

к

(W • W^) =Y,

"'«^«1'' = Е 4"^4'''' = с*"' • «'"^ для о, 6 G [1, п].

г=1

i—l

(3.17) Тот факт, что среднее каждого вектора w^*^ равно нулю означает, что каждый диагональный элемент (W • W ^ ) .. матрицы-произве­ дения является дисперсией (с множителем А;) j - ro элемента (или j'-ой координаты) вектора w^*^. В самом деле, из уравнения (3.17) нахо­ дим, что

(w-w-)^.^.=i:-f-f

= E(-f-o) =

г = 1

г = 1

 

г =к1

г = 1

Внедиагональные элементы матрицы (W • W ^ ) являются ковариациями векторов w^^\ то есть, элемент (W • W^)^^ равен ковариации координат а и b векторов w^*^. Из уравнения (3.17) также видно, что эти величины равны скалярным произведениям с^^^ • с^^^ век­ торов с^"^ и с^^^. Одной из основных задач преобразования изобра­ жения является приведение его к декоррелированной форме коор­ динат векторов. Теория вероятности говорит о том, что две коор­ динаты являются декоррелированными, если их ковариация равна нулю (другая цель - это концентрация энергии, но эти две задачи тесно связаны). Значит, необходимо найти матрицу А, такую, что произведение W • W ^ будет диагональной матрицей.

Из определения матрицы W находим, что

W W ^ = (AV) • (AV)'^ - А ( v • V'^) А'^

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

Матрица V • V^ является симметрической, ее элементами служат ковариации координат векторов v^*^, то есть,

к

(V • V^)^^ = J2 ^i'^4'^ при а, b Е [1, п].

Раз матрица V • V"^ - симметрическая, то ее собственные векторы ортогональны. Нормализуем их (то есть, сделаем их ортонормальными) и выберем их в качестве строк матрицы А. Получим следу­ ющий результат:

/

Ai

О

О

•••

О \

 

О

Л2

О

•••

О

W • W ^ = А ^V • V ^ ) А'^ =

О

О

Лз

•••

О

V О О

• • •

О \п J

При таком выборе матрицы А матрица W

• W ^

будет диагональ­

ной, причем элементы диагонали являются собственными числа­ ми матрицы V • V^. Матрица А служит матрицей преобразования Кархунена-Лоэвэ; ее строки являются базисными векторами KLT, а энергией (дисперсией) преобразованных векторов служат собствен­ ные числа Ai, Л2,..., А„ матрицы V • V^.

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

Честность - вот лучший образ.

Том Уилсон

3.6. Прогрессирующее сжатие изображений

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

3.6. Прогрессирующее сжатие изобраоюений

всемирной паутины). Когда такое изображение принимается и раз­ жимается, декодер способен очень быстро показать всю картинку в формате с низким качеством, а затем постепенно улучшать каче­ ство по мере приема остальной части сжатого изображения и его декодирования. Пользователь, наблюдая на экране развитие образа, может распознать все особенности этого изображения после деко­ дирования всего 5-10% от его размера.

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

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

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

Образование - это прогрессирующее обнаружение нашего невежества.

Уил Дюрант

Мы уже упоминали прогрессирующее сжатие изображений в свя­ зи с алгоритмом JPEG (стр. 185). Этот алгоритм использует DCT для разделения образа на пространственные частоты и начинает сжатие с низкочастотных компонентов. Поэтому декодер может бы­ стро показать соответствующую им грубую картинку. Высокочас­ тотные компоненты содержат детали изображения.

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

Кроме того, полезно представлять себе прогрессирующее деко­ дирование как процесс улучшения качества изображения во време­ ни. Это можно сделать тремя путями:

1. Закодировать пространственные частоты изображения прогрессируюш;им образом. Наблюдатель, следяпщй за декодированием, уви­ дит такое изображение изменяюш;имся от расплывшегося до резко­ го. Методы, которые работают подобным образом, имеют среднюю скорость кодирования и медленную скорость декодирования. Этот тип сжатия часто называется прогрессирующим по соотношению сигнал/шум^ или прогрессирующим по качеству изображения.

2. Начать с черно-белого полутонового изображения, а потом до­ бавить цвет и тени. При декодировании зритель с самого начала увидит изображение со всеми деталями, которые будут улучшаться по мере добавления цветов и красок. Метод векторного квантования применяет этот принцип компрессии. Такие алгоритмы отличаются медленным кодированием и быстрым декодированием.

Рис. 3.45. Последовательное декодирование.

3.Кодировать изображение по слоям, где ранние слои состоят из нескольких пикселов большого разрешения. Наблюдатель заметит постепенную детализацию картинки во времени при ее декодиро­ вании. Такой метод добавляет все новые детали по мере разжатия файла. Этот путь прогрессирующего сжатия называется пирами­ дальным или иерархическим кодированием. Большинство методов сжатия используют этот принцип, поэтому в этом параграфе обсуж­ даются общие идеи осуществления пирамидального кодирования. Рис. 3.46 иллюстрирует три принципа прогрессирующего сжатия, перечисленные выше. Они контрастируют с рис. 3.45, на котором изображены этапы последовательного декодирования.

3.6. Прогрессирующее сжатие изобралсений

Предположим, что изображение состоит из 2"^ х2" = 4^ пикселов. Простейший метод прогрессирующего сжатия, который приходит в голову, состоит в вычислении каждого пиксела слоя г — 1 в виде среднего группы 2 x 2 пикселов слоя г. Значит, слой п - это исходное изображение (4" пикселов размера 1), слой п — 1 состоит из 2"~^ х х2"~^ = 4"""^ пикселов размера 2 х 2, и так далее до слоя 4^~" = = 1 из одного большого пиксела размера 4"^, который представляет все изображение. Если изображение не слишком велико, то все слои можно сохранить в памяти компьютера. Затем слои записываются в файл в обратном порядке, начиная со слоя 1. Единственный пиксел слоя 1 является «родителем» четырех пикселов слоя 2, каждый из которых порождает по 4 пиксела слоя 3 и так далее. Этот процесс породит прогрессирующий файл образа, но без сжатия, поскольку общее число пикселов этой пирамиды равно

4» + 4^ + •.. + 4^-^ + 4^ = (4^+1 - 1) /3 ;^ 1.33 X 4^ ;:^ 1.33 х (2 х 2)^,

что на 33% больше размера исходного числа!

Простой метод приведения числа пикселов пирамиды к исход­ ному числу 4"' состоит в сохранении только трех пикселов слоя i из четырех и в вычислении четвертого с помощью трех его «бра­ тьев» и одного родительского пиксела этой группы из предыдущего слоя г — 1.

Пример: На рис. 3.47с дано изображение размера 4 x 4 , которое является третьим слоем прогрессирующего сжатия. Второй слой по­ казан на рис. 3.47Ь, где, например, пиксел 81.25 является средним значением четырех пикселов 90, 72,140 и 23 из третьего слоя. Един­ ственный пиксел первого слоя приведен на рис. 3.47а.

Сжатый файл будет содержать только числа

54.125,32.5,41.5,61.25,72,23,140,33,18,21,18,32,44,70,59,16

(конечно, правильно закодированные) из которых легко восстано­ вить недостающие пикселы. Например, отсутствующий пиксел 81.25 вычисляется из уравнения + 32.5 + 41.5 -h 61.25)/4 = 54.125.

Проблема заключается в том, что среднее значение целых чисел может быть нецелым числом. Если мы хотим, чтобы пикселы оста­ вались целыми, то придется или смириться с потерей точности, или сохранять все более и более длинные целые числа. Например, если исходные пикселы имеют 8 разрядов, то сложение четырех 8-ми би­ товых чисел дает 10-ти битовое число. Деление этого числа на 4 для вычисления среднего и округление до целого вновь приводит к

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

Рис. 3.46. Прогрессирующее декодирование.

3.6. Прогрессирующее сэюатие изобраэи:ений 179)

8 разрядам, но с возможной потерей точности. Если потеря точно­ сти нежелательна, то можно представить наш пиксел второго слоя в виде 10-ти битовых чисел, а пиксел первого слоя - с помощью 12 раз­ рядов. На рис. 3.47d,e,f показан результат округления, при котором происходит некоторая потеря информации. Содержимым сжатого файла будет последовательность

54,33,42,61,72,23,140,33,18,21,18,32,44,70,59,16.

Первый отсутствующий пиксел 81 второго слоя можно вычислить из уравнения (а; + 33-|-42н-61)/4 = 54. Получится число 80 с небольшой ошибкой.

 

81.25

32.5

90

72

58

33

 

140

23

21

18

 

61.25

41.5

100

70

72

18

 

i ^6

59

44

32

 

 

 

 

(Ь)

 

(с)

 

 

81

33

90

72

58

33

 

140

23

21

18

 

61

42

100

70

72

18

 

16

59

44

32

 

 

 

 

(е)

 

 

(f)

 

 

max

min

90

72

58

33

140

140

21

140

23

21

18

min

max

100

70

72

18

 

16

7 2

16

59

44

32

(g)

(h)

 

(i)

 

Рис. 3.47. Прогрессирующее сжатие образа.

Лучшее решение заключается в использовании родителя группы при вычислении его четырех потомков. Это можно делать, вычи­ сляя разность между родителем и его потомками и записывая эту разность (после подходящего кодирования) в слой i сжатого файла. Декодер восстанавливает разность и использует родителя из слоя г — 1 для вычисления значений четырех пикселов. Для кодирования разностей можно применять метод Хаффмана или арифметическое кодирование. Если все слои вычислены и находятся в памяти, то

Соседние файлы в папке 1