Relazione tra DCT e PCA


12

Ho una conoscenza di base dell'implementazione del DCT 2D 8x8 utilizzato nella compressione di immagini e video. Mentre leggo sull'analisi dei componenti di principio, vedo molta somiglianza, sebbene la PCA sia chiaramente più generica. Quando ho letto di DCT in precedenza, veniva sempre presentato in relazione a DFT. Quindi la mia domanda è: come si può derivare il DCT da una prospettiva PCA? (anche una spiegazione ondulata a mano è sufficiente)

Grazie molto

Risposte:


19

La principale differenza tra DCT e PCA (più precisamente, che rappresenta un set di dati nella base formata dagli autovettori della sua matrice di correlazione - nota anche come Karhunen Loeve Transform ) è che il PCA deve essere definito rispetto a un determinato set di dati (da cui viene stimata la matrice di correlazione), mentre il DCT è "assoluto" ed è definito solo dalla dimensione di input. Ciò rende la PCA una trasformazione "adattativa", mentre la DCT è indipendente dai dati.

Ci si potrebbe chiedere perché il PCA non sia usato più spesso nella compressione di immagini o audio, a causa della sua adattabilità. Ci sono due ragioni:

  1. Immagina un encoder che calcola un PCA di un set di dati e codifica i coefficienti. Per ricostruire il set di dati, il decodificatore avrà bisogno non solo dei coefficienti stessi, ma anche della matrice di trasformazione (dipende dai dati a cui non ha accesso!). Il DCT o qualsiasi altra trasformazione indipendente dai dati potrebbe essere meno efficiente nella rimozione delle dipendenze statistiche nei dati di input, ma la matrice di trasformazione è nota in anticipo sia dal codificatore che dal decodificatore senza la necessità di trasmetterli. Una trasformazione "abbastanza buona" che richiede poche informazioni laterali è talvolta migliore di una trasformazione ottimale che richiede un carico aggiuntivo di informazioni laterali ...

  2. NN×64matrice con la luminosità di queste piastrelle. Calcola un PCA su questi dati e traccia i principali componenti che verranno stimati. Questo è un esperimento molto illuminante! C'è una buona probabilità che la maggior parte degli autovettori di livello più alto assomigli effettivamente al tipo di schemi modulati di onde sinusoidali della base DCT. Ciò significa che per un insieme sufficientemente ampio e generico di riquadri di immagini, il DCT rappresenta un'ottima approssimazione dell'autofisica. La stessa cosa è stata verificata anche per l'audio, in cui l'autofisis per l'energia del segnale di registro nelle bande di frequenza spaziate in mel, stimata su un ampio volume di registrazioni audio, è vicina alla base DCT (da cui l'uso di DCT come trasformazione di decorrelazione quando si calcola MFCC).


1
È interessante, tuttavia potrebbe non essere costruito un set di basi diverso in base alle statistiche "usuali" delle immagini per cominciare, e quelle utilizzate al posto di DCT? Immagino che una base del genere non sarebbe buona come la PCA, ma meglio della DCT no?
Spacey,

@pichenettes - per quanto riguarda il DCT, quali sono le immagini più comuni di frequenza orizzontale e verticale in aumento (ad es. goo.gl/XLMt5 )? È una rappresentazione di immagine delle funzioni di base DCT? In tal caso, se calcolassi il PCA / autovettori dalla matrice di covarianza di queste immagini, ciò mi darebbe essenzialmente una matrice di coefficienti DCT?
trican,

A proposito @pichenettes, molte grazie per la tua perspicace risposta. Ero a conoscenza del punto 1, ma in realtà non avevo considerato il punto 2.
trican,

1
@Mohammad: questa è una buona domanda e non conosco la risposta. Vedo vantaggi nell'uso del DCT: più semplice scrivere le specifiche (è più facile stampare "la nostra trasformazione è questa funzione a forma chiusa" rispetto a "la nostra trasformazione è questa matrice 64x64 pubblicata in allegato"), nessuna riunione dei comitati di standardizzazione su quale set di dati formare la trasformazione, meno tabelle di ricerca da incorporare nella ROM dei decodificatori e probabilmente "simmetrie" nella matrice di trasformazione che rendono possibile la sua accelerazione hardware rispetto a una brutale moltiplicazione di matrice 64x64 - questi vantaggi potrebbero superare i guadagni di compressione marginali.
Pichenettes,

1
@trican: l'immagine che hai collegato rappresenta la base 2-D DCT per tessere 8x8. Ognuna delle 64 tessere piccole è una funzione di base. Se prendi una grande raccolta di riquadri 8x8 da immagini reali ed esegui un PCA sui dati, l'autofisis che otterrai sarà abbastanza simile a quella.
Pichenettes,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.