Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

Analisi wavelet discreta

Il software Wavelet Toolbox™ consente di analizzare segnali, immagini e dati tridimensionali utilizzando l’analisi wavelet discreta ortogonale e biortogonale a campionamento critico. L’analisi wavelet discreta a campionamento critico è nota anche come analisi wavelet discreta decimata. L’analisi wavelet discreta decimata è l’analisi maggiormente appropriata per la compressione di dati, la riduzione del rumore e la rappresentazione rada di certe classi di segnali e di immagini.

Nell’analisi wavelet discreta, le scale e le traslazioni sono diadiche.

Riduzione del rumore wavelet monodimensionale

Questo esempio mostra come ridurre il rumore di un segnale utilizzando l’analisi wavelet discreta.

Creare un segnale di riferimento.

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

Aggiungere un rumore gaussiano bianco con media zero e con una varianza di 0,25.

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.

Ridurre il rumore del segnale fino al livello 3 utilizzando la wavelet asimmetrica minima di Daubechies con 4 momenti di fuga. Utilizzare la regola di selezione della soglia universale di Donoho e Johnstone con una soglia morbida basata sui coefficienti della DWT al livello 1. Utilizzare la modalità di estensione del segnale di periodizzazione — dwtmode('per'). Tracciare il risultato insieme al segnale di riferimento per il confronto.

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.

Ripristinare la modalità di estensione originale.

dwtmode(origmode,'nodisplay')

Analisi wavelet discreta decimata bidimensionale

Questo esempio mostra come ottenere la DWT bidimensionale di un’immagine in ingresso.

Caricare e visualizzare l’immagine. L’immagine è composta da strutture verticali, orizzontali e diagonali.

load tartan
imagesc(X)
colormap(gray)

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

Ottenere la DWT bidimensionale al livello 1 utilizzando la wavelet B-spline biortogonale e filtri di demoltiplicazione con 2 momenti di fuga nei filtri di analisi e con 4 momenti di fuga nei filtri di sintesi.

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

Estrarre i coefficienti wavelet orizzontali, verticali e diagonali, nonché i coefficienti di approssimazione.

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

Visualizzare i risultati.

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.

Si noti che i dettagli wavelet sono sensibili a particolari orientamenti dell’immagine in ingresso. I coefficienti di approssimazione sono un’approssimazione passa-basso dell’immagine originale.

Analisi wavelet discreta non decimata

Questo esempio mostra come ottenere la trasformata wavelet (stazionaria) non decimata di un segnale rumoroso modulato in frequenza.

Caricare il segnale rumoroso Doppler e ottenere la trasformata wavelet stazionaria fino al livello 4.

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

Tracciare il segnale originale e i coefficienti wavelet del livello 1 e 3. Tracciare l’approssimazione del livello 4.

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.

I coefficienti wavelet e di approssimazione a ciascun livello sono di lunghezza pari al segnale di ingresso. Il rumore additivo è quasi totalmente localizzato nei coefficienti di dettaglio del livello uno. I coefficienti di dettaglio del livello 3 acquisiscono le oscillazioni ad alta frequenza all’inizio del segnale Doppler. I coefficienti di approssimazione del livello 4 sono un’approssimazione passa-basso sul segnale Doppler.

Ottenere la trasformata wavelet non decimata bidimensionale di un’immagine. Utilizzare la wavelet asimmetrica minima di Daubechies sym4 e ottenere l’analisi multirisoluzione fino al livello 3. Caricare l’immagine. Utilizzare wcodemat per ridimensionare la matrice per la visualizzazione.

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

Ottenere l’analisi multirisoluzione non decimata fino al livello 3.

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

Visualizzare l'immagine originale e i coefficienti di approssimazione e di dettaglio a ciascun livello.

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.

Vedi anche

App

Funzioni

Oggetti

Esempi correlati

Ulteriori informazioni