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 пикселов исходного изображения.

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