Главная
Новости
Строительство
Ремонт
Дизайн и интерьер

















Яндекс.Метрика

Дискретное вейвлет-преобразование

В численном и функциональном анализе дискретные вейвлет-преобразования (ДВП) относятся к вейвлет-преобразованиям, в которых вейвлеты представлены дискретными сигналами (выборками).

Первое ДВП было придумано венгерским математиком Альфредом Хааром. Для входного сигнала, представленного массивом 2n чисел, вейвлет-преобразование Хаара просто группирует элементы по 2 и образует от них суммы и разности. Группировка сумм проводится рекурсивно для образования следующего уровня разложения. В итоге получается 2n−1 разность и 1 общая сумма.

Это простое ДВП иллюстрирует общие полезные свойства вейвлетов. Во-первых, преобразование можно выполнить за n log 2 ⁡ ( n ) {displaystyle nlog _{2}(n)} операций. Во-вторых, оно не только раскладывает сигнал на некоторое подобие частотных полос (путём анализа его в различных масштабах), но и представляет временную область, то есть моменты возникновения тех или иных частот в сигнале. Вместе эти свойства характеризуют быстрое вейвлет-преобразование — возможную альтернативу обычному быстрому преобразованию Фурье. При принятии условия случайности сигнала Х спектральную плотность его амплитуд Y вычисляют на основе алгоритма Ийетса: matrixY=matrix(±X), верно и обратное matrixX=matrix(±Y).

Самый распространенный набор дискретных вейвлет-преобразований был сформулирован бельгийским математиком Ингрид Добеши (Ingrid Daubechies) в 1988 году. Он основан на использовании рекуррентных соотношений для вычисления всё более точных выборок неявно заданной функции материнского вейвлета с удвоением разрешения при переходе к следующему уровню (масштабу). В своей основополагающей работе Добеши выводит семейство вейвлетов, первый из которых является вейвлетом Хаара. С тех пор интерес к этой области быстро возрос, что привело к созданию многочисленных потомков исходного семейства вейвлетов Добеши.

Другие формы дискретного вейвлет-преобразования включают непрореженное вейвлет-преобразование (где не выполняется прореживания сигналов), преобразование Ньюлэнда (где ортонормированный базис вейвлетов выводится из специальным образом построенных фильтров типа «top-hat» в частотной области). Пакетные вейвлет-преобразования также связаны с ДВП. Другая форма ДВП — комплексное вейвлет-преобразование.

У дискретного вейвлет-преобразования много приложений в естественных науках, инженерном деле, математике (включая прикладную). Наиболее широко ДВП используется в кодировании сигналов, где свойства преобразования используются для уменьшения избыточности в представлении дискретных сигналов, часто — как первый этап в компрессии данных.

Определение

Один уровень преобразования

ДВП сигнала x {displaystyle x} получают применением набора фильтров. Сначала сигнал пропускается через низкочастотный (low-pass) фильтр с импульсным откликом g {displaystyle g} , и получается свёртка:

y [ n ] = ( x ∗ g ) [ n ] = ∑ k = − ∞ ∞ x [ k ] g [ n − k ] {displaystyle y[n]=(x*g)[n]=sum limits _{k=-infty }^{infty }{x[k]g[n-k]}}

Одновременно сигнал раскладывается с помощью высокочастотного (high-pass) фильтра h {displaystyle h} . В результате получаются детализирующие коэффициенты (после ВЧ-фильтра) и коэффициенты аппроксимации (после НЧ-фильтра). Эти два фильтра связаны между собой и называются квадратурными зеркальными фильтрами (QMF).

Так как половина частотного диапазона сигнала была отфильтрована, то, согласно теореме Котельникова, отсчёты сигналов можно проредить в 2 раза:

y l o w [ n ] = ∑ k = − ∞ ∞ x [ k ] g [ 2 n − k ] {displaystyle y_{mathrm {low} }[n]=sum limits _{k=-infty }^{infty }{x[k]g[2n-k]}} y h i g h [ n ] = ∑ k = − ∞ ∞ x [ k ] h [ 2 n − k ] {displaystyle y_{mathrm {high} }[n]=sum limits _{k=-infty }^{infty }{x[k]h[2n-k]}}

Такое разложение вдвое уменьшило разрешение по времени в силу прореживания сигнала. Однако каждый из получившихся сигналов представляет половину частотной полосы исходного сигнала, так что частотное разрешение удвоилось.

Схема разложения сигнала в ДВП

С помощью оператора прореживания ↓ {displaystyle downarrow }

( y ↓ k ) [ n ] = y [ k n ] {displaystyle (ydownarrow k)[n]=y[kn]}

вышеупомянутые суммы можно записать короче:

y l o w = ( x ∗ g ) ↓ 2 {displaystyle y_{mathrm {low} }=(x*g)downarrow 2} y h i g h = ( x ∗ h ) ↓ 2 {displaystyle y_{mathrm {high} }=(x*h)downarrow 2}

Вычисление полной свёртки x ∗ g {displaystyle x*g} с последующим прореживанием — это излишняя трата вычислительных ресурсов.

Схема лифтинга является оптимизацией, основанной на чередовании этих двух вычислений.

Каскадирование и банки фильтров

Это разложение можно повторить несколько раз для дальнейшего увеличения частотного разрешения с дальнейшим прореживанием коэффициентов после НЧ и ВЧ-фильтрации. Это можно представить в виде двоичного дерева, где листья и узлы соответствуют пространствам с различной частотно-временной локализацией. Это дерево представляет структуру банка (гребёнки) фильтров.

Трехуровневый банк (гребёнка) фильтров

На каждом уровне вышеприведённой диаграммы сигнал раскладывается на низкие и высокие частоты. В силу двукратного прореживания длина сигнала должна быть кратна 2 n {displaystyle 2^{n}} , где n {displaystyle n} — число уровней разложения.

Например, для сигнала из 32 отсчётов с частотным диапазоном от 0 до f n {displaystyle f_{n}} трёхуровневое разложение даст 4 выходных сигнала в разных масштабах:

Представление ДВП в частотной области

Пример программы

Алгоритм Хаара

Пример быстрого одномерного вейвлет-преобразования, используя вейвлет Хаара, для массива исходных данных размером 2N (число каскадов фильтров, соответственно, равно N) на языке C#:

public static List<Double> DirectTransform(List<Double> SourceList) { if (SourceList.Count == 1) return SourceList; List<Double> RetVal = new List<Double>(); List<Double> TmpArr = new List<Double>(); for (int j = 0; j < SourceList.Count - 1; j+=2) { RetVal.Add((SourceList[j] - SourceList[j + 1]) / 2.0); TmpArr.Add((SourceList[j] + SourceList[j + 1]) / 2.0); } RetVal.AddRange(DirectTransform(TmpArr)); return RetVal; }

Аналогично, пример обратного вейвлет-преобразования:

public static List<Double> InverseTransform(List<Double> SourceList) { if (SourceList.Count == 1) return SourceList; List<Double> RetVal = new List<Double>(); List<Double> TmpPart = new List<Double>(); for (int i = SourceList.Count / 2; i < SourceList.Count; i++) TmpPart.Add(SourceList[i]); List<Double> SecondPart = InverseTransform(TmpPart); for (int i = 0; i < SourceList.Count / 2; i++) { RetVal.Add(SecondPart[i] + SourceList[i]); RetVal.Add(SecondPart[i] - SourceList[i]); } return RetVal; }


Двумерное вейвлет-преобразование

При разработке нового стандарта JPEG-2000 для сжатия изображения было выбрано вейвлет-преобразование. Само вейвлет-преобразование не сжимает данные, но позволяет таким образом преобразовать входное изображение, что без заметного ухудшения качества изображения можно сократить его избыточность.