Main Content

Trasformata wavelet discreta a campionamento critico

Calcolare i coefficienti wavelet in tutte le scale possibili è un lavoro piuttosto impegnativo e genera una quantità enorme di dati. Quale sarebbe il risultato se si scegliesse di effettuare i calcoli solo su un sottoinsieme di scale e di posizioni?

Il risultato, piuttosto considerevole, è che se si scelgono scale e posizioni basate su potenze di due - le cosiddette scale e posizioni diadiche - l’analisi sarà molto più efficiente e altrettanto accurata. Tale tipo di analisi si ottiene dalla trasformata wavelet discreta (DWT). Per ulteriori informazioni sulla DWT, vedere Algorithms nella Guida utente della Wavelet Toolbox.

Un modo efficiente per implementare questo schema utilizzando i filtri è stato sviluppato nel 1988 da Mallat (vedere [Mal89] in Bibliografia). L'algoritmo di Mallat è infatti uno schema classico noto nella comunità dell'elaborazione dei segnali come un codificatore di sottobanda a due canali (vedere pagina 1 del libro Wavelets and Filter Banks di Strang e Nguyen [StrN96]).

Questo algoritmo di filtraggio molto pratico produce una trasformata wavelet veloce: una scatola in cui passa un segnale e da cui escono rapidamente i coefficienti wavelet. Esaminiamolo in modo più approfondito.

Filtraggio a uno stadio: approssimazioni e dettagli

Per molti segnali, il contenuto a bassa frequenza è la parte più importante. Questo è ciò che conferisce al segnale la sua identità. Il contenuto ad alta frequenza, invece, conferisce la varietà o la sfumatura. Si consideri la voce umana. Se si rimuovono i componenti ad alta frequenza, la voce ha un suono diverso, ma è comunque possibile capire cosa viene detto. Tuttavia, se si rimuove una quantità sufficiente di componenti a bassa frequenza, si sente un linguaggio incomprensibile.

Nell'analisi wavelet si parla spesso di approssimazioni e di dettagli. Le approssimazioni sono i componenti a bassa frequenza e ad alta scala del segnale. I dettagli sono i componenti ad alta frequenza e a bassa scala.

Il processo di filtraggio, al livello più elementare, si presenta così.

Il segnale originale S passa attraverso due filtri complementari ed emerge come due segnali.

Purtroppo, se eseguiamo effettivamente questa operazione su un segnale digitale reale, avremo una quantità di dati doppia rispetto a quella iniziale. Supponiamo, ad esempio, che il segnale originale S sia composto da 1000 campioni di dati. I segnali risultanti avranno ciascuno 1000 campioni, per un totale di 2000.

Questi segnali A e D sono interessanti, ma avremo 2000 valori invece dei 1000 che avevamo. Esiste un modo più intelligente per eseguire la scomposizione utilizzando le wavelet. Osservando attentamente il calcolo, possiamo mantenere solo un punto su due in ciascuno dei due campioni di lunghezza 2000 per ottenere l'informazione completa. Questa è la nozione di sottocampionamento. Produciamo due sequenze chiamate cA e cD.

Il processo sulla destra, che include il sottocampionamento, produce i coefficienti della DWT.

Per comprendere meglio questo processo, eseguiamo una trasformata wavelet discreta a uno stadio di un segnale. Il segnale sarà una sinusoide pura a cui è stato aggiunto del rumore ad alta frequenza.

Ecco il diagramma schematico con i segnali reali inseriti.

Il codice MATLAB® necessario per generare s, cD e cA è

s
= sin(20.*linspace(0,pi,1000)) + 0.5.*rand(1,1000);
[cA,cD] = dwt(s,'db2');

dove db2 è il nome della wavelet che si intende utilizzare per l’analisi.

Si noti che i coefficienti di dettaglio cD sono piccoli e consistono principalmente in un rumore ad alta frequenza, mentre i coefficienti di approssimazione cA contengono molto meno rumore rispetto al segnale originale.

[length(cA) length(cD)]

ans =
   501  501

È possibile osservare che le lunghezze effettive dei vettori dei coefficienti di dettaglio e di approssimazione sono leggermente superiori alla metà della lunghezza del segnale originale. Questo è dovuto al processo di filtraggio, che viene implementato con la convoluzione del segnale con un filtro. La convoluzione "spalma" il segnale, introducendo numerosi campioni extra nel risultato.

Scomposizione a livello multiplo

Il processo di scomposizione può essere iterato con approssimazioni successive che vengono scomposte a loro volta, in modo da scomporre un segnale in molti componenti a risoluzione inferiore. Questo processo è chiamato l’albero di scomposizione wavelet.

L'analisi dell'albero di scomposizione wavelet di un segnale può fornire informazioni preziose.

Numero di livelli

Poiché il processo di analisi è iterativo, in teoria può essere continuato all'infinito. In realtà, la scomposizione può procedere solo finché i singoli dettagli non sono costituiti da un singolo campione o pixel. In pratica, il numero adeguato di livelli sarà scelto in base alla natura del segnale o a un criterio adeguato, come l’entropia (vedere Choosing Optimal Decomposition nella Guida utente della Wavelet Toolbox).