Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Цифра / ЦОСиИ_2014_2015_заочн / Теория и практика вейвлет-преобразования.pdf
Скачиваний:
163
Добавлен:
18.05.2015
Размер:
9.01 Mб
Скачать

Глава 7

ЦЕЛОЧИСЛЕННОЕ ВЕЙВЛЕТ-ПРЕОБРАЗОВАНИЕ

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

7.1. Целочисленные вейвлет-преобразования

Рассмотрим два примера, поясняющие обсуждаемые далее методы. Для простоты все выкладки производятся для одного уровня разложения и для

одномерного сигнала четной длины. Пусть {cn0 }nN=01 - исходный сигнал, где верхний индекс показывает уровень разложения (0), нижний – конкретную точку сигнала. Пусть {c1n }nN=1 01 и {dn1 }nN=1 01 - составляющие его разложения на первом уровне (низкочастотная и высокочастотная части, соответственно). Здесь N1 = N / 2 .

Пример1. Целочисленное вычисление вейвлет–преобразования (2,2).

Это преобразование эквивалентно вейвлет-преобразованию Хаара, использующему следующие фильтры декомпозиции:

~

~

~

~

= 1/ 2 .

h0

= h1

= g 0

= −g1

Вычисление ведется следующим образом:

dk1 = c20k c20k +1 , k = 0,..., N1 1 ,

(7.1)

104

1

dk1

 

 

0

 

 

 

 

ck

= int

 

 

 

+ c2k +1

,

k = 0,..., N1 − 2 ,

(7.2)

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d 1

 

 

 

 

 

c1

 

= int

N1 1

+ c0

.

(7.3)

 

 

 

 

 

N1 1

 

 

 

2

 

N 1

 

 

 

 

 

 

 

 

 

 

 

 

В выражениях (7.2), (7.3) int означает операцию округления. Таким образом, все элементы {c1n }nN=1 01 и {dn1 }nN=1 01 будут целыми числами. Из (7.1)-(7.3) легко получить алгоритм реконструкции:

0

1

 

dk1

 

 

 

c2k +1

= ck

− int

 

 

, k = 0,..., N1

−1 ,

(7.4)

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

c20k

= dk1

+ c20k +1 ,

k = 0,..., N1 −1 .

(7.5)

Пример 2. Вейвлет-преобразование Лэйзи.

Вейвлет-преобразование Лэйзи заключается в простом разбиении входного сигнала на четную и нечетную части. На этапах декомпозиции и реконструкции используются одни и те же формулы:

ck1

= c20k ,

k = 0,...,.N1 − 1,

d1

= c0

, k = 0,..., N

 

(7.6)

1

− 1.

k

2 k +1

 

 

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

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

Известно, что значения высокочастотных вейвлет-коэффициентов малы. Это позволяет сохранять точность во время вычисления коэффициентов. Рассмотрим целочисленные вычисления, выполняемые компьютером. Большинство компьютеров использует дополнительный код. Пусть необходимо найти разность двух целых чисел c = b a и выполнить обратное вычисление a = b c . Вычисления на компьютере выполняются следующим образом:

105

 

 

b a,

при 2 q 1

b-a < 2 q-1 -1,

cm

 

 

 

q

+ b a,

при b a 2

q 1

,

 

 

= - 2

 

 

 

 

 

 

 

 

 

q

+ b-a,

при b a < −2

q 1

,

 

 

 

2

 

 

 

 

и обратная величина находится, как

 

 

 

 

 

 

 

 

 

b cm ,

при 2 q 1

b-cm < 2 q-1 -1,

am

 

 

 

 

+ b cm ,

при b cm

2 q 1 ,

 

= - 2q

 

 

 

 

q

+ b-cm ,

при b cm

< −2

q

1

,

 

 

2

 

 

 

где индекс m означает внутреннее представление, а числа a, b, c находятся в пределах [2q1 ,2q1 1]. Если cm оказывается вне диапазона, его внутреннее представление может не совпадать с внешним значением c . Например, пусть b = 2 (0000010) и a = −127 (100000001). Тогда cm имеет следующее внутреннее представление: (100000001) при q = 8 . C другой стороны, при cm = −127 am будет равно a .

Пример 3. Целочисленное вычисление вейвлет-преобразования (2,6). Данное преобразование эквивалентно использованию следующих фильт-

ров анализа:

~

= {0,0,1/ 2,1/ 2,0,0},

~

= {1/16,1/16,1/ 2,1/ 2,1/16,1/16}.

hn

gn

Декомпозиция выполняется аналогично примеру 1 с добавлением еще одного шага. Вначале производятся вычисления по формулам (7.1)-(7.3).

Вместо d01 в данных формулах теперь используется обозначение d01,0 . Затем производится изменение высокочастотных коэффициентов по формулам:

d

d

1

c01

c11

 

 

1,0

 

 

 

0

= int

 

 

 

 

d0

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

(7.7)

 

ck1

1 ck1

 

 

 

 

 

1

+1

 

1,0

 

 

k

= int

 

 

 

 

 

dk

, k = 1,..., N1

2,

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

c1

c1

 

 

1,0

 

 

N1 2

N1

1

 

dN1 1

= int

 

 

 

 

dN1 1 .

(7.8)

 

4

 

 

 

 

 

 

 

 

 

 

 

106

 

 

 

 

Алгоритм реконструкции аналогичен алгоритму декомпозиции. Он выполняется в «обратном» порядке:

d

d

1,0

0

1,0 k

c1

c1

 

 

 

 

 

 

 

 

 

 

= int

0

 

1

 

d1

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(7.9)

c1

 

c1

 

 

 

 

 

 

 

 

1

 

 

 

1

 

 

 

 

= int

k

 

k +1

 

d

 

,

k = 1,..., N

 

− 2,

 

 

 

 

k

1

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

 

 

d1,0

= int

cN1 2

 

cN1 1

 

d1

(7.10)

 

 

 

N1 1

 

 

4

 

 

N1 1

 

 

 

 

 

 

 

 

и, далее, по формулам (7.4)-(7.5) с заменой в них d01

на d01,0 .

 

 

 

 

Пример 4. Целочисленное вычисление вейвлет –преобразования (1,3).

 

Это нелинейное преобразование является разновидностью преобразова-

ния, использующего

 

 

биортогональную

пару

фильтров:

~

 

 

hn = {1,0,0},

~

= {1/ 4,−1/ 2,1/ 4}. Вычисления начинаются с вейвлета Лэйзи (7.6) с после-

gn

дующим изменением высокочастотных коэффициентов:

 

 

 

 

 

 

 

 

 

1

 

c1

+ c1

 

 

 

1,0

 

 

 

 

 

 

 

 

 

 

 

 

d

 

= int

k

 

k +1

d

 

,

 

 

k = 0,..., N

 

− 2,

 

 

k

 

 

 

 

k

 

 

1

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

(7.11)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

 

 

 

1,0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dN1 1 = cN1 1

dN1 1 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Реконструкция выполняется следующим образом:

 

 

 

 

 

 

 

 

 

 

 

c20k = ck1 ,

k = 0,..., N1 − 1,

 

 

 

 

 

(7.12)

 

 

 

0

 

 

c0

+ c0

2

 

 

 

1

 

 

 

 

 

 

 

 

 

 

c

2k +1

= int

 

2 k

 

2k +

 

d

 

,

k

= 0,..., N

 

− 2,

 

 

 

 

 

 

 

k

1

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

(7.13)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cN 1

= cN 2 dN1 1 .

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример 5. Целочисленное вычисление вейвлет –преобразования (5,3). Это преобразование также является разновидностью биортогонального

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

107

~

= {−1/ 8,1/ 4,3 / 4,1/ 4,−1/ 8},

~

 

 

= {1/ 4,−1/ 2,1/ 4,0,0}.

hn

gn

 

Декомпозиция производится следующим образом:

 

 

 

 

 

 

 

 

 

 

 

 

ck1,0

= c20k ,

k = 0,..., N1 −1,

 

 

 

 

 

 

 

 

 

 

1

 

 

 

c0

 

+ c0

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

d

 

= int

2 k

 

 

 

2 k + 2

c

 

 

+1

,

k =

0,..., N

 

− 2,

 

k

 

 

 

 

 

 

 

 

 

2k

1

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

0

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dN1 1 = cN 2

cN 1 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c1

= c1,0

− int

 

 

0

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

1

 

+ d

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

1,0

 

 

 

 

k

1

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

= c

 

− int

 

 

 

 

 

,

k

=

0,..., N

 

− 2,

 

k

k

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

1

 

 

 

+ d

1

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

1,0

 

 

 

 

 

 

 

N1 2

N1 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cN

1 1

= cN1 2

− int

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Реконструкция осуществляется по следующим формулам :

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

1

 

 

 

d01

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c0

= c0

+ int

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

1

 

 

 

 

 

dk11 + dk1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c2k

= ck

+ int

 

 

 

 

 

 

 

 

 

,

 

 

k

= 1,..., N1 − 2 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

1

 

 

 

+ d 1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

c0

 

= c1

 

+ int

 

 

N1 2

 

N1

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N 2

 

 

 

N1 1

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

c20k + c20k +2

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

c2k +1

= int

 

 

 

 

 

 

 

 

 

 

 

dk

, k

= 0,..., N1 - 2 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c0 = c0 d1 .

N 1 N 2 N1 2

108

(7.14)

(7.15)

(7.16)

(7.17)

(7.18)

(7.19)

(7.20)