Классически, DWT задан для последовательностей с длиной некоторой степени 2, и необходимы различные способы расширить выборки других размеров. Методы для расширения сигнала включают дополнение нуля, сглаженное дополнение, периодическое расширение и репликацию граничного значения (симметризация).
Основной алгоритм для DWT не ограничивается двухместной длиной и основан на простой схеме: свертка и субдискретизация. Как обычно, когда свертка выполняется на сигналах конечной длины, искажения границы возникают.
Чтобы иметь дело с искажениями границы, граница должна быть обработана по-другому по сравнению с другими частями сигнала.
Различные методы доступны, чтобы иметь дело с этой проблемой, называемой “вейвлетами на интервале” (см. [CohDJV93] в Ссылках). Эти интересные конструкции являются эффективными при теории, но являются не совсем удовлетворительными с практической точки зрения.
Часто желательно использовать простые схемы на основе расширения сигнала на контурах. Это включает расчет нескольких дополнительных коэффициентов на каждом этапе процесса разложения, чтобы получить совершенную реконструкцию. Нужно отметить, что расширение необходимо на каждом этапе процесса разложения.
Детали об объяснении этих схем находятся в Главе 8 книги Вейвлеты и Наборы фильтров Странгом и Нгуеном (см. [StrN96] в Ссылках).
Доступные дополнительные режимы сигнала можно следующим образом (см. dwtmode
):
Дополнение нуля ('zpd'
): Этот метод используется в версии DWT, данного в предыдущих разделах, и принимает, что сигнал является нулем вне исходной поддержки.
Недостаток дополнения нуля - то, что разрывы искусственно создаются на границе.
Симметризация ('sym'
): Этот метод принимает, что сигналы или изображения могут быть восстановлены вне их исходной поддержки симметричной репликацией граничного значения.
Это - режим по умолчанию вейвлета, преобразовывают в тулбокс.
Симметризация имеет недостаток искусственного создания разрывов первой производной на границе, но этот метод работает хорошо в целом на изображения.
Сглаженное дополнение порядка 1 ('spd'
или 'sp1'
): Этот метод принимает, что сигналы или изображения могут быть восстановлены вне их исходной поддержки простой производной экстраполяцией первого порядка: дополнение использования линейной дополнительной подгонки к первым двум и последним двум значениям.
Сглаженное дополнение работает хорошо в целом на сглаженные сигналы.
Сглаженное дополнение порядка 0 ('sp0'
): Этот метод принимает, что сигналы или изображения могут быть восстановлены вне их исходной поддержки простой постоянной экстраполяцией. Для расширения сигнала это - повторение первого значения на левых и последнего значения справа.
Периодическое дополнение (1) ('ppd'
): Этот метод принимает, что сигналы или изображения могут быть восстановлены вне их исходной поддержки периодическим расширением.
Недостаток периодического дополнения - то, что разрывы искусственно создаются на границе.
DWT, сопоставленный с этими пятью режимами, немного избыточен. Но IDWT гарантирует совершенную реконструкцию для любого из пяти предыдущих режимов вообще дополнительный режим, используемый в DWT.
Периодическое дополнение (2) ('per'
): Если длина сигнала нечетна, сигнал сначала расширен путем добавления дополнительной выборки, равной последнему значению справа. Затем минимальное периодическое расширение выполняется на каждой стороне. Тот же вид правила существует для изображений. Этот дополнительный режим используется в SWT (1D & 2D).
Этот последний режим производит самое маленькое разложение вейвлета длины. Но дополнительный режим, используемый в IDWT, должен быть тем же самым, чтобы гарантировать совершенную реконструкцию.
Перед рассмотрением иллюстративного примера давайте сравним некоторые свойства теоретического Дискретного Преобразования Вейвлета по сравнению с фактическим DWT.
Теоретический DWT применяется к сигналам, которые заданы на бесконечном временном интервале длины (Z). Для ортогонального вейвлета это преобразование имеет следующие желательные свойства:
Сохранение нормы
Позвольте cA, и cD быть приближением и деталью коэффициентов DWT бесконечной длины сигнализирует о X. Затем 2-норма l сохраняется:
‖X‖2 = ‖cA‖2 + ‖cD‖2
Ортогональность
Позвольте A и D быть восстановленным приближением и деталью. Затем A и D являются ортогональными и
‖X‖2 = ‖A‖2 + ‖D‖2
Совершенная реконструкция
X = A + D
Поскольку DWT применяется к сигналам, которые заданы на временном интервале конечной длины, расширение необходимо для разложения, и усечение необходимо для реконструкции.
Гарантировать решающее свойство 3 (совершенная реконструкция) для произвольного выбора
Длина сигнала
Вейвлет
Дополнительный режим
имущества 1 и 2 могут быть утрачены. Эти свойства сохраняются для расширенного сигнала длины, обычно больше, чем длина исходного сигнала. Таким образом, только совершенное свойство реконструкции всегда сохраняется. Тем не менее, если DWT выполняется с помощью периодического дополнительного режима ('per
') и если длина сигнала является делимой 2J, где J является разложением максимального уровня, свойства 1, 2, и 3 остаются верными.
Интересно заметить, что, если произвольное расширение используется, и разложение, выполнил использование прореживающей свертку схемы, совершенная реконструкция восстанавливается с помощью idwt
или idwt2
. Этот тезис проиллюстрирован ниже.
% Set initial signal and get filters. x = sin(0.3*[1:451]); w = 'db9'; [Lo_D,Hi_D,Lo_R,Hi_R] = wfilters(w); % In fact using a slightly redundant scheme, any signal % extension strategy works well. % For example use random padding.
lx = length(x); lf = length(Lo_D); ex = [randn(1,lf) x randn(1,lf)]; axis([1 lx+2*lf -2 3]) subplot(211), plot(lf+1:lf+lx,x), title('Original signal') axis([1 lx+2*lf -2 3]) subplot(212), plot(ex), title('Extended signal') axis([1 lx+2*lf -2 3]) % Decomposition. la = floor((lx+lf-1)/2); ar = wkeep(dyaddown(conv(ex,Lo_D)),la); dr = wkeep(dyaddown(conv(ex,Hi_D)),la); % Reconstruction. xr = idwt(ar,dr,w,lx); % Check perfect reconstruction. err0 = max(abs(x-xr))
Теперь давайте проиллюстрируем различия между первыми тремя методами и для 1D и 2D сигналов.
Дополнение нуля
Используя приложение Wavelet Analysis мы исследуем эффекты дополнения нуля.
От подсказки MATLAB® ввести
dwtmode('zpd')
От посдказки MATLAB введите waveletAnalyzer
.
Wavelet Analyzer появляется.
Кликните по пункту меню Wavelet 1-D. Дискретный аналитический инструмент вейвлета для 1D данных сигнала появляется.
В меню File выберите Аналитическую опцию В качестве примера и выберите Basic Signals> с db2 на уровне 5> Два соседних разрыва.
Выберите Display Mode: покажите и прокрутите.
Коэффициенты детали ясно показывают эффекты конца сигнала.
Симметричное расширение
От посдказки MATLAB ввести
dwtmode('sym')
Кликните по пункту меню Wavelet 1-D.
Дискретный аналитический инструмент вейвлета для 1D данных сигнала появляется.
В меню File выберите Аналитическую опцию В качестве примера и выберите Basic Signals> с db2 на уровне 5> Два соседних разрыва.
От посдказки MATLAB ввести
dwtmode('spd')
Кликните по пункту меню Wavelet 1-D.
Дискретный аналитический инструмент вейвлета для 1D данных сигнала появляется.
В меню File выберите Аналитическую опцию В качестве примера и выберите Basic Signals> с db2 на уровне 5> Два соседних разрыва.
Выберите Display Mode: покажите и прокрутите.
Коэффициенты детали показывают, что эффекты конца сигнала не присутствуют, и разрывы хорошо обнаруживаются.
Давайте теперь рассмотрим пример изображений.
Оригинальное изображение
От посдказки MATLAB ввести
load geometry; % X contains the loaded image and % map contains the loaded colormap. nbcol = size(map,1); colormap(pink(nbcol)); image(wcodemat(X,nbcol));
Дополнение нуля
Теперь мы устанавливаем дополнительный режим на дополнение нуля и выполняем разложение изображения к уровню 3 с помощью sym4
вейвлет. Затем мы восстанавливаем приближение уровня 3.
От посдказки MATLAB ввести
lev = 3; wname = 'sym4'; dwtmode('zpd') [c,s] = wavedec2(X,lev,wname); a = wrcoef2('a',c,s,wname,lev); image(wcodemat(a,nbcol));
Симметричное расширение
Теперь мы устанавливаем дополнительный режим на симметричное расширение и выполняем разложение изображения снова к уровню 3 с помощью sym4
вейвлет. Затем мы восстанавливаем приближение уровня 3.
От посдказки MATLAB ввести
dwtmode('sym') [c,s] = wavedec2(X,lev,wname); a = wrcoef2('a',c,s,wname,lev); image(wcodemat(a,nbcol));
Сглаженное дополнение
Теперь установите дополнительный режим сглаживать дополнение и выполнять разложение изображения снова к уровню 3 с помощью sym4
вейвлет. Затем восстановите приближение уровня 3.
От посдказки MATLAB ввести
dwtmode('spd') [c,s] = wavedec2(X,lev,wname); a = wrcoef2('a',c,s,wname,lev); image(wcodemat(a,nbcol));