Diskrete Kosinus Transformation
Die diskrete Kosinustransformation (engl. Discrete Cosinus Transform, DCT) ist, ähnlich wie die Schnelle Fourier Transformation, eine sehr bedeutende Transformation in der Informatik. Sie wird häufig dazu eingesetzt um Redundanz in Bildsignalen zu reduzieren, so ist sie zum Beispiel das Kernstück der JPEG Kompression.
Vorbemerkungen
Angenommen wir haben eine Funktion
, die sich als gewichtete Summe von
Funktionen
zusammensetzt. Also konkret

Es gibt nun verschiedene Möglichkeiten, wie wir diese Funktion
beschreiben können, wenn die
bekannt sind. Eine Möglichkeit ist beispielsweise durch Angabe der Koeffizienten
. Damit erhalten wir einen Vektor

der
eindeutig beschreibt. Diese Darstellungsform nennt man auch Koeffizientendarstellung.
Eine weitere Möglichkeit wäre die Beschreibung der Funktion anhand von
paarweise verschiedenen Koordinatenpaaren
durch die
führt. Diese Darstellungsform heißt auch Stützstellendarstellung.
Die Überführung von einer Darstellung in die andere ist gerade die Aufgabe einer Transformation. Bei der DCT werden für die Funktionen
spezielle Kosinusfunktionen benutzt, mehr dazu im nächsten Abschnitt.
Die Inverse Diskrete Kosinunstransformation (IDCT)
Wir fangen rückwärts an, da so die Herleitung einfacher zu verstehen ist. Bei der IDCT will man von der Koeffizientendarstellung in die Stützstellendarstellung transformieren. Also wir haben den Vektor
gegeben, und somit die Funktion

Offensichtlich erhält man einen Wert
zu einem
in der Stützstellendarstellung einfach durch einsetzen. Nun sucht man sich bei der DCT diese Stellen
nicht einfach beliebig aus, sondern definiert sie:

Die Funktionen
werden auch definiert, nämlich:

Dabei nennt man
auch den Skalierungsfaktor.
Wir haben also
paarweise verschiedene
-Werte für die Stützstellen und
paarweise verschiedene Kosinusfunktionen und können so eine Transformationsmatrix
definieren:

Die inverse diskrete Kosinustransformation
ist nun einfach definiert durch
Dies entspricht nun gerade einer Überführung des Vektors
(Koeffizientendarstellung) in einen Vektor
, der die Stützstellen an den Werten
enthält, denn wegen der ausgeschriebenen Matrix-Vektormultiplikation für eine Komponente ist

gerade die Auswertung der Funktion an der Stelle
!
Die Vorwärtstransformation
Kommen wir nun zur eigentlichen DCT. Wir möchten also den Vektor
wieder zurück in den Vektor
überführen. Ein bisschen lineare Algebra liefert

Offenbar ist also die Multiplikation von
von rechts mit der inversen Transformationsmatrix gerade die Vorwärtstransformation. Also definieren wir
Nun gibt es jedoch noch einen schönen Trick. Man kann nämlich beweisen, dass gilt

Damit folgt nun
, was die Berechnung der inversen Transformationsmatrix erheblich vereinfacht! Anders geschrieben ist also

Es gilt also

Diese Formel findet man auch häufig in Büchern.
2D Transformation
Eingangs wurde erwähnt, dass die DCT wichtig für die Kompression von Bilddaten ist. Diese sind jedoch zweidimensional. Wir benötigen also eine DCT die nicht auf Vektoren, sondern auf Matrizen operiert! Sei nun
eine Matrix die wir transformieren möchten, so liefert die Multiplikation

die 1D Transformation jedes einzelnen Spaltenvektors von
, dessen Transformierte die Spaltenvektoren in
sind. Da wir nun noch in die andere Dimension transformieren wollen, müssen wir folgende Operation durchführen:

Wir transponieren also das Zwischenergebnis
, führen jetzt die DCT durch und transponieren das Ergebnis zurück. Anschaulich haben wir also eine 1D-DCT mit jedem Zeilenvektor in
durchgeführt. Fassen wir zusammen:

Die 2D Diskrete Kosinustransformation
ist also
Die Rücktransformation
ist damit trivial herleitbar und ist
Damit gilt: Die Matrix
ist orthogonal und ihre Spaltenvektoren bilden eine Orthonormalbasis des Vektorraums
, das heißt je zwei paarweise verschiedene Spalten von
liegen orthogonal zueinander, und ihre Norm beträgt jeweils
. Die Matrizen
und
heißen auch orthogonal äquivalent.
Interpretation
Nochmal zur Erinnerung: Bei der Vorwärtstransformation transformieren wir Vektoren, die eine Stützstellendarstellung haben, in Vektoren die eine Koeffizientendarstellung der einzelnen Summanden der Kosinusterme haben. Fassen wir die Stützstellen als die zeitdiskreten Amplituden eines Audiosignals zu den Zeitpunkten
auf, so liefert die Transformation quasi die Stärke der Einzelfrequenzen, die durch die Kosinusterme beschrieben werden. Man zerlegt also ein Signal in seine einzelnen Frequenz-Bestandteile aus denen es zusammengesetzt ist.
Weiteres zur DCT
-
http://de.wikipedia.org/wiki/Diskrete_Kosinustransformation
Diskrete Kosinustransformation auf Wikipedia
-
http://www.iti.fh-flensburg.de/lang/algorithmen/fft/dct.htm
Diskrete Kosinustransformation
Diskrete Kosinustransformation auf Wikipedia
Diskrete Kosinustransformation