В 1988 году Маллат выпустил алгоритм быстрого вейвлета разложения и реконструкции [1]. Алгоритм Mallat для дискретного вейвлет (DWT) является, по сути, классической схемой в сообществе обработки сигналов, известной как двухканальный поддиапазонный кодер, использующий сопряженные квадратурные фильтры или квадратурные зеркальные фильтры (QMF).
Алгоритм разложения начинается с сигнала s, затем вычисляет координаты A 1 и D 1, а затем координаты A 2 и D 2 и так далее.
Алгоритм реконструкции, называемый обратным дискретным вейвлет (IDWT), начинается с координат AJ и DJ, затем вычисляет координаты AJ -1, а затем с помощью координат AJ -1 и DJ -1 вычисляет координаты AJ -2 и так далее.
В этом разделе рассматриваются следующие темы:
Для ортогонального вейвлета, в среде мультиразрешения, мы начинаем с функции масштабирования, и функции вейвлета. Одним из фундаментальных отношений является отношение двойной шкалы (уравнение расширения или уравнение уточнения):
Все фильтры, используемые в DWT и IDWT, тесно связаны с последовательностью
(<reservedrangesplaceholder1>) n∊Z
Очевидно, что, если и поддерживается компактно, последовательность (wn) является конечной и может рассматриваться как фильтр. Фильтрующая W, которая называется масштабирующим фильтром (nonnormalized), является
Конечная импульсная характеристика (КИХ)
Длины 2 N
Из суммы 1
Нормы
Нормы 1
Фильтр lowpass
Для примера, для db3
масштабирующий фильтр,
load db3 db3 db3 = 0.2352 0.5706 0.3252 -0.0955 -0.0604 0.0249 sum(db3) ans = 1.0000 norm(db3) ans = 0.7071
Из фильтра W задаем четыре КИХ-фильтра, длиной 2 N и нормой 1, организованные следующим образом .
Фильтры | Низкочастотные | High-Pass |
---|---|---|
Разложение | Lo_D | Hi_D |
Реконструкция | Lo_R | Hi_R |
Четыре фильтра вычисляются с помощью следующей схемы.
где qmf
таковы, что Hi_R и Lo_R являются квадратурными зеркальными фильтрами (т.е. Hi_R (k) = (-1 )k Lo_R (2 N + 1 - k)) для k = 1, 2,..., 2 N.
Обратите внимание, что wrev
разворачивает коэффициенты фильтра. Так Hi_D и Lo_D также являются квадратурными зеркальными фильтрами. Расчет из этих фильтров выполняется с помощью orthfilt
. Далее мы иллюстрируем эти свойства с db6
вейвлет.
Загрузите фильтр экстремального масштабирования фазы Daubechies и постройте график коэффициентов.
load db6; subplot(421); stem(db6,'markerfacecolor',[0 0 1]); title('Original scaling filter');
Использовать orthfilt
для возврата фильтров анализа (разложения) и синтеза (реконструкции).
Получите дискретные преобразования Фурье (DFT) фильтров lowpass и highpass анализа. Постройте график модуля ДПФ.
LoDFT = fft(Lo_D,64); HiDFT = fft(Hi_D,64); freq = -pi+(2*pi)/64:(2*pi)/64:pi; subplot(427); plot(freq,fftshift(abs(LoDFT))); set(gca,'xlim',[-pi,pi]); xlabel('Radians/sample'); title('DFT Modulus - Lowpass Filter') subplot(428); plot(freq,fftshift(abs(HiDFT))); set(gca,'xlim',[-pi,pi]); xlabel('Radians/sample'); title('Highpass Filter');
Учитывая s сигнала длины N, DWT состоит не более чем из N каскадов log2. Начиная с s, первый шаг производит два набора коэффициентов: коэффициенты аппроксимации cA 1 и коэффициенты детализации cD 1. Эти векторы получаются путем свертки s с Lo_D фильтра нижних частот для аппроксимации и с Hi_D фильтра высоких частот для детализации с последующей диадической децимацией.
Точнее, первый шаг -
Длина каждого фильтра равна 2 L. Результат свертки сигнала N длиной 2 L фильтра - N + 2 L -1. Поэтому F и G сигналов имеют длину N + 2 L - 1. После понижающей дискретизации на 2 векторы коэффициентов cA 1 и cD 1 имеют длину
Следующий шаг разделяет коэффициенты аппроксимации cA 1 на две части с помощью одной и той же схемы, заменяя s на cA 1 и получая cA 2 и cD 2 и так далее.
Таким образом, вейвлет разложение s сигнала, анализируемого на уровне j, имеет следующую структуру: [cAj, cDj,..., cD 1].
Эта структура содержит для J = 3 терминальные узлы следующего дерева.
С другой стороны, начинаясь с <reservedrangesplaceholder5> <reservedrangesplaceholder4> и <reservedrangesplaceholder3> <reservedrangesplaceholder2>, IDWT восстанавливает <reservedrangesplaceholder1> <reservedrangesplaceholder0>-1, инвертируя шаг разложения, вставляя нули и скручивая результаты с фильтрами реконструкции.
Для изображений аналогичный алгоритм возможен для двумерных вейвлетов и функций масштабирования, полученных из 1-D вейвлетов тензорным продуктом.
Этот вид 2-D DWT приводит к разложению коэффициентов аппроксимации на уровне j в четырех компонентах: приближение на уровне j + 1 и детали в трех ориентациях (горизонтальной, вертикальной и диагональной).
Следующие графики описывают основные шаги разложения и реконструкции для изображений.
Так, для J = 2 2-D вейвлет имеет следующую форму.
Наконец, давайте упомянем, что для биортогональных вейвлеты же алгоритмы выполняются, но фильтры разложения, с одной стороны, и фильтры реконструкции, с другой стороны, получаются из двух различных масштабирующих функций, связанных с двумя мультиразрешениями в двойственности.
В этом случае фильтры для разложения и реконструкции в целом имеют различные нечетные длины. Эта ситуация происходит, например, для биортогональных вейвлеты «сплайнов», используемых в тулбоксе. Путем заполнения нулями четыре фильтра могут быть расширены таким образом, что они будут иметь одинаковую четную длину.
Предыдущий абзац описывает алгоритмы, разработанные для сигналов или изображений конечной длины. Чтобы понять обоснование, мы должны рассмотреть сигналы бесконечной длины. Методы расширения заданного сигнала конечной длины описаны в Border Effects.
Давайте обозначим h = Lo_R и g = Hi_R и сосредоточимся на 1-D случае.
Сначала мы обосновываем, как перейти от уровня j к уровню j + 1, для вектора приближения. Это основной шаг алгоритма разложения для расчета приближений. Детали вычисляются таким же образом с помощью g фильтра вместо h фильтра.
Предположим (Ak(j)) k ∊ Z быть координатами вектора Aj:
и Ak(j+1) координаты вектора Aj + 1:
Ak(j+1) вычисляется по формуле
Эта формула напоминает формулу свертки.
Расчет очень простое.
Давайте определим
Последовательность F(j+1) - отфильтрованный выход последовательности A(j) фильтром .
Получаем
Ak(j+1) = <reservedrangesplaceholder1> 2 <reservedrangesplaceholder0>(j+1)
Мы должны взять четные значения индекса F. Это понижающая дискретизация.
Последовательность A(j+1) - версия последовательности с понижающей дискретизацией F(j+1).
Инициализация осуществляется с помощью Ak(0) = s (k), где s (k) - значение сигналов в момент k.
Существует несколько причин для этого удивительного результата, все из которых связаны с ситуацией мультиразрешения и с некоторыми свойствами функций и j,k j,k .
Давайте опишем некоторые из них.
Семейство формируется из ортонормальных функций. Как следствие для любого j, семейство ортонормальный.
Семейство с двойным индексом
ортонормальный.
Для любого j, являются ортогональными .
Между двумя последовательными шкалами мы имеем фундаментальное отношение, называемое отношением двойной шкалы.
Двойное соотношение шкалы для | |
---|---|
|
|
Это отношение представляет h фильтр алгоритма . Для получения дополнительной информации см. раздел «Фильтры, используемые для вычисления DWT и IDWT».
Проверяем, что:
Координата и j, 1,0 на j,k , hk и не зависит от j.
Координата φ <reservedrangesplaceholder2> +1 , n на φ <reservedrangesplaceholder0> равна.
Эти отношения обеспечивают ингредиенты для алгоритма.
До сих пор мы использовали фильтр h. Высокочастотный фильтрующий g используется в двойном соотношении шкал, связывающем функции Между двумя последовательными шкалами у нас есть следующее двухкомпонентное фундаментальное соотношение.
Двухкомпонентное соотношение между и | |
---|---|
|
|
После шага разложения мы обосновываем теперь алгоритм реконструкции, построив его. Давайте упростим обозначение. Начиная с A 1 и D 1, давайте изучим A 0 = A 1 + Dj 1. Процедура такая же, чтобы вычислить A = Aj + 1 + Dj + 1.
Давайте определим α <reservedrangesplaceholder1> , δ <reservedrangesplaceholder0>, около
Давайте оценим координаты как
Мы сосредоточим наше исследование на первой сумме вторая сумма обрабатывается аналогичным образом.
Вычисления легко организовать, если заметим, что (взятие k = 0 в предыдущих формулах, делает вещи проще)
Если мы преобразуем последовательность в новую последовательность определяется как
..., α–1, 0, α0, 0, α1, 0, α2, 0, ... то есть именно
Тогда
и продлением
С тех пор
этапы реконструкции:
Замените α и δ последовательности сверхдискретизированными версиями α ˜ и вставка нулей.
Фильтрация по h и g соответственно.
Суммируйте полученные последовательности.
Объекты | Описание | |
---|---|---|
Сигнал в исходном времени | s Ak, 0 ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0> Dk, 1 ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0> | Исходный сигнал Приближение на уровне k Детализация на уровне k |
Коэффициенты во времени, связанном с масштабом | cAk, 1 ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0> cDk, 1 ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0> [cAj, cDj..., <reservedrangesplaceholder0> 1] | Приближения на уровне k Коэффициенты детализации на уровне k Вейвлет на уровне j, j ≥ 1 |
Цель | Вход | Выход | Файл |
---|---|---|---|
Одноуровневое разложение | s | <reservedrangesplaceholder1> 1, <reservedrangesplaceholder0> 1 | dwt |
Одноуровневое разложение | cAj | <reservedrangesplaceholder1> +1, <reservedrangesplaceholder0> +1 | dwt |
Разложение | s | [cAj, cDj..., <reservedrangesplaceholder0> 1] | wavedec |
Цель | Вход | Выход | Файл |
---|---|---|---|
Одноуровневая реконструкция | <reservedrangesplaceholder1> 1, <reservedrangesplaceholder0> 1 | s или A 0 | idwt |
Одноуровневая реконструкция | <reservedrangesplaceholder1> +1, <reservedrangesplaceholder0> +1 | cAj | idwt |
Полная реконструкция | [cAj, cDj..., <reservedrangesplaceholder0> 1] | s или A 0 | waverec |
Выборочная реконструкция | [cAj, cDj..., <reservedrangesplaceholder0> 1] | Al, Dm | wrcoef |
Цель | Вход | Выход | Файл |
---|---|---|---|
Экстракция коэффициентов детализации | [cAj, cDj..., <reservedrangesplaceholder0> 1] | cDk, 1 ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0> | detcoef |
Экстракция коэффициентов приближения | [cAj, cDj..., <reservedrangesplaceholder0> 1] | cAk, 0 <reservedrangesplaceholder1> <reservedrangesplaceholder0> | appcoef |
Перекомпозиция структуры разложения | [cAj, cDj..., <reservedrangesplaceholder0> 1] | [cAk, cDk..., <reservedrangesplaceholder2> 1] 1 ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0> | upwlev |
Чтобы проиллюстрировать режим командной строки для 1-D возможностей, смотрите 1-D Анализ с использованием командной строки..
Объекты | Описание | |
---|---|---|
Изображение в исходном разрешении | s | Оригинальное изображение |
<reservedrangesplaceholder0> 0 | Приближение на уровне 0 | |
Ak, 1 ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0> | Приближение на уровне k | |
Dk, 1 ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0> | Детали на уровне k | |
Коэффициенты в масштабном разрешении | cAk, 1 ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0> | Приближения на уровне k |
cDk, 1 ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0> | Коэффициенты детализации на уровне k | |
[cAj, cDj..., <reservedrangesplaceholder0> 1] | Вейвлет на уровне j |
Dk означает , горизонтальные, вертикальные и диагональные детали на уровне k.
То же самое относится и к cDk, которая обозначает .
Файлы 2-D те же, что и для 1-D случая, но с 2
в конце команды.
Для примера, idwt
становится idwt2
. Для получения дополнительной информации смотрите 1-D Возможности вейвлета.
Чтобы проиллюстрировать режим командной строки для возможностей 2-D, смотрите Вейвлет Изображения Анализ и сжатие..
[1] Mallat, S. G. «A Theory for Multirresolution Signal Decomposition: The Wavelet Representation», IEEE Transactions on Pattern Analysis and Machine Intelligence. Том 11, выпуск 7, июль 1989 года, стр. 674-693.