Main Content

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Diskrete Wavelet-Analyse

Die Software Wavelet Toolbox™ ermöglicht die Analyse von Signalen, Bildern und 3D-Daten mithilfe der orthogonalen und biorthogonalen kritisch abgetasteten diskreten Wavelet-Analyse. Die kritisch abgetastete diskrete Wavelet-Analyse wird auch als dezimierte diskrete Wavelet-Analyse bezeichnet. Die dezimierte diskrete Wavelet-Analyse eignet sich am besten für Datenkompression, Rauschunterdrückung (Entrauschen) und die sparsame Darstellung bestimmter Signal- und Bildklassen.

Bei der dezimierten diskreten Wavelet-Analyse sind die Skalierungen und Translationen dyadisch.

1D-Wavelet-Rauschunterdrückung

Dieses Beispiel zeigt, wie ein Signal mithilfe der diskreten Wavelet-Analyse entrauscht werden kann.

Erstellen Sie ein Referenzsignal.

len = 2^11;
h = [4  -5  3  -4  5  -4.2   2.1   4.3  -3.1   5.1  -4.2];
t = [0.1  0.13  0.15  0.23  0.25  0.40  0.44  0.65  0.76  0.78  0.81];
h  = abs(h);
w  = 0.01*[0.5 0.5 0.6 1 1 3 1 1 0.5 0.8 0.5];
tt = linspace(0,1,len);
xref = zeros(1,len);
for j=1:11
    xref = xref+(h(j)./(1+((tt-t(j))/w(j)).^4));
end

Fügen Sie weißes Gauß‘sches Rauschen mit dem Mittelwert null und einer Varianz von 0,25 hinzu.

rng default
x = xref + 0.5*randn(size(xref));
plot(tt,x)
axis tight

Figure contains an axes object. The axes object contains an object of type line.

Entrauschen Sie das Signal bis Ebene 3 unter Verwendung des Least Assymetric Daubechies-Wavelets mit 4 verschwindenden Momenten. Verwenden Sie die universelle Schwellenwert-Auswahlregel von Donoho und Johnstone mit „Soft-Thresholding“ auf Grundlage der DWT-Koeffizienten auf Ebene 1. Verwenden Sie den Signalerweiterungsmodus „Periodisierung“ – dwtmode('per'). Stellen Sie das Ergebnis zusammen mit dem Referenzsignal zu Vergleichszwecken grafisch dar.

origmode = dwtmode('status','nodisplay');
dwtmode('per','nodisplay')
xd = wdenoise(x,3,'Wavelet','sym4', ...
    'DenoisingMethod','UniversalThreshold','NoiseEstimate','LevelIndependent');
plot(tt,xd)
axis tight
hold on
plot(tt,xref,'r')
hold off
legend('Denoised','Reference')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Denoised, Reference.

Stellen Sie den ursprünglichen Erweiterungsmodus wieder her.

dwtmode(origmode,'nodisplay')

Dezimierte diskrete 2D-Wavelet-Analyse

Dieses Beispiel zeigt, wie Sie die 2D DWT eines Eingangsbilds ermitteln.

Laden Sie das Bild und zeigen Sie es an. Das Bild besteht aus vertikalen, horizontalen und diagonalen Mustern.

load tartan
imagesc(X)
colormap(gray)

Figure contains an axes object. The axes object contains an object of type image.

Ermitteln Sie die 2D DWT auf Ebene 1 mithilfe der biorthogonalen B-Spline-Wavelet- und Skalierungsfilter mit 2 verschwindenden Momenten in den Analysefiltern und 4 verschwindenden Momenten in den Synthesefiltern.

[C,S] = wavedec2(X,1,'bior2.4');

Extrahieren Sie die horizontalen, vertikalen und diagonalen Wavelet-Koeffizienten und die Approximationskoeffizienten.

[H,V,D] = detcoef2('all',C,S,1);
A = appcoef2(C,S,'bior2.4');

Zeigen Sie die Ergebnisse an.

tiledlayout(2,2)
nexttile
imagesc(A)
title('Approximation Level 1')
colormap(gray)
nexttile
imagesc(H)
title('Horizontal Details')
nexttile
imagesc(V)
title('Vertical Details')
nexttile
imagesc(D)
title('Diagonal Details')

Figure contains 4 axes objects. Axes object 1 with title Approximation Level 1 contains an object of type image. Axes object 2 with title Horizontal Details contains an object of type image. Axes object 3 with title Vertical Details contains an object of type image. Axes object 4 with title Diagonal Details contains an object of type image.

Sie sehen, dass die Wavelet-Details empfindlich auf bestimmte Orientierungen im Eingangsbild reagieren. Die Approximationskoeffizienten sind eine Tiefpass-Approximation an das Originalbild.

Nicht dezimierte diskrete Wavelet-Analyse

Dieses Beispiel zeigt, wie Sie die nicht dezimierte (stationäre) Wavelet-Transformation eines verrauschten frequenzmodulierten Signals erhalten.

Laden Sie das verrauschte Doppler-Signal und ermitteln Sie die stationäre Wavelet-Transformation bis Ebene 4.

load noisdopp
swc = swt(noisdopp,4,'sym8');

Stellen Sie das Originalsignal und die Wavelet-Koeffizienten der Ebenen 1 und 3 grafisch dar. Stellen Sie die Approximation der Ebene 4 grafisch dar.

tiledlayout('vertical')
nexttile
plot(noisdopp)
axis tight
nexttile
plot(swc(1,:))
axis tight
ylabel('D1')
set(gca,'ytick',[])
nexttile
plot(swc(3,:))
axis tight
ylabel('D3')
set(gca,'ytick',[])
nexttile
plot(swc(5,:))
axis tight
ylabel('A4')
set(gca,'ytick',[])

Figure contains 4 axes objects. Axes object 1 contains an object of type line. Axes object 2 with ylabel D1 contains an object of type line. Axes object 3 with ylabel D3 contains an object of type line. Axes object 4 with ylabel A4 contains an object of type line.

Die Wavelet- und Approximationskoeffizienten auf jeder Ebene sind genauso lang wie das Eingangssignal. Das additive Rauschen befindet sich fast vollständig in den Detailkoeffizienten der Ebene 1. Die Detailkoeffizienten der Ebene 3 erfassen die hochfrequenten Schwingungen am Anfang des Doppler-Signals. Die Approximationskoeffizienten der Ebene 4 sind eine Tiefpass-Approximation an das Doppler-Signal.

Ermitteln Sie die nicht dezimierte 2D-Wavelet-Transformation eines Bilds. Verwenden Sie das Least Assymetric Daubechies-Wavelet, sym4, und ermitteln Sie die Multiskalenanalyse bis Ebene 3. Laden Sie das Bild. Verwenden Sie wcodemat, um die Matrix für die Anzeige zu skalieren.

load tartan
nbcol = size(map,1);
cod_X = wcodemat(X,nbcol);

Ermitteln Sie die nicht dezimierte Multiskalenanalyse bis Ebene 3.

[ca,chd,cvd,cdd] = swt2(X,3,'sym4');

Zeigen Sie das Originalbild sowie die Approximation und Detailkoeffizienten auf jeder Ebene an.

tiledlayout(2,2)
nexttile
image(cod_X)
title('Original Image')
colormap(map)

for k = 1:3
    cod_ca  = wcodemat(ca(:,:,k),nbcol);
    cod_chd = wcodemat(chd(:,:,k),nbcol);
    cod_cvd = wcodemat(cvd(:,:,k),nbcol);
    cod_cdd = wcodemat(cdd(:,:,k),nbcol);
    decl = [cod_ca,cod_chd;cod_cvd,cod_cdd];

    nexttile
    image(decl)
    
    title(['SWT: Approx. ', ...
        'and Det. Coefs (Lev. ',num2str(k),')'])
    colormap(gray)
end

Figure contains 4 axes objects. Axes object 1 with title Original Image contains an object of type image. Axes object 2 with title SWT: Approx. and Det. Coefs (Lev. 1) contains an object of type image. Axes object 3 with title SWT: Approx. and Det. Coefs (Lev. 2) contains an object of type image. Axes object 4 with title SWT: Approx. and Det. Coefs (Lev. 3) contains an object of type image.

Siehe auch

Apps

Funktionen

Objekte

Verwandte Beispiele

Mehr über