Beziehung zwischen DCT und PCA

12

Ich habe Grundkenntnisse in der Implementierung der 2D-8x8-DCT für die Bild- und Videokomprimierung. Beim Lesen der Hauptkomponentenanalyse sehe ich viele Ähnlichkeiten, auch wenn PCA eindeutig allgemeiner ist. Wenn ich zuvor über DCT gelesen habe, wurde es immer in Bezug auf DFT vorgestellt. Meine Frage ist also, wie kann die DCT aus einer PCA-Perspektive abgeleitet werden? (Selbst eine Handbewegung ist ausreichend)

Danke vielmals

trican
quelle

Antworten:

19

Der Hauptunterschied zwischen DCT und PCA (genauer gesagt, ein Datensatz auf der Basis der Eigenvektoren seiner Korrelationsmatrix - auch als Karhunen-Loeve-Transformation bekannt ) besteht darin, dass der PCA in Bezug auf einen bestimmten Datensatz definiert werden muss (von dem aus) die Korrelationsmatrix wird geschätzt), während die DCT "absolut" ist und nur durch die Eingangsgröße definiert wird. Dies macht die PCA zu einer "adaptiven" Transformation, während die DCT datenunabhängig ist.

Man könnte sich fragen, warum der PCA wegen seiner Anpassungsfähigkeit nicht häufiger bei der Bild- oder Audiokomprimierung verwendet wird. Es gibt zwei Gründe:

  1. Stellen Sie sich einen Encoder vor, der eine PCA eines Datensatzes berechnet und die Koeffizienten codiert. Um den Datensatz zu rekonstruieren, benötigt der Decoder nicht nur die Koeffizienten selbst, sondern auch die Transformationsmatrix (dies hängt von den Daten ab, auf die er keinen Zugriff hat!). Die DCT oder jede andere datenunabhängige Transformation ist möglicherweise weniger effizient beim Entfernen statistischer Abhängigkeiten in den Eingabedaten, aber die Transformationsmatrix ist sowohl dem Codierer als auch dem Decodierer im Voraus bekannt, ohne dass sie gesendet werden muss. Eine "gut genug" -Transformation, die wenig Nebeninformationen erfordert, ist manchmal besser als eine optimale Transformation, die eine zusätzliche Last von Nebeninformationen erfordert ...

  2. NN×64Matrix mit der Leuchtkraft dieser Fliesen. Berechnen Sie eine PCA für diese Daten und zeichnen Sie die Hauptkomponenten auf, die geschätzt werden. Dies ist ein sehr aufschlussreiches Experiment! Es besteht eine sehr gute Chance, dass die meisten höherrangigen Eigenvektoren tatsächlich wie die Art von modulierten Sinuswellenmustern der DCT-Basis aussehen. Dies bedeutet, dass für einen ausreichend großen und allgemeinen Satz von Bildkacheln die DCT eine sehr gute Annäherung an die Eigenbasis darstellt. Dasselbe wurde auch für Audio verifiziert, wo die Eigenbasis für die logarithmische Signalenergie in mel-beabstandeten Frequenzbändern, die auf einer großen Menge von Audioaufnahmen geschätzt wird, nahe an der DCT-Basis liegt (daher die Verwendung von DCT als Dekorrelationstransformation) bei der Berechnung von MFCC).

Pichenetten
quelle
1
Interessant ist jedoch, dass möglicherweise nicht ein anderer Basissatz erstellt wird, der auf den 'üblichen' Statistiken von Bildern und denjenigen basiert, die anstelle von DCT verwendet werden. Ich stelle mir vor, eine solche Basis wäre nicht so gut wie PCA, aber besser als DCT nicht?
Spacey
@pichenettes - Was sind in Bezug auf die DCT die am häufigsten gesehenen Bilder mit zunehmender horizontaler und vertikaler Frequenz (dh goo.gl/XLMt5 )? Ist es eine Bilddarstellung der DCT-Basisfunktionen? Wenn dies der Fall ist, wenn ich die PCA / Eigenvektoren aus der Kovarianzmatrix dieser Bilder berechnete - würde dies im Wesentlichen zu einer DCT-Koeffizientenmatrix führen?
Trican
Btw @pichenettes vielen dank für deine aufschlussreiche antwort. Ich war mir Punkt 1 bewusst, hatte aber Punkt 2 nicht wirklich berücksichtigt.
trican
1
@ Mohammad: das ist eine gute frage und ich kenne die antwort nicht. Ich sehe Vorteile bei der Verwendung des DCT: Einfacheres Schreiben von Spezifikationen (es ist einfacher zu drucken: "Unsere Transformation ist diese geschlossene Formfunktion" als "Unsere Transformation ist diese im Anhang veröffentlichte 64x64-Matrix"), keine Sitzungen von Standardisierungsausschüssen, in denen festgelegt wird, welcher Datensatz trainiert werden soll Die Transformation auf, weniger Nachschlagetabellen, die in das ROM des Decoders eingebettet werden müssen, und wahrscheinlich "Symmetrien" in der Transformationsmatrix, die die Hardwarebeschleunigung im Vergleich zu einer brutalen 64x64-Matrixmultiplikation ermöglichen - diese Vorteile können geringfügige Kompressionsgewinne aufwiegen.
Pichenettes
1
@trican: Das von Ihnen verknüpfte Bild repräsentiert die 2D-DCT-Basis für 8x8-Kacheln. Jede der 64 kleinen Kacheln ist eine Basisfunktion. Wenn Sie eine große Sammlung von 8x8-Kacheln aus tatsächlichen Bildern nehmen und eine PCA für die Daten durchführen, ist die Eigenbasis, die Sie erhalten, der sehr ähnlich.
Pichenettes