Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


4.2.1. Матричная форма

В основе преобразования Хаара лежит вычисление средних и разностей. Оказывается, .что эти операции можно легко выразить с помощью умножений соответствующих матриц (см. [Mulcahy 96] и [Mulcahy 97]). Для примера рассмотрим верхнюю строку простого изображения размера 8х8 из рис. 4.8. Каждый, кто немного знаком с операциями над матрицами, легко построит матрицу, которая при умножении на некоторый вектор дает другой вектор, состоящий из четырех полусумм и четырех полуразностей элементов этого вектора. Обозначим эту матрицу . Ее произведение на вектор рассматриваемого примера (верхняя строка матрицы на рис. 4.8) равно (239.5, 175.5, 111.0, 47.5, 15.5, 16.5, 16.0, 15.5). Это видно из уравнения (4.1). Аналогично, матрицы  и  производят, соответственно, второй и третий шаг преобразования. Его результат показан в формуле (4.2).

, ,                   (4.1)

, ,

, .                    (4.2)

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

,

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

.

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

.

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

.

В этом месте становится важным нормализованное преобразование Хаара (упомянутое на стр. 216). Вместо вычисления средних (выражений  и разностей (выражений   лучше вычислять величины  и . Это приводит к ортогональной матрицы , а хорошо известно, что обращение такой матрицы сводится к ее транспонированию. Следовательно, обратное преобразование запишется в простом виде  (см. строку cimg=full(w‘*sparse(dimg)*w на рис. 4.12).

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

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

Пример: Программа Matlab на рис. 4.15 вычисляет  в виде произведения трех матриц ,  и , после чего делает преобразования изображения размера 8х8 из рис. 4.8. Результатом становится матрица 8x8, состоящая из коэффициентов преобразования, в которой верхний левый коэффициент 131.375 равен среднему всех 64 пикселов исходного изображения.

231.jpg

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

 



<< ПредыдущаяОглавлениеСледующая >>