Wavelet transform
La compressione Wavelet è una forma di compressione dei dati adatta per la compressione delle immagini (a volte anche la compressione video e la compressione audio). Le implementazioni degne di nota sono JPEG 2000, DjVu ed ECW per le immagini fisse, CineForm e Dirac della BBC. L’obiettivo è quello di memorizzare i dati di immagine nel minor spazio possibile in un file. La compressione Wavelet può essere lossless o lossy. La codifica Wavelet è una variante della codifica discrete Cosine Transform (DCT) che utilizza wavelet invece dell’algoritmo basato su blocchi di DCT.
Utilizzando una trasformata wavelet, i metodi di compressione wavelet sono adeguati per rappresentare transitori, come suoni di percussione nell’audio, o componenti ad alta frequenza in immagini bidimensionali, ad esempio un’immagine di stelle su un cielo notturno. Ciò significa che gli elementi transitori di un segnale di dati possono essere rappresentati da una quantità minore di informazioni rispetto a quella che sarebbe il caso se fosse stata utilizzata qualche altra trasformazione, come la più diffusa trasformata discreta del coseno.
La trasformata wavelet discreta è stata applicata con successo per la compressione dei segnali elettrocardiografici (ECG) In questo lavoro, l’alta correlazione tra i corrispondenti coefficienti wavelet dei segnali dei cicli cardiaci successivi viene utilizzata impiegando la previsione lineare.
La compressione Wavelet non è buona per tutti i tipi di dati: le caratteristiche dei segnali transitori significano una buona compressione wavelet, mentre i segnali regolari e periodici sono meglio compressi con altri metodi, in particolare la compressione armonica tradizionale (dominio della frequenza, come le trasformazioni di Fourier e correlate).
Vedere Diary Of An x264 Developer: The problems with wavelets (2010) per la discussione di problemi pratici dei metodi attuali che utilizzano wavelet per la compressione video.
MethodEdit
Prima viene applicata una trasformazione wavelet. Questo produce tanti coefficienti quanti sono i pixel nell’immagine (cioè, non c’è ancora compressione poiché è solo una trasformazione). Questi coefficienti possono quindi essere compressi più facilmente perché le informazioni sono concentrate statisticamente in pochi coefficienti. Questo principio è chiamato codifica di trasformazione. Successivamente, i coefficienti sono quantizzati e i valori quantizzati sono codificati per entropia e / o codificati per lunghezza di esecuzione.
Alcune applicazioni 1D e 2D di compressione wavelet utilizzano una tecnica chiamata “wavelet footprints”.
Valutazioneedit
Requisito per la compressione delle immaginiedit
Per la maggior parte delle immagini naturali, la densità dello spettro di frequenza inferiore è maggiore. Di conseguenza, le informazioni del segnale a bassa frequenza (segnale di riferimento) vengono generalmente conservate, mentre le informazioni nel segnale di dettaglio vengono scartate. Dal punto di vista della compressione e della ricostruzione dell’immagine, una wavelet deve soddisfare i seguenti criteri durante l’esecuzione della compressione dell’immagine:
- Essere in grado di trasformare un’immagine più originale nel segnale di riferimento.
- Ricostruzione della massima fedeltà basata sul segnale di riferimento.
- Non dovrebbe portare a artefatti nell’immagine ricostruita dal solo segnale di riferimento.
Requisito per la varianza di spostamento e il comportamento di squillamentomodifica
Il sistema di compressione delle immagini Wavelet comporta filtri e decimazione, quindi può essere descritto come un sistema a variazione lineare di spostamento. Di seguito viene visualizzato un tipico diagramma di trasformazione wavelet:
Il sistema di trasformazione contiene due analisi di filtri (filtro passa-basso h 0 ( n ) {\displaystyle h_{0}(n)}
e un filtro passa-alto h 1 ( n ) {\displaystyle h_{1}(n)}
), una decimazione processo, un processo di interpolazione, e due sintesi di filtri ( g 0 ( n ) {\displaystyle g_{0}(n)}
e g 1 ( n ) {\displaystyle g_{1}(n)}
). La compressione e la ricostruzione del sistema prevede, in genere, le componenti a bassa frequenza, che è l’analisi di filtri h 0 ( n ) {\displaystyle h_{0}(n)}
per la compressione delle immagini e la sintesi di filtri g 0 ( n ) {\displaystyle g_{0}(n)}
per la ricostruzione. Per valutare tale sistema, si può inserire un impulso δ ( n − n ) {\displaystyle \delta (n-n_{i})}
e osservare la sua ricostruzione h ( n − n ) {\displaystyle h(n-n_{i})}
; ottimale wavelet sono quelli che portano minimo spostamento varianza e sidelobe di h ( n − n ) {\displaystyle h(n-n_{i})}
. Anche se wavelet con varianza di spostamento rigorosa non è realistico, è possibile selezionare wavelet con solo una leggera varianza di spostamento. Per esempio, siamo in grado di confrontare il passaggio di varianza di due filtri:
Lunghezza | Filtro coefficienti | Regolarità | ||
---|---|---|---|---|
Wavelet filtro 1 | H0 | 9 | .852699, .377402, -.110624, -.023849, .037828 | 1.068 |
G0 | 7 | .788486, .418092, -.040689, -.064539 | 1.701 | |
Filtro Wavelet 2 | H0 | 6 | .788486, .047699, -.129078 | 0.701 |
G0 | 10 | .615051, .133389, -.067237, .006989, .018914 | 2.068 |
Osservando le risposte all’impulso dei due filtri, possiamo concludere che il secondo filtro è meno sensibile alla posizione di input (cioè è meno variante shift).
Un altro problema importante per la compressione e la ricostruzione delle immagini è il comportamento oscillatorio del sistema, che potrebbe portare a gravi artefatti indesiderati nell’immagine ricostruita. Per ottenere ciò, i filtri wavelet dovrebbero avere un grande rapporto picco-lobo laterale.
Finora abbiamo discusso della trasformazione a una dimensione del sistema di compressione delle immagini. Questo problema può essere esteso a due dimensioni, mentre un termine più generale – trasformabili multiscala – è proposto.
Derivazione della risposta all’impulsomodifica
Come accennato in precedenza, la risposta all’impulso può essere utilizzata per valutare il sistema di compressione/ricostruzione dell’immagine.
Per la sequenza di input x ( n ) = δ ( n − n ) {\displaystyle x(n)=\delta (n-n_{i})}
, il segnale di riferimento r 1 ( n ) {\displaystyle r_{1}(n)}
dopo un livello di decomposizione è x ( n ) ∗ h 0 ( n ) {\displaystyle x(n)*h_{0}(n)}
passa attraverso la decimazione di un fattore due, mentre h 0 ( n ) {\displaystyle h_{0}(n)}
è un filtro passa basso. Analogamente, il successivo segnale di riferimento r 2 ( n ) {\displaystyle r_{2}(n)}
si ottiene da r 1 ( n ) ∗ h 0 ( n ) {\displaystyle r_{1}(n)*h_{0}(n)}
passa attraverso la decimazione di un fattore di due. Dopo L livelli di decomposizione (e decimazione), la risposta di analisi si ottiene mantenendo uno su ogni 2 L {\displaystyle 2 ^ {L}}
campioni: h ( L ) ( n , n ) = f h 0 ( L ) ( n − n i / 2 L ) {\displaystyle h_{A}^{(L)}(n,n_{i})=f_{h0}^{(L)}(n-n_{i}/2^{L})}
.
d’altra parte, per ricostruire il segnale x(n), che possiamo considerare un segnale di riferimento r ( n ) = δ ( n − n j ) {\displaystyle r{L}(n)=\delta (n-n_{j})}
. Se il dettaglio segnali d i ( n ) {\displaystyle d_{i}(n)}
sono pari a zero per 1 ≤ i ≤ L {\displaystyle 1\leq i\leq L}
, quindi il segnale di riferimento nella fase precedente ( L − 1 {\displaystyle L-1}
tappa) r L − 1 ( n ) = g 0 ( n − 2 n j ) {\displaystyle r{L-1}(n)=g_{0}(n-2n_{j})}
, che si ottiene interpolando r L ( n ) {\displaystyle r{L}(n)}
e contorto con g 0 (n) {\displaystyle g_{0} (n)}
. Allo stesso modo , la procedura viene iterata per ottenere il segnale di riferimento r ( n ) {\displaystyle r(n)}
allo stadio L − 2, L − 3,. . . . ,1 {\displaystyle L-2, L-3,….,1}
. Dopo L iterazioni, viene calcolata la risposta all’impulso di sintesi: h s ( L ) ( n , n ) = f g 0 ( L ) ( n / 2 L − n j ) {\displaystyle h_{s}^{(L)}(n,n_{i})=f_{g0}^{(L)}(n/2^{L}-n_{j})}
, quale si riferisce il segnale di riferimento r L ( n ) {\displaystyle r{L}(n)}
e la ricostruzione del segnale.
Per ottenere il sistema globale di analisi/sintesi del livello L, le risposte di analisi e sintesi sono combinate come di seguito:
h E S ( L ) ( n , n ) = acqua k f h 0 ( L ) ( k − n / 2 L ) f g 0 ( L ) ( n / 2 L − k ) {\displaystyle h_{MP}^{(L)}(n,n_{i})=\sum _{k}f_{h0}^{(L)}(k-n_{i}/2^{L})f_{g0}^{(L)}(n/2^{L}-k)}