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. Программа и результат матричного вейвлетного преобразования .
|