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

1 / Salmon_sjatie_dannyh_izobrajeniy_i_zvuka[torrents.ru]

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

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

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

Слово декоррелир ованные означает, что преобразованные вели­ чины являются статистически независимыми. В результате их мож­ но кодировать независимо, что позволяет построить более простую статистическую модель. Образ можно сжать, если в нем имеется определенная избыточность. Избыточность проистекает от корре­ ляции пикселов. Если перевести образ в представление, в котором пикселы декоррелированы, то одновременно произойдет удаление избыточности и образ будет полностью сжат.

Начнем с простого примера, в котором образ сканируется ра­ стровым способом (то есть, строка за строкой) и группируется в пары прилегающих пикселов. Поскольку пикселы коррелированы, два пиксела (ж, у) в паре, обычно, имеют близкие значения. Рассмо­ трим теперь эти пары в виде точек на плоскости и отметим их на графике. Известно, что точки вида (х,х) лежат на прямой с на­ клоном 45°, уравнение которой имеет вид у = х, поэтому можно ожидать, что все точки будут сконцентрированы около этой пря­ мой. Рис. 3.17а дает такой график для типичного изображения, где значения пикселов лежат в интервале [О, 255]. Большинство точек изображают «облако» около этой линии, и только некоторые точки лежит вдали от диагонали. Теперь мы преобразуем эту картинку с помощью поворота на угол 45° по часовой стрелке вокруг начала координат, так, чтобы диагональ легла на ось х (рис. 3.17Ь). Это делается с помощью простого преобразования

/ *

/ ч /

cos45°

-sin45°

 

(X ,у

) =

(х.у)

sin 45°

cos 45°

 

 

=

(^,2/)-/| I ^

^ ] = {х^уЩ^

(3.3)

где матрица поворота R является ортогональной (то есть, скаляр­ ное произведение строк на себя равно 1, а скалярное произведе­ ние векторов-строк друг на друга равно 0; то же самое верно и для векторов-столбцов). Обратным преобразованием служит пово­ рот на 45° против часовой стрелки, который запишется в виде

(х,у) = (a:*,y')R-i = (ж*,|/*)К^ = (^*'^*);^ ( - 1 1 ) • (3.4)

3.5. Преобразование изображений 141

(Обращение ортогональных матриц делается с помощью простого транспонирования.)

255

128

127

50

0 -

-50

-128

128

255

(a)

W' -A.-.

•".;.;••;д\>?-;^^?-;.-л-:•* ч^^л"/-»::.^*

(b)

Рис. 3.17. Поворот облака точек.

Очевидно, что большинство точек преобразованного «облака» будут иметь координату ?/, близкую к нулю, а координата х изме­ нится не слишком сильно. Рис. 3.18а,Ь изображают распределение координат X 1Д.у (то есть, пикселов с четными и нечетными номера­ ми) типичного 128 X 128 X 8 полутонового изображения до вращения.

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

Ясно, что эти распределения отличаются не слишком. На рис. 3.18c,d показаны распределения координат после поворота. Распределение координаты X почти не изменилось (увеличилась дисперсия), в то время как распределение координаты у сконцентрировалось около нуля. Программа на Matlab, которая строит эти графики также приведена на рисунке. (На рис. 3.18d координата у сконцентрирова­ на около 100, но это произошло из-за сдвига графика вправо, так как некоторые координаты были близки к —101, и их пришлось сдвинуть для попадания в массив Matlab, у которого индекс всегда начина­ ется с единицы.)

Поскольку координаты точек известны до и после преобразова­ ния, легко вычислить уменьшение корреляции. Сумма YiiXiyi назы­ вается перекрестной корреляцией точек (xi^yi).

Следующий пример поясняет смысл этой величины. Повернем точки (5,5), (6,7), (12.1,13.2), (23,25) и (32,29) по часовой стрелке на 45° и вычислим перекрестную корреляцию до и после поворота. На рис. 3.19 приведена программы Matlab, вычисляющая координаты повернутых точек. Они равны

(7.071,0), (9.19,0.7071), (17.9,0.78), (33.9,1.41), (43.13,-2.12)

(заметьте, что координаты у стали малыми числами). Видно, что значение перекрестной корреляции уменьшилась с 1729.72 до пово­ рота до —23.0846 после поворота. Замечательное сокращение!

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

Легко показать, что полная дисперсия пикселов, которая опре­ деляется суммой Tii (ж^ + yf) , не меняется при повороте, посколь­ ку матрица этого преобразования является ортогональной. Одна­ ко дисперсия новых координат у стала малой, поэтому возросла дисперсия коэффициентов х. Дисперсию иногда называют энергией распределения пикселов. Поэтому мы можем сказать, что поворот концентрирует энергию в координатах ж, с помощью чего достига­ ется сжатие изображения.

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

] JL"'.

filename='lenal28'; dim=128; xdist=2eros(256,1); ydist=zeros(256,1); fid=fopen(filename,'r'); img=fread(fid,[dim,dim])';

for col=l:2:dim-l for row=l:dim

x=img(row,col)+l; y=img(row,col+l)+l; xdist(x)=xdist(x)+1; ydist(y)=ydist(y)+1;

end end

figure(l), plot(xdist), colormap(gray) 7, распред. x&y figure (2), plot (ydist), colormap(gray) '/, до поворота xdist=zeros(325,l); У, clear arrays

ydist=zeros(256,1) ,* for col=l:2:dim-l

for row=l:dim x=round((img(row,col)+img(row,col+1))*0.7071); y=round((-img(row,col)+img(row,col+1))*0.7071)+101; xdist(x)=xdist(x)+1; ydist(y)=ydist(y)+1;

end end

figureO), plot(xdist), colormap(gray) У, распред. x&y figure(4), plot(ydist), colormap(gray) У. после поворота

Рис. 3.18. Распределение пикселов до и после поворота.

Концентрирование энергии в одной координате имеет и другое преимущество. Можно делать квантование этой координаты более

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

точным, чем квантование второй координаты. Такой способ кван­ тования приводит к лучшему сжатию.

Р = { { 5 , 5 } , { 6 , 7},{12.1,13.2},{23,25},{32,29}}; rot={{0.7071,-0.7071},{0.7071,0.7071}}; 8шп[р[[1,1]]р[[1,2]], {i,5}]

q=p.rot Smn[q[[i,l]]q[[i,2]], {i,5}]

Рис. 3.19. Поворот пяти точек.

Следуюш;ий простой пример иллюстрирует возможности этого ортогонального преобразования. Начнем с точки (4,5) с близки­ ми координатами. С помощью уравнения (3.3) эта точка перехо­ дит в (4,5)R = (9,1)/V^ '^ (6.36396,0.7071). Энергии этих точек равны: 4^ + 5^ = 41 = (9^ + l^)/2. Если удалить координату (4) исходной точки, то получится ошибка 4^/41 = 0.39. Однако, ес­ ли удалить меньшую из двух координат преобразованной точки (0.7071), то ошибка будет всего 0.7071^/41 = 0.012. Эту ошибку мож­ но также вычислить, исходя из реконструированной точки. Приме­ ним обратное преобразование (уравнение (3.4)) к точке (9,1)/\/2. Получим, конечно, исходную точку (4,5). Сделав то же самое j \ ^ ^ точки (9,0)/Vz, получим после округления точку (4.5,4.5). Разность энергий исходной и реконструированной точек будет равна той же малой величине

[(42 + 5^)-(4.5^+4.5^)]

 

4 1 - 4 0 . 5

 

42 + 52

-

41

""•"^^-

Это простое преобразование легко обобщить на случай любо­ го числа измерений. Вместо пар, можно выбирать тройки точек, триплеты. Каждый триплет становится точкой трехмерного про­ странства, а все точки образуют «облако» вокруг прямой, проходя­ щей через начало координат под углом 45° к каждой координатной оси. Если эту прямую повернуть так, что она ляжет на ось х^ то координаты у VI Z точек «облака» станут малыми числами. Такое преобразование совершается с помощью умножения каждой точки на некоторую матрицу размера 3 x 3 , которая, конечно, является ортогональной. Вторая и третья компоненты координат преобра­ зованных точек будут малыми числами, поэтому координаты всех точек следует разделить на три вектора коэффициентов. Для луч­ шего сжатия необходимо, чтобы квантование этих векторов коэф­ фициентов делалось с разной степенью точности.

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

Этот метод легко распространить на более высокие размерно­ сти, с той лишь разницей, что получающиеся пространства уже не­ льзя будет представить зрительно. Однако, соответствующие ма­ трицы преобразований легко выписываются. Единственно, что при­ ходится учитывать, это то, что размерность не должна быть слиш­ ком большой, поскольку результат сжатия на основе поворота за­ висит от корреляции близких пикселов. Например, если объединять по 24 соседних пиксела в одну точку 24-мерного пространства, то полученные точки, вообще говоря, не будут лежать в малой окрест­ ности «прямой под углом 45° к осям координат», поскольку не будет корреляции между пикселом и его дальним соседом. Поэтому после поворота, последние 23 координаты преобразованных точек уже не будут малыми. Наблюдения показывают, что корреляция пикселов сохраняется до размерности восемь, но редко дальше.

Метод JPEG, описанный в § 3.7, делит изображение на блоки пикселов размера 8 х 8 и поворачивает каждый блок два раза с помо­ щью уравнения (3.9), которое будет объяснено в § 3.5.3. Это двойное вращение дает множества, состоящие из 64 преобразованных вели­ чин, из которых первая, называемая «коэффициент DC», — большая, а все остальные 63 («коэффициенты АС») — обычно маленькие. Та­ ким образом, это преобразование концентрирует энергию в первой компоненте из 64. Далее множество коэффициентов DC и 63 множе­ ства коэффициентов АС следует квантовать раздельно (метод JPEG делает это немного иначе, см. § 3.7.4).

3,5.1. Ортогональные

преобразования

Преобразования, которые используются для сжатия изображений должны быть быстрыми, и, по возможности, легко реализуемыми на компьютере. Это прежде всего предполагает, что такие пре­ образования должны быть линейными. То есть, преобразованные величины Ci являются линейными комбинациями (суммами с неко­ торыми множителями или весами) исходных величин (пикселов) dj^ причем соответствующим множителем или весом служит некоторое число Wij (коэффициент преобразования). Значит, с^ == ^ djWij^ где г, j = 1,2,..., п. Например, при п = 4 это преобразование можно за­ писать в матричной форме

/ С 1

\

(

Wxi

Wu

^ 1 3

Wu

\

/

^1

\

 

 

 

W21

W22

^23

'^^24

 

 

<^2

 

 

 

 

W31

W32

WS3

W34

 

 

ds

 

\ С 4

/

\

W41

W42

W43

W44

/

\

6^4

/

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

которая в общем случае примет следующий вид: С = W • D. Каждый вектор-столбец матрицы W называется «базисным вектором».

Важной задачей является определение коэффициентов преобра­ зования Wij. Основное требование заключается в том, чтобы по­ сле преобразования величина С] была бы большой, а все осталь­ ные величины С2,сз,... стали бы малыми. Основное соотношение С{ = ^jdjWij предполагает, что С{ будет большим, если веса Wij будут усиливать соответствующие величины dj. Это произойдет, например, если компоненты векторов Wij и dj имеют близкие зна­ чения и одинаковые знаки. Наоборот, ci будет малым, если веса Wij будут малыми, и половина из них будет иметь знак, противополож­ ный знаку соответствующего числа dj. Поэтому, если получаются большие Q, то векторы Wij имеют сходство с исходным вектором б/j, а малые Ci означают, что компоненты Wij сильно отличаются от dj. Следовательно, базисные векторы Wij можно интерпретировать как инструмент для извлечения некоторых характерных признаков исходного вектора.

На практике веса Wij не должны зависеть от исходных данных. В противном случае, их придется добавлять в сжатый файл для ис­ пользования декодером. Это соображение, а также тот факт, что исходные данные являются пикселами, то есть, неотрицательными величинами, определяет способ выбора базисных векторов. Первый вектор, тот, который, порождает ci, должен состоять из близких, возможно, совпадающих чисел. Он будет усиливать неотрицатель­ ные величины пикселов. А все остальные векторы базиса должны наполовину состоять из положительных чисел, а на другую полови­ ну - из отрицательных. После умножения на положительные вели­ чины и их сложения, результат будет малым числом. (Это особенно верно, когда исходные данные близки, а мы знаем, что соседние пик­ селы имеют, обычно, близкие величины.) Напомним, что базисные векторы представляют собой некоторый инструмент для извлече­ ния особенностей из исходных данных. Поэтому хорошим выбором будут базисные векторы, которые сильно различаются друг от дру­ га и, поэтому, могут извлекать разные особенности. Это приводит к мысли, что базисные векторы должны быть взаимно ортогональ­ ными. Если матрица преобразования W состоит из ортогональных векторов, то преобразование называется ортогональным. Другое наблюдение, позволяющее правильно выбирать базисные векторы, состоит в том, что эти векторы должны иметь все большие частоты изменения знака, чтобы извлекать, так сказать, высокочастотные

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

характеристики сжимаемых данных при вычислении преобразован­ ных величин.

Этим свойствам удовлетворяет следующая ортогональная мат­ рица:

 

/

1

1

1

1

 

W -

 

1

1

- 1

- 1

(3.5)

 

1

- 1

- 1

1

 

 

 

 

\

1

- 1

1

- 1

 

Первый базисный вектор (верхняя строка W) состоит из одних еди­ ниц, поэтому его частота равна нулю. Все остальные векторы име­ ют две - М и две —1, поэтому они дадут маленькие преобразован­ ные величины, а их частоты (измеренные количеством смен знаков в строке) возрастают. Эта матрица подобна матрице преобразования Адамара-Уолша (см. уравнение (3.11)). Для примера, преобразуем начальный вектор (4,6,5,2) :

/ 1

1

1

1 \

/ 4 \

/

17 \

1

1

- 1

- 1

6

 

3

1

- 1

- 1

1

5

 

- 5

\ 1

- 1

1

- 1 / V 2 /

\

1 /

Результат вполне ободряющий, поскольку число ci стало большим (по сравнению с исходными данными), а два других числа стали ма­ лыми. Вычислим энергии исходных и преобразованных данных. На­ чальная энергия равна 4"^ -|- 6^ + 5^ + 2^ = 81, а после преобразования энергия стала 17^ + 3^ + (—5)^ -h 1^ — 324, что в четыре раза больше. Энергию можно сохранить, если умножить матрицу преобразова­ ния W на коэффициент 1/2. Новое произведение W-(4,6,5,2)^ будет равно (17/2,3/2, —5/2,1/2). Итак, энергия сохраняется и концентри­ руется в первой компоненте, и она теперь составляет 8.5^/81 = 89% от общей энергии исходных данных, в которых на долю первой ком­ поненты приходилось всего 20%.

Другое преимущество матрицы W состоит в том, что она же делает обратное преобразование. Исходные данные (4,6,5,2) вос­ станавливаются с помощью произведения W-(17/2,3/2, —5/2,1/2)^.

Теперь мы в состоянии оценить достоинства этого преобразо­ вания. Квантуем преобразованный вектор (8.5,1.5,-2.5,0.5) с по­ мощью его округления до целого и получаем (9,1, - 3,0) . Делаем обратное преобразование и получаем вектор (3.5,6.5,5.5,2.5). В ана­ логичном эксперименте мы просто удалим два наименьших числа и

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

получим (8. 5,0, —2.5,0), а потом сделаем обратное преобразование этого грубо квантованного вектора. Это приводит к восстановлен­ ным данным (3,5.5,5.5,3), которые также весьма близки к исходным. Итак, наш вывод: даже это простое и интуитивное преобразование является хорошим инструментом для «выжимания» избыточности из исходных данных. Более изош;ренные преобразования дают ре­ зультаты, которые позволяют восстанавливать данные с высокой степенью схожести даже при весьма грубом квантовании.

Одни художники отобраоюаютп солнце в желтое пятно, а другие - ж:елтое пятно в солнце.

Пабло Пикассо

3.5.2.Матричные преобразования

Рассмотрим двумерный массив данных, представленный в виде ма­ трицы размером 4 x 4

 

/ 4

6

9 \

D =

6

3

6

5

7

6

 

 

\ 2

5

9 /

(здесь в первом столбце стоит вектор из предыдущего примера). Применим наше простое преобразование к каждому столбцу матри­ цы D. Результат равен

 

1

/ 1

1

1

п

 

8.5

11.5

10.5

15

\

С' = W D

1

1

- 1

- 1

D

1.5

3.5

-1.5

О

 

2

1

- 1

- 1

1

-2.5

-0.5

0.5

3

 

 

 

 

 

 

W - 1

1

-ly

 

0.5

-0.5

2.5

О

/

Каждый столбец матрицы С получен преобразованием столбцов матрицы D. Заметим, что верхние элементы столбцов матрицы С являются доминируюп1;ими. Кроме того, все столбцы имеют ту же энергию, что и до преобразования. Будем считать матрицу С ре­ зультатом первого этапа двухстадийного процесса преобразования матрицы D. На втором этапе сделаем преобразование строк ма­ трицы С . Для этого умножим матрицу С на транспонированную матрицу W ^ . Наша конкретная матрица W является симметрич­ ной, поэтому можно записать: С = C'W^ = WDW^ = WDW или

 

 

 

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

/

8.5

11.5

10.5

15

\

/ 1

1

1

1

\

С =

1.5

3.5 -1.5

0

1

1

1

- 1

- 1

 

-2.5

-0.5

0.5

3

2

1

- 1

- 1

1

 

 

 

\

0.5

-0.5

2.5

0

/

V 1

- 1

1

- 1

/

/

22. 75

- 2 . 75

0. 75

- 3 .

75

\

 

 

 

 

1.75

3.25

- 0 . 25

- 1 . 75

 

 

 

 

 

0.25

- 3 . 25

0.25

- 2 . 25

 

 

 

 

1

1.25

- 1 . 25

- 0 . 75

1.75 /

 

 

 

 

Самый верхний левый элемент матрицы С доминирует. В нем сосредоточено 89% от общей энергии, равной 579, исходной ма­ трицы D. Следовательно двухстадийное преобразование матричных данных сокращает корреляцию по обоим направлениям: по вертика­ ли и по горизонтали.

Далее будут обсуждаться следующие преобразования:

1. Дискретное косинус-преобразование (DCT, discrete cosine trans­ form, см. § 3.5.3 и § 3.7.2) является хорошо изученным и весьма эф­ фективным преобразованием, которое применяется в таких мето­ дах компрессии, как JPEG и MPEG. Известные алгоритмы быстро­ го вычисления DCT делают этот метод особенно притягательным

вконкретных приложениях.

2.Преобразование Кархунена-Лоэвэ ( KLT, Karhunen-Loeve trans­ form, § 3.5.8) является теоретически наилучшим с точки зрения кон­ центрации энергии (или, что то же самое, удаления корреляции пик­ селов). К сожалению, его коэффициенты не фиксированы, а зависят от исходных данных. Вычисление этих коэффициентов (базиса пре­ образования) делается медленно, как и нахождение самих преобра­ зованных величин. Поскольку преобразование зависит от исходных данных, приходится сохранять его коэффициенты в сжатом файле. По этим причинам, а также из-за того, что DCT дает примерно то же качество, но с большим выигрышем по быстродействию, метод KLT редко используется на практике.

3.Преобразование Уолша-Адамара (WHT, Walsh-Hadamard trans­ form, § 3.5.6) быстро вычисляется (при этом используется только сложение и вычитание), но его характеристики, выраженные в тер­ минах концентрации энергии, хуже, чем у DCT.

4.Преобразование Хаара [Stollnitz 96] является очень простым и быстрым. Оно является простейшим вейвлетным преобразованием, которое будет обсуждаться в § 3.5.7 и в главе 4.

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