Korzystanie z ciągłych wierszy dyskretnej transformacji falkowej w aplikacjach cyfrowych

14

Znam wiele matematycznych podstaw falek. Jednak przy wdrażaniu algorytmów na komputerze z falkami nie jestem pewien, czy powinienem używać ciągłych czy dyskretnych falek. W rzeczywistości wszystko na komputerze jest oczywiście dyskretne, więc wydaje się oczywiste, że dyskretne falki są właściwym wyborem do cyfrowego przetwarzania sygnałów. Jednak według wikipedii jest to ciągła transformacja falkowa stosowana głównie w (cyfrowej) kompresji obrazu, a także w wielu innych czynnościach związanych z przetwarzaniem danych cyfrowych. Jakie zalety i wady należy wziąć pod uwagę przy podejmowaniu decyzji, czy użyć (przybliżonej) ciągłej transformaty falkowej zamiast (dokładnej) dyskretnej transformaty falkowej do cyfrowego przetwarzania obrazu lub sygnału?

PS (Sprawdzam tutaj założenie) Zakładam, że ciągłe transformaty falkowe są wykorzystywane w przetwarzaniu cyfrowym, po prostu biorąc wartość ciągłej falkowej w równomiernie rozmieszczonych punktach i wykorzystując wynikową sekwencję do obliczeń falkowych. Czy to jest poprawne?

PPS Zazwyczaj wikipedia jest dość precyzyjna w matematyce, więc zakładam, że zastosowania w artykule na temat ciągłych transformacji falkowych są w rzeczywistości aplikacjami ciągłej transformacji falkowej. Z pewnością wspomina o niektórych, które są specjalnie CWT, więc jest oczywiste, że użycie CWT jest pewne w aplikacjach cyfrowych.

John Robertson
źródło

Odpowiedzi:

10

Jak już stwierdził Mohammad, terminy Continuous Wavelet Transforms (CWT) i Discrete Wavelet Transforms (DWT) są nieco mylące. Odnoszą się one w przybliżeniu jako (ciągła) transformata Fouriera (matematyka. Całka) do DFT (dyskretna transformata Fouriera).

Aby zrozumieć szczegóły, dobrze jest spojrzeć na kontekst historyczny. Transformacja falkowa została pierwotnie wprowadzona do geofizyki przez Morleta i była w zasadzie transformacją Gabora z oknem, które rośnie i kurczy się wraz z wybraną skalą / częstotliwością. Później Daubchies (fizyk-ett z Belgii) zdał sobie sprawę, że wybierając specjalne ortogonalne podstawy falkowe, nieskończenie zbędne CWT można krytycznie próbkować na siatce diadadowej. Z uzyskanego DWT można uzyskać odpowiedni pełny CWT przez zwoje DWT z jądrem odtwarzającym odpowiedniej falkowej. Jądro odtwarzające jest CWT samego falki.

Odkrycia Daubchiesa znacznie poprawiły teorię falkową na początku lat 80-tych. Kolejnym dużym rezultatem było to, że DWT może być obliczany bardzo wydajnie (jest to czasami nazywane również FWT [szybka WT]) przy użyciu technik z teorii banków filtrów, a mianowicie kwadraturowych filtrów lustrzanych (QMF) wraz z bankami filtrów próbkowania w dół. Konstruując specjalne QMF, odpowiedni DWT można obliczyć za pomocą filtrowania i próbkowania w dół, który jest najnowocześniejszym algorytmem do obliczania DWT. Nie potrzebujesz funkcji skalowania do obliczenia DWT, to tylko szczegół implementacji przetwarzany przez FWT.

Jeśli chodzi o stronę aplikacji, CWT jest najbardziej idealnym kandydatem do analizy sygnałów lub szeregów czasowych ze względu na bardziej drobnoziarnistą rozdzielczość i jest zwykle wybierany do większości zadań (np. Wykrywania osobliwości). DWT jest bardziej interesujące w kontekście szybkich, niepotrzebnych transformacji. DWT ma bardzo dobre zagęszczenie energii, a zatem jest dobrym kandydatem do stratnych kompresji i transmisji sygnałów.


Mam nadzieję, że to wyjaśniło.

André Bergner
źródło
Dziękuję Andre za historyczną perspektywę i wyjaśnienie dotyczące nazewnictwa. Walczyłem właśnie z powodu zamieszania spowodowanego tymi nazwami!
Yanshuai Cao,
Cześć, czy możesz link do artykułów, które pokazują, co opisujesz? Szczególnie interesuje mnie twój drugi akapit, tj. Sposób, w jaki Daubechies pokazuje, że DWT jest ukończony na siatce dyadycznej, i mogę zrekonstruować CWT za pomocą odtwarzalnego jądra
yannick
6

Bardzo powszechne, ale niefortunne błędne rozumowanie w dziedzinie falek ma związek ze źle sformułowaną terminologią „ciągłych transformacji falkowych”.

Po pierwsze: ciągła transformata falkowa (CWT) i dyskretna transformata falkowa (DWT) są zarówno cyfrowymi transformacjami punkt po punkcie, które można łatwo zaimplementować na komputerze.

Różnica między transformacją „ciągłą” a transformacją „dyskretną” w kontekście falek wynika z:

1) Liczba próbek pomijanych podczas korelacji sygnału z falą.

2) Liczba próbek pomijanych podczas rozszerzania falki.

3) CWT używa tylko falki, podczas gdy DWT używa zarówno falki, jak i skalowania. (Nieistotne dla tej dyskusji, ale tutaj dla kompletności).

Ale nie popełnijcie błędu - CWT, podobnie jak DWT, jest zawsze dyskretną, cyfrową operacją.

Niech ten przykład to zilustruje: Rozważ falkę Haara, [1 -1]. Powiedzmy, że chcieliśmy zrobić DWT z falą Haar. Więc zwołujesz swój sygnał za pomocą falki matki Haara [1–1], ale tylko z opóźnieniem. Powiedzmy na przykład, że twój sygnał jest następującym wektorem:

x=[1 2) 3) 4 5 6 7 8]

Pierwszym wynikiem splotu DWT za pomocą falki Haar jest:

1(-1)+2)(1)

3)(-1)+4(1)

Następne jest:

5(-1)+6(1)

I na koniec ostatni to:

7(-1)+8(1)

Czy coś wydaje ci się dziwne? Powiedziałem: weź swój sygnał za pomocą falki - dlaczego więc mam tylko cztery wartości? Wynika to z tego, że pomijam próbki, gdy wykonuję zwoje w DWT. Najpierw wziąłem [1 2], zrobiłem iloczyn skalarny, a następnie wziąłem [3 4]. Co się stało z [2 3]? Ominąłem to.

Kiedy tego nie pomijasz? Kiedy robisz CWT. Gdybyś zrobił CWT, byłby to „normalny” cyfrowy splot twojego sygnału za pomocą falki Haar.


Drugą rzeczą jest sposób, w jaki rozszerzasz falkę. W najwyższym przykładzie falka Haara ma wartość [1 -1] dla rozkładu pierwszego poziomu. Na drugim poziomie falka Haar DWT staje się [1 1 -1 -1]. Jednak w CWT falka Haar drugiego poziomu to [1 0 -1]. Po raz kolejny w DWT nie rozwijam punktu do punktu - nigdy nie mam falki o trzech długościach. Jednak w CWT przechodzę od długości 2 do długości 3. W DWT poszedłem prosto od długości 2 do długości 4.

To długo i krótko, mam nadzieję, że to pomogło.

Spacey
źródło
1
Chociaż prawdą jest, że w realizacji DSP dowolnej transformaty falkowej (CWT lub DWT), implementacja najprawdopodobniej zostanie wykonana jako dyskretny punkt po punkcie z pomnożeniem przez dyskretną funkcję falkową (podobnie jak sposób formułowania DFT), matematyczna definicja CWT jest ciągła. Istnieją wersje DWT, które zostały opracowane dla danych dyskretnych, więc niektóre implementacje DWT są z definicji dokładne. Każda implementacja CWT jest przybliżeniem, które zostało osiągnięte poprzez przekształcenie operacji kontynuacji (integracji) z ciągłą funkcją falki w operację dyskretną.
user2718
@BruceZenone Na pewno, a definicja z pewnością bierze się z kontekstu. Dwóch matematyków mówiących o „CWT” oznaczałoby ciągłą wersję z całkami, podczas gdy dwóch inżynierów zastanawiających się nad implementacją powiedziałoby „CWT” i oznaczało wersję dyskretną (to nie to samo co DWT), stąd źródło Zamieszanie OP.
Spacey
Prawda prawda Chciałbym zobaczyć dobrze udokumentowaną implementację CWT (powiedzmy Morleta) dla DSP, aby zobaczyć szczegóły, w jaki sposób ciągłe operacje / funkcje są tłumaczone na świat dyskretnego przetwarzania. Zauważ, że transformacje DFT i Fouriera są matematycznie całkiem różnymi bestiami.
user2718