Cohen-Daubechies-Feauveau-Wavelet

Cohen-Daubechies-Feauveau-Wavelets (CDF-Wavelets) sind die historisch gesehen erste Familie der biorthogonalen Wavelets. Sie wurden von Albert Cohen, Ingrid Daubechies und Jean-Christophe Feauveau konstruiert und 1990 vorgestellt.[1] CDF-Wavelets sind zu unterscheiden von den orthogonalen Daubechies-Wavelets, die andere Formen und Eigenschaften besitzen. Beide Wavelettypen gehen auf die gleiche Konstruktionsidee zurück, CDF-Wavelets verzichten zugunsten der Symmetrie auf Orthogonalität der Wavelets (bei Daubechies-Wavelets ist es umgekehrt).

Der JPEG-2000-Kompressionsstandard verwendet das biorthogonale CDF-5/3-Wavelet (auch LeGall-5/3-Wavelet genannt) zur verlustfreien Kompression und das CDF-9/7-Wavelet für die verlustbehaftete Kompression.

Beispiel einer 2D-Wavelet-Transformation, die im JPEG2000-Standard verwendet wird

Eigenschaften

  • Der Primgenerator ist ein B-Spline, wenn die einfache Faktorisierung (siehe unten) gewählt wird
  • Der Dualgenerator hat die maximale Anzahl an Glattheitsfaktoren, die für die Länge möglich ist
  • Alle Generatoren und Wavelets dieser Familie sind symmetrisch.

Konstruktion

Für jede positive Ganzzahl gibt es ein eindeutiges Polynom vom Grad , das der folgenden Identität genügt:

.

Es handelt sich um das gleiche Polynom, das bei der Konstruktion der Daubechies-Wavelets verwendet wird. Anstelle einer spektralen Faktorisierung wird hier jedoch versucht

zu faktorisieren. Die Faktoren sind dabei Polynome mit reellen Koeffizienten und Absolutglied .

In diesem Fall formen

und

ein biorthogonales Paar von Skalierungsfolgen. ist eine Ganzzahl, die zur Zentrierung der symmetrischen Folge auf Null verwendet wird, oder um die korrespondierenden diskreten Filter kausal zu machen.

Abhängig von den Wurzeln von gibt es bis zu verschiedene Faktorisierungen. Eine einfache Faktorisierung ist und . In diesem Fall ist die primäre Skalierungsfunktion das B-Spline der Ordnung . Für erhält man das orthogonale Haar-Wavelet.

Koeffiziententabelle

Cohen-Daubechies-Feauveau-Wavelet 5/3, wie es im JPEG-2000-Standard verwendet wird.

Für erhält man das LeGall-5/3-Wavelet:

AQA(X)qprim(X)qdual(X)aprim(Z)adual(Z)
21

Für erhält man das 9/7-CDF-Wavelet. Man erhält . Dieses Polynom besitzt genau eine reelle Wurzel und ist somit das Produkt des linearen Faktors und eines quadratischen Faktors. Der Koeffizient , der das Inverse der Wurzel ist, hat einen Wert von etwa −1,4603482098.

AQA(X)qprim(X)qdual(X)
4

Für die Koeffizienten der zentrierten Skalierungs- und Wavelet-Folgen erhält man numerische Werte in implementierungsfreundlicher Form:

kAnalyse-Tiefpassfilter

(1/2 adual)

Analyse-Hochpassfilter

(bdual)

Synthese-Tiefpassfilter

(aprim)

Synthese-Hochpassfilter

(1/2 bprim)

−40,026748757411000,026748757411
−3−0,0168641184430,091271763114−0,0912717631140,016864118443
−2−0,078223266529−0,057543526229−0,057543526229−0,078223266529
−10,266864118443−0,5912717631140,591271763114−0,266864118443
00,6029490182361,115087051,115087050,602949018236
10,266864118443−0,5912717631140,591271763114−0,266864118443
2−0,078223266529−0,057543526229−0,057543526229−0,078223266529
3−0,0168641184430,091271763114−0,0912717631140,016864118443
40,026748757411000,026748757411

Nummernbezeichnung

Es gibt zwei parallele Nummerierungsschemata für Wavelets der CDF-Familie.

  • Die Anzahl der Glattheitsfaktoren der Tiefpassfilter, oder (äquivalent) die Anzahl der verschwindenden Momente der Hochpassfilter, z. B. 2,2
  • Die Längen der Tiefpassfilter, oder (äquivalent) die Längen der Hochpassfilter, z. B. 5,3

Das erste Schema wurde in Daubechies' Buch „Ten lectures on wavelets“ verwendet. Keine der Bezeichnungen ist eindeutig. Die Anzahl der verschwindenden Momente sagt nichts über die gewählte Faktorisierung aus. Eine Filterbank, deren Filterlängen 7 und 9 betragen, hat 6 und 2 verschwindende Momente, wenn man eine triviale Faktorisierung verwendet, oder 4 und 4 verschwindende Momente, wie in dem Fall des JPEG-2000-Wavelets. Das gleiche Wavelet kann daher als „CDF 9/7“ (basierend auf den Filterlängen) oder „biorthogonal 4/4“ (basierend auf den verschwindenden Momenten) heißen.

Lifting-Zerlegung

Für die trivial faktorisierten Filterbänke kann eine Lifting-Zerlegung explizit gegeben werden.[2]

Literatur

  • A. Cohen, I. Daubechies und J.C. Feauveau: Biorthogonal bases of compactly supported wavelets. Comm. Pure & Appl. Math 45, 1992, S. 485 bis 560.
  • I. Daubechies: Ten Lectures on wavelets. SIAM, 1992.

Weblinks

Einzelnachweise

  1. Albert Cohen, Ingrid Daubechies und Jean-Christophe Feauveau: Biorthogonal Bases of Compactly Supported Wavelets, in Communications on Pure and Applied Mathematics, Volume 45, Issue 5, Wiley 1992
  2. Siehe Abschnitt 3.2.4 der Ausarbeitung unter [1]

Auf dieser Seite verwendete Medien

Wavelet Bior2.2.svg
Biorthogonal spline wavelet 2, 2 (Cohen-Daubechies-Feauveau wavelet 5/3) with 2 vanishing moments. Created using MATLAB.
Jpeg2000 2-level wavelet transform-lichtenstein.png
Autor/Urheber: Alessio Damato, Lizenz: CC-BY-SA-3.0

The picture shows a 2 level wavelet transform. For the low-pass and high-pass filters, I have used the same of the JPEG2000, lossy transform, so that this is the wavelet that is used in the JPEG2000 format. In general, it is quite hard to show a wavelet transform properly, because of the different ranges of the different parts. I have made the following choices.

First of all, I wanted to use a picture with both flat surfaces, sharp edges and details. The standard test image Lenna is commonly used for this purpose, but I didn't want to use it because it is not in the public domain. I took a look at the big featured picture gallery con Commons and I have chosen Image:Lichtenstein img processing test.png because it has lots of details in the bottom left, while the top right has almost no details because of the sky. Moreover, the edges of the castle are really sharp, so they can be clearly seen in the wavelet transform.

I have saved the original image in a file called lichtenstein.png, to make it simpler.

Then I have used the following Matlab script:

clear all

%input must be 512x512
img=imread('lichtenstein.png');

img=im2double(img);
img=rgb2gray(img);

% filters in JPEG2000
Lo_D=[0.0267 -0.0168 -0.0782 0.2668 0.6029 0.2668 -0.0782 -0.0168 0.0267];
Hi_D=[0.0912 -0.0575 -0.5912 1.1150 -0.5912 -0.0575 0.0912];

%calculate the 2-level Wavelet transform
[scaled, vertical, horizontal, diagonal]=dwt2(img,Lo_D,Hi_D);
[scaled2, vertical2, horizontal2, diagonal2]=dwt2(scaled,Lo_D,Hi_D);

%crop pictures (for displaying purpose)
scaled2=imcrop(scaled2,[4 4 127 127]);
horizontal2=imcrop(horizontal2,[4 4 127 127]);
vertical2=imcrop(vertical2,[4 4 127 127]);
diagonal2=imcrop(diagonal2,[4 4 127 127]);
horizontal=imcrop(horizontal,[4 4 255 255]);
vertical=imcrop(vertical,[4 4 255 255]);
diagonal=imcrop(diagonal,[4 4 255 255]);

%increase contrast (for displaying purpose)
vertical=imadjust(abs(vertical));
horizontal=imadjust(abs(horizontal));
diagonal=imadjust(abs(diagonal));
vertical2=imadjust(abs(vertical2));
horizontal2=imadjust(abs(horizontal2));
diagonal2=imadjust(abs(diagonal2));

%put them all together
transform=zeros(512,512);

transform(1:128,1:128)=scaled2;
transform(1:128,129:256)=horizontal2;
transform(129:256,1:128)=vertical2;
transform(129:256,129:256)=diagonal2;
transform(1:256,257:512)=horizontal;
transform(257:512,1:256)=vertical;
transform(257:512,257:512)=diagonal;

imwrite(transform,'Jpeg2000_2-level_wavelet_transform-lichtenstein.png');

If I had placed all the transforms one next to the other, I would have got a picture wider than 512x512, with some odd behaviour close to the edges. In order to avoid those problems, I have cropped the transforms so that I can easily put one next to the other to get a 512x512 picture. In general, it is not a good idea to discard information, but here I just wanted to create a simple and clear example.

In order to show the derivatives, I have taken the absolute values (I want to show the magnitude of the derivative), then I have improved the contrast to make them look clearer.