Das menschliche Auge ist kein perfektes Organ. So kann es zum Beispiel weiche Farbübergänge viel schlechter auflösen als geringe Helligkeitsunterschiede. Dabei spricht man bei Farbunterschieden, die das Auge besser auflöst von niedrigen Ortsfrequenzen, bei schlechterer Auflösung von hohen Ortsfrequenzen. Die Analogie zu Frequenzen führt von dem räumlichen Auflösungsvermögen des Auges her. Bei bestimmten Farbunterschieden kann man mehr unterscheidbare Farbinformationen unterbringen (daher hohe Ortsfrequenz) als bei anderen Farbunterschieden.
Die DCT nutzt nun diese Schwäche des menschlichen Auges aus, indem sie die hohen Ortsfrequenzen herausfiltert und diese schlechter oder auch gar nicht codiert.
Zunächst werden die Eingangsdaten, die als vorzeichenlose Ganzzahlen vorliegen, in eine für die DCT geeignete ,,Wellenform`` gebracht. Dazu subtrahiert man einfach von jedem Wert , wobei P die verwendete Genauigkeit in Bits darstellt. Im Baseline Codec ist die Genauigkeit 8 Bit, so daß der neue ,,Nullpunkt`` beim ursprünglichen Wert 128 liegt.
Dann werden die Bilddaten in Blöcken zu 8x8 Pixeln gerastert. Ein solcher Block wird nun als Vektor, bestehend aus 64 Pixelwerten, den Koeffizienten, eines geeigneten Vektorraums interpretiert. Die DCT vollzieht nun einen Basiswechsel. Als Basisvektoren werden aber nun 64 Blöcke zu 8x8 Pixeln verwendet, die die Eigenschaft haben, daß sie bezüglich des Vektorraums eine Orthonormalbasis bilden. Die Basisvektoren gewinnt man durch folgende Formel.
Durch den Basiswechsel ergeben sich 64 eindeutige Koeffizienten, die den Anteil des jeweiligen Basisblocks an dem Bilddatenblock darstellen. Die Koeffizienten werden wie folgt berechnet :
Um diese Koeffizientendarstellung in ihre Ursprungsform zurückzutransformieren, benötigt man folgende Beziehung:
wobei
- der DCT-Koeffizient
- der geshiftete Pixelwert.
Man kann sich diese Hintransformation (FDCT) als einen harmonischen Analysator und die Zurücktransformation (IDCT) als eine harmonische Synthese vorstellen.
Bei dieser Codierung und Decodierung (Codec) treten schon ohne weitere Behandlung der Koeffizienten Verluste auf, da die benötigte Kosinus- bzw. Sinusfunktion nur in begrenzter Genauigkeit auf Rechnern dargestellt werden kann.
Daraus folgt ebenso, daß dieses Verfahren nicht iterierbar ist. D.h. wird ein mittels DCT codiertes Bild decodiert und wieder codiert, bekommt man ein anderes Ergebnis, als bei der ersten Codierung.Der Vorteil der DCT wird bei Bildern mit kontinuierlichen Farbübergängen besonders deutlich: Da sich benachbarte Bildpunkte i.d.R. kaum unterscheiden werden in der Koeffizientendarstellung nur der DC-Koeffizient (das ist der Koeffizient dessen Basisvektor in beiden Richtungen die Frequenz Null hat) und einige niederfrequente AC-Koeffizienten (das sind die übrigen Koeffizienten) größere Werte annehmen. Die anderen sind fast Null oder meistens sogar gleich Null. Dies bedeutet, daß kleinere Zahlen codiert werden müssen, und dies hat bei geeigneter Darstellung schon einen Komprimierungseffekt.
Wie man aus den Formeln und
erkennt, ist die Berechnung der Koeffizienten recht umfangreich. So benötigt man für einen 8x8 Block 63 Additionen und 64 Multiplikationen. In [PM93] sind jedoch schnelle Algorithmen für die DCT beschrieben. Diese nutzen unter anderem die symmetrischen Eigenschaften der Formeln aus. Mit moderner Hardwaretechnologie und effektiver Fließkommaarithmetik sind so akzeptable Implementierungen des Algorithmus möglich.