Diskrete Kosinustransformation
Die Diskrete Kosinustransformation (DCT) ist eine lineare, orthogonale Transformation, welche ähnlich der Diskreten Fouriertransformation ein zeitdiskretes Signal vom Orts- in den Frequenzbereich transformiert. 1974 wurde sie erstmals von Ahmed, Natarajan und Ray erwähnt. Seit diesem Zeitpunkt ist sie die weitest verbreitete Transformation zur Redundanzreduktion von Bildsignalen. Es gibt zwei Gründe für diese Präferenz:
- Mit der DCT kann man effektiv Bilddaten in eine Form transformieren welche sich wiederum leicht komprimieren läßt.
- Die DCT kann effizient in sowohl Software als auch Hardware implementiert werden.
Im folgenden werden die Abkürzungen FDCT für "forward discrete cosine transform" und IDCT für "inverse discrete cosine transform" verwendet.
Berechnung der FDCT
Um Korrelation in horizontaler und vertikaler Bildrichtung zu erfassen, wird die zweidimensionale Variante der FDCT benutzt. Zu diesem Zweck wird das Bild wie im Standard beschrieben in Blöcke von 8 x 8 Bildpunkten zerlegt. Die folgende Gleichung beschreibt die zweidimensionale FDCT für einen 8 x 8 Block eines Bildes.
In dieser Gleichung sind fi,j die 64 Punkte (i,j) des Eingangsblocks, Fx,y sind die 64 DCT Koeffizienten (x,y) und C(x), C(y) sind die Konstanten:
Anschaulich ist dieser Vorgang in der ersten Abbildung dargestellt.
Die FDCT repräsentiert jeden Block eines Bildausschnittes durch gewichtete Summen von 2-D Cosinus Funktionen auch genannt Basis Funktionen. In der Abbildung rechts sind diese Funktionen als 8 x 8 Pixel Basismuster dargestellt.
Das Muster links-oben hat die niedrigste "Frequenz" und ist nur ein Einheitsblock. Von links nach rechts nimmt die Anzahl der "Zyklen" zwischen hell und dunkel in horizontaler Richtung zu. Diese "Zyklen" repräsentieren horizontal zunehmende räumliche Frequenz. Von oben nach unten nimmt hingegen die Anzahl der "Zyklen" zwischen hell und dunkel in vertikaler Richtung zu. Folglich nehmen sowohl die horizontalen als auch die vertikalen Frequenzen in diagonaler Richtung gleichzeitig zu. Zur Rekonstruktion der Bildpunkte eines Blocks werden diese 64 Basis Muster mit dem jeweiligen Gewichtungsfaktor multipliziert und dann addiert. Dieser Faktor entspricht dem jeweiligen DCT Koeffizienten Fx,y.
Berechnung der IDCT
Die IDCT rekonstruiert einen Block mit Bildpunkten aus einem Datenfeld mit DCT Koeffizienten. Als Eingang bedient sich die IDCT eines Blocks von 8 x 8 DCT Koeffizienten Fx,y und rekonstruiert dann nach folgender Gleichung den Block aus den Bildpunkten fi,j.
Die Konstanten C(y) und C(x) sind die selben wie für die FDCT.
Wie aus der Abbildung rechts ersichtlich kann mit relativ guter Genauigkeit aus 6 Koeffizienten das Originalbild rekonstruiert werden. Der erste Koeffizient (0,0) wird mit einer Gewichtung von 967.5 multipliziert und mit der IDCT Transformiert. Dieser Koeffizient ist meist der wichtigste, denn er gibt den durchschnittlichen Grauwert oder "Schatten" des Blocks an. In diesem Fall wird der oben beschriebene Vorgang noch 5 mal für die weiteren DCT-Koeffizienten wiederholt. Da in den meisten Fällen die Gewichtung der anderen DCT-Koeffizienten, wie in diesem Beispiel, relativ niedrig ist, kann man die meisten Blöcke mit einer geringen Anzahl von DCT-Koeffizienten rekonstruieren.