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

1 / Salmon_sjatie_dannyh_izobrajeniy_i_zvuka[torrents.ru]

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

Глава 4- Вейвлетные методы

cleair; */, главная программа filename='lenal28'; dim=128; fid=f open (filename, ' r O ;

if fid==-l dispCfile not found')

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

thresh=0.0; 7, процент отбрасываемых коэффициентов

figured), imagesc(img), colormap(gray), axis off, axis square w=harmatt (dim) ; */* вычисление матрицы Хаара

timg=w*img*w'; У, прямое преобразование Хаара tsort=sort(abs(timg(:))); tthresh=tsort(floor(max(thresh*dim*dim,1))); cim=timg.*(abs(timg) > tthresh);

[i,j,s] =find(cim); dimg=sparse(i,j,s,dim,dim);

*/. figure (2) показывает оставшиеся коэффициенты преобразования 7,figure(2), spy(dimg), colormap(gray), axis square

figure(2), image(dimg), colormap(gray), axis squaure cimg=full(w'*sp2Lrse(dimg)*w); density = nnz(dimg); disp([num2str(100*thresh) '*/, отброшенных коэффициентов.']) disp([num2str(density) ' оставленных коэффициентов ' ...

num2str(dim) 'x' num2str(dim) '.'])

figureO), imagesc(cimg), colormap(gray), axis off, axis squaore

Файл harmatt.m с двумя функциями

function X = harmatt(dim) num=log2(dim);

p = sparse(eye(dim)); q = p;

i=l;

while i<=dim/2;

q(l:2*i,l:2*i) = sparse(individ(2*i)); p=p*q; i=2*i;

end x=sparse(p);

function f=individ(n) x=[l, 1] /sqrt(2); y=[l,-l] /sqrt(2);

while min(size(x)) < n/2

x=[x, zeros(min(size(x)),max(size(x)));...

zeros(min(size(x)),max(size(x))), x]; end

while min(size(y)) < n/2

y=[y, zeros(min(size(y)),max(size(y)));...

zeros (min (size (y)) ,max (size (y))) , y] ; end

f=[x;y];

Рис. 4.12. Программа для вычисления преобразования Хаара (Matlab).

4.1. Вычисление средних и полуразностей 231

Использование только 820 коэффициентов соответствует отбрасы­ ванию 95% наименьших из них (заметим однако, что часть коэф­ фициентов сразу равнялось нулю, поэтому, реальная потеря данных будет меньше 95%).

(а)

(Ь)

(с)

Рис. 4.13. Три реконструкции образа «Lena» из 128 х 128 пикселов.

Глава 4- Вейвлетные методы

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

Преобразование Хаара использует функцию шкалы ф{1) и вейвлет ф(t)^ которые показаны на рис 4.14а, для представления широкого класса функций. Это представление имеет вид бесконечной суммы

оо

оо

оо

fit) = J2

^кФ(* - ^) + Е

Е dj,krP{2H - к),

к=—оо

к=—оо

j=0

где Ck и dj^k ~ коэффициенты, которые необходимо определить. Базисная функция шкалы ф(1) является единичным импульсом

Г 1,

О < ^ < 1,

^(^^ = 1 О,

иначе.

Функция ф{Ь — к) является копией функции 0(^), сдвинутой впра­ во на число к. Аналогично, функция ф{21 — к) получается из функ­ ции ф(1 — к) сжатием аргумента в два раза (это еще можно на­ звать уменьшением масштаба). Сдвинутые функции используются для аппроксимации функции f{t) при различных моментах времени, а функции с разными масштабами нужны для аппроксимации функ­ ции f{t) при более высоком разрешении. На рис. 4.14Ь приведены графики функций ф{2Н к) при j = 0,1,2,3 и при А: = 0 , 1 , . . . , 7. Базисный вейвлет Хаара ф{1) является ступенчатой функцией

т = 0.5"<-*^''< 1. '

Из этого определения мы заключаем, что общий вейвлет ф{2Н — к) получается из ф{t) сдвигом вправо на к единиц и сменой масштаба в 2^ раз. Четыре вейвлета ф{2'^1 — к) при А; = 0,1,2 и 3 показаны на рис. 4.14с.

Обе функции ф{2Н — к) и ф{2Н — к) не равны нулю на интервале ширины 1/2-^. Этот интервал называется носителем этих функций. Поскольку длина этого интервала стремится к нулю, когда j стре­ мится к бесконечности, мы будем говорить, что функции имеют

компактный носитель.

Проиллюстрируем основное преобразование с помощью простой ступенчатой функции

0.b<t< 1.

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

Легко видеть, что f(t) = ^ф{t) -^ ф{1). Мы скажем, что исход­ ные ступени (5,3) были преобразованы в представление, имеющее среднее (низкое разрешение) 4 единицы и детали (высокое разреше­ ние) 1 единица. Если воспользоваться матричным представлением, то это можно записать как (5,3)А2 = (4,1), где А2 - матрица пре­ образования Хаара порядка 2 (см. уравнение (3.16)).

 

ih

 

1г-

 

 

1

^

 

 

 

1

У ^(t)

 

 

 

 

 

 

 

 

 

ф(г)

 

 

 

-Пи

 

 

(а)

 

 

 

 

 

(с)

'ф(4г-к)

 

 

 

 

 

 

 

2

I

3

I ^

 

 

 

 

ГЪ

 

Л .

_гг

(Ь)ф(2Н-к)

Рис. 4.14. Базисная шкала Хаара и вейвлетные функции.

4'2.1. Матричная

форма

В основе преобразования Хаара лежит вычисление средних и раз­ ностей. Оказывается, .что эти операции можно легко выразить с помощью умножений соответствующих матриц (см. [Mulcahy 96] и [Mulcahy 97]). Для примера рассмотрим верхнюю строку простого изображения размера 8 х 8 из рис. 4.8. Каждый, кто немного зна­ ком с операциями над матрицами, легко построит матрицу, кото­ рая при умножении на некоторый вектор дает другой вектор, со­ стоящий из четырех полусумм и четырех полуразностей элементов

Глава 4- Вейвлетные методы

этого вектора. Обозначим эту матрицу Ai. Ее произведение на век­ тор рассматриваемого примера (верхняя строка матрицы на рис. 4.8) равно (239.5,175.5,111.0,47.5,15.5,16.5,16.0,15.5). Это видно из уравнения (4.1). Аналогично, матрицы А2 и Аз производят, соот­ ветственно, второй и третий шаг преобразования. Его результат показан в формуле (4.2).

 

о

о

о о

о о

о

 

/ 2 5 5 \

/ 239.5

\

 

 

^

?

о о

 

 

224

 

175.5

 

 

о

о о

о

 

 

192

 

111.0

 

A i

о

о о

о \

^

?i

 

 

159

 

47.5

 

1

 

о о

о о

2

 

 

127

 

15.5

 

 

 

о о

о

 

 

 

 

 

2

 

о о

 

 

95

 

16.5

 

 

о

 

- i O

о

 

 

 

 

 

 

 

 

 

16.0

 

 

о

 

 

- 1 0

о

 

 

63

 

 

 

 

о о

о \

 

V 32

/

V 15.5

/

 

 

 

 

 

 

4/

 

 

 

 

 

(4.1)

 

 

 

 

 

 

 

 

 

 

 

 

 

(\

о 0 о о о о\

 

 

 

!

о о о о о о\

 

о

1

1 о о о о

 

 

 

 

 

 

 

2

 

 

2 - ^ 0 0 0 0 0 0

 

 

i

0 0 0 0 0

 

 

О

0 1 0 0 0 0 0

 

 

о

 

 

 

 

2

i

-1 о о о о

 

 

о

0 0 1 0 0 0 0

 

 

о

2

0 1 0 0 0

А . =:

о

0 0 0 1 0 0 0

 

 

о

о о

0 0 1 0 0

 

 

о

0 0 0 0 1 0 0

 

 

о

о о

0 0 0 1 0

 

 

о

0 0 0 0 0 1 0

 

 

о

о о

0 0 0 0 1 /

 

 

0 0 0 0 0 0 1 /

 

о о

 

 

 

 

 

 

 

 

 

 

/

239.5

\

/

207.5

\

/

207.5

\

//

143.375

\

 

175.5

 

 

79.25

 

 

79.25

 

 

64.125

 

 

111.0

 

 

32.0

 

 

 

32.0

 

 

32.0

 

 

47.5

=

 

31.75

,

А2

31.75

=

31.75

 

 

15.5

 

15.5

 

15.5

15.5

 

 

 

 

 

 

 

 

 

 

 

16.5

 

 

16.5

 

 

 

16.5

 

 

16.5

 

 

16.0

 

 

16.0

 

 

 

16.0

)

 

16.0

 

\

15.5

)

^

15.5

)

V 15.5

\

15.5

/

 

 

 

 

 

 

 

 

 

 

 

 

(4.2)

Вместо того, чтобы вьпислять средние и разности строк, можно постро­ ить матрицы Ai, А2 и Аз, перемножить их, получить матрицу

W= А1А2А3,

азатем применить ее к вектору I:

 

 

 

 

 

 

 

 

 

4-2. Преобразование Хаара

 

 

/ 2 5 5 \

/I!

?

f

f

f

?

 

f

^ \

/ 2 5 5 \

/143.38 \

 

224

f

224

64.125

 

 

192

!

f

f

 

8

8

8 "

8

192

32.0

 

 

4

0

0

 

0

0

 

 

4

4 "

4 "

 

 

 

159

1

1

 

1

1

159

31.75

 

W

0

0

0

0

 

 

127

1

1

0

0

4

4

4 "

4

127

15.5

 

 

0

0

 

0

0

 

 

95

2 '

2

1

1

0

0

 

0

0

95

16.5

 

 

0

0

 

 

 

63

 

 

2 "

2

1

1

 

 

 

! 63

16.0

1

 

0

0

0

0

 

0

0

 

2 "

2

 

 

\ 3 2 /

\ 0

0

0

0

0

0

 

 

у

\ 3 2 У

V 15.5

/

В этом заключается только половина работы. Для того, чтобы сделать полное преобразование, необходимо применить W к стро­ кам произведения W I , или, что то же самое, умножим W на (WI) . Результат для удобства тоже транспонируем. Полное преобразова­ ние (см. строку timg=w*img*w' рис. 4.12) равно

It^ = fw (Wlf^ = W I W ^ .

Для обратного преобразования справедлива формула

В этом месте становится важным нормализованное преобразование Хаара (упомянутое на стр. 216). Вместо вычисления средних (вы­ ражений {di + di^i) /2) и разностей (выражений {di di^i) /2) луч­ ше вычислять величины (di + rfj+i) /V^ и {di di^i) /л/2. Это приво­ дит к ортогональной матрицы W, а хорошо известно, что обраще­ ние такой матрицы сводится к ее транспонированию. Следователь­ но, обратное преобразование запишется в простом виде W^ItrW (см. строку cimg=full(w'*sparse(dimg)*w на рис. 4.12).

Между процедурами прямого и обратного преобразования не­ которые коэффициенты могут быть квантованы или отброшены. Кроме того, для лучшего сжатия, матрицу Itr можно кодировать по методу RLE и/или по методу Хаффмана.

Функция individ(n) на рис. 4.12 начинается с матрицы пре­ образования Хаара размера 2 x 2 (заметим, что вместо знаменателя 2 взято число \/2), затем использует эту матрицу для построения необходимого числа матриц А,;. Функция harmatt(dim) формирует окончательную матрицу Хаара для изображения, состоящего из dim строк и dim столбцов.

Пример: Программа Matlab на рис. 4.15 вычисляет W в виде произведения трех матриц Ai, А2 и Аз, после чего делает преобра­ зования изображения размера 8 х 8 из рис. 4.8. Результатом стано­ вится матрица 8 x 8 , состоящая из коэффициентов преобразования.

Глава 4- Вейвлетпые методы

в которой верхний левый коэффициент 131.375 равен среднему всех 64 пикселов исходного изображения.

a l = [ l / 2

1/2

0

0

 

0

0

0

0;

0

0

1/2

1/2

0

0

0

0;

 

0

0

0

0

1/2

 

1/2

0

0;

0

0

0

 

0

0

0

1/2

1/2;

 

1/2

- 1 / 2

0

0

0

 

0

0

0;

 

0

0

1/2

 

- 1 / 2

 

0

0

0

0;

 

0

0

0

0

1/2

 

- 1 / 2

0

0;

 

0

0

0

0

 

0

0

1/2 - 1 / 2 ] ;

 

У, a l * [ 2 5 5 ;

224;

 

192;

159;

127;

 

95;

63;

3 2 ] ;

 

а2=[1/2

1/2

0

0

 

0

0

0

0;

0

0

1/2

1/2

0

0

0

0;

 

1/2

- 1 / 2

0

0

0

 

0

0

0;

 

0

0

1/2

 

- 1 / 2

 

0

0

0 0;

 

0

0

0

0

1

0

0

 

0;

0

0

0

0

0

1

0

 

0;

 

 

 

 

 

 

0 0 0 0 0 0 1 0 ; 0 0 0 0 0 0 0 1 ] ;

 

 

 

 

 

 

аЗ=[1/2

1 / 2 0 0 0 0 0 0 ;

 

1/2

- 1 / 2

 

0 0 0 0 0 0 :

 

0

0

1

0

0

0

0

 

0;

0

0

0

1

0

0

0

 

0;

 

 

 

 

 

 

0

0

0

0

1

0

0

 

0;

0

0

0

0

0

1

0

 

0;

 

 

 

 

 

 

0 0 0 0 0 0 1 0 ; 0 0 0 0 0 0 0 1 ] ;

 

 

 

 

 

 

w=a3*a2*al;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dim=8;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f i d = f o p e n ( » 8 x 8 ' , ' r ' ) ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

img=fread(fid,[dim,dim])*

;

 

 

 

 

 

 

 

 

 

 

 

f c l o s e ( f i d ) ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w*img*w'

*/, Результат

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

 

 

 

 

 

 

31.375

 

4.250

 

-7.875

 

-0.125

 

-0.25

 

-15.5

 

0

-0.25

0

 

 

 

0

 

 

 

 

0

 

 

 

0

 

 

 

0

 

 

 

0

 

0

0

0

 

 

 

0

 

 

 

 

0

 

 

 

0

 

 

 

0

 

 

 

0

 

0

0

0

 

 

 

0

 

 

 

 

0

 

 

 

0

 

 

 

0

 

 

 

0

 

0

0

12.000

 

59.875

 

39.875

 

31.875

 

15.75

 

 

32.0

16

15.75

12.000

 

59.875

 

39.875

 

31.875

 

15.75

 

 

32.0

16

15.75

12.000

 

59.875

 

39.875

 

31.875

 

15.75

 

 

32.0

16

15.75

12.000

 

59.875

 

39.875

 

31.875

 

15.75

 

 

32.0

16

15.75

Рис. 4.15. Программа и результат матричного вейвлетного преобразования WIW^ .

4.3. Подциапазонные преобразования

Все преобразования, которые обсуждались в § 3.5, являются орто­ гональными^ поскольку в их основе лежат ортогональные матрицы. Ортогональное преобразование можно также выразить с помощью скалярного произведения вектора данных (пикселов или звуковых фрагментов) и множества базисных функций. Результатом ортого­ нального преобразования служат преобразованные коэффициенты, которые можно сжимать с помощью RLE, кодирования Хаффмана

4-3. Поддиапазонные преобразования

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

Дискретное скалярное произведение двух векторов fi и p« зада­ ется формулой

i

В начале § 3.5 рассматривалось преобразование вида ci = ^jdjWij, где dj - исходные данные, а Wij - некоторые весовые коэффициенты.

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

Слово «свертка» означает совместное сворачивание величин или функций. Дискретная свертка двух векторов fi и pj, которая также является вектором, обозначается / • ^. Компоненты свертки вычи­

сляются по формулам

 

(f*9)i = ^fj9i-r

(4-3)

3

 

(Операцию свертки можно также определить для функций, но для наших потребностей сжатия данных достаточно будет дискретной свертки). Заметим, что пределы суммирования в формуле (4.3) не указаны точно. Они зависят от размерности векторов fi и gi. При­ мерами могут служить формулы (4.9).

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

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

ми сигналами. Мы будем рассматривать только

линейные

системы^

поскольку они очень важны и легко устроены.

Линейная

система

определяется следующим образом. Если входной сигнал xi{t) поро­ ждает выходной сигнал yi(t) (это будет обозначаться xi{t) —> yi{t)),

Глава 4- Вейвлетные методы

 

 

 

 

и если X2(t) -> y2{t), то xi{t) -\-X2{t) —>• yi(t)

+ y2it)'

Если система не

удовлетворяет этому свойству, то она является нелинейной.

 

Из этого определения в частности следует, что 2xi{t)

= xi{t)

4-

-\-x\(t) -^

yi{t) + yi(t)

= 2t/i(t), или в более общем виде: axi(t)

-^

—> ауг (t)

для любого вещественного числа а.

 

 

 

Некоторые линейные системы являются

трансляционно-инвари-

антными.

В такой

системе, если x(t) ->

y{t)

то x(t

~ Т)

—)•

-> y(t — Т), то есть, сдвиг входного сигнала по времени на число Т вызовет такой же сдвиг выходного сигнала. В связи с рассмотрени­ ем свертки, мы предполагаем, что обсуждаемая нами система явля­ ется линейной и трансляционно-инвариантной. Это верно (с высо­ кой точностью) для электрических цепей и для оптических систем, на базе которых строятся различные устройства для обработки и сжатия изображений и иных типов оцифрованных данных.

Полезно иметь некоторую общую формулу для представления линейных систем. Оказывается, что представление вида

+ 0 0

 

f(t,T)x{T)dT

(4.4)

/-ОО

является уже достаточно общим для этих целей. Другими слова­ ми, достаточно знать функцию /(^, т), зависящую от двух парамет­ ров, чтобы уметь предсказывать выход системы y{t) по известному входу х(г). Однако, нам хотелось бы иметь однопараметрическую функцию, и здесь нам поможет свойство трансляционной инвари­ антности. Если система, порождаемая уравнением (4.4), обладает этим свойством, то должно выполняться тождество

-foo

f(t,T)x(T-T)dT,

/-СХЭ

при любых т . Сделаем замену переменной в обеих частях этого ра­ венства, добавив число Т к f и т, и получим

 

-Ьоо

 

" < " ' /

f{t + T,T-^T)x(T)dT.

(4.5)

 

 

Вычтем (4.4) из этого уравнения

Г+оо+СЮ

[f(t + T,T+T)-f(t,T)]x{T)dT.

/•ОО

Это равенство должно выполняться для любого входного сигнала x(t). Поэтому выражение в квадратных скобках должно равняться

4.3. Поддиапазонные преобразования

нулю. Следовательно, J{t Л-Т^т -\-Т) = /(^,т) при всех Т. Значит, функция f{t^r) не изменится, если добавить любое число Т к ее аргументам, то есть она остается постоянной, если разность аргу­ ментов - константа, а сама функция / зависит только от разности своих аргументов. Тогда ее можно записать в виде /(t, т) = g{t — г), а уравнение (4.4) примет следующий простой вид:

 

 

+СЮ

(4.6)

y{t)

/

g(t — т)х{т)(1г.

 

-с»

 

совмещение функций

произведение функций

Рис. 4.16. Свертка функций x(t) и g(t).

Это соотношение определяет интегральную свертку., важную операцию между x[t) и p(t), которое связывает x{t) и y{t). Эта операция обозначается у = д х. Принято говорить, что линейная трансляционно-инвариантная система задается с помощью свертки (или конволюции) входного сигнала х is. некоторой функции g(t). Функция g(t)^ которая является основной характеристикой систе-

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