DCT (Diskrete Cosinus Transformation)
Die diskrete Cosinus-Transformation ist ein Spezialfall
der Fouriertransformation.
Es wird ausgenutzt, daß für ``gerade'' Funktionen
(d.h.
f (- x) = f (x) ) der Sinus-Term mit seinem imaginären
Anteil wegfällt.
Ein zweidimensionaler Bildbereich läßt sich durch Spiegelung an der
y -Achse künstlich gerade machen.
Hierdurch wird eine 8 × 8 Ortsmatrix in eine
8 × 8 Frequenzmatrix transformiert.
Mit Hilfe der inversen DCT lassen sich die Originalwerte rekonstruieren.
Für die Bildverarbeitung wird der Pixelwertebereich
0..255 in das symmetrische Intervall
- 128..127 verschoben.
Der Wertebereich von s liegt dann im Intervall
- 1024.. + 1023 .
Der errechnete Koeffizient s00 entspricht
dem Anteil der Frequenz null in beiden Achsen und wird DC-Koeffizient
(Gleichspannungsanteil) bezeichnet.
Die übrigen Koeffizienten werden AC -Koeffizienten
(Wechselspannungsanteil) genannt.
Z.B. bezeichnet s77 die höchste, in beiden Richtungen
auftretende Frequenz.
Die Eingangsmatrix M läßt sich auch durch
T · M · T' transformieren mit Hilfe der Matrix T :
Quantisierung
Die errechnete Matrix hat von links oben nach rechts unten Werte
abnehmender Größe.
Da die Werte rechts unten den hohen, eher unwichtigen Frequenzen
entsprechen, werden alle Einträge mit Faktoren zunehmender Größe
dividiert.
Entropiekodierung
Die DC-Koeffizienten benachbarter Blöcke
unterscheiden sich nur wenig und werden
daher als Differenz zum Vorgängerblock
übertragen.
Die AC-Koeffizienten werden zunächst
in eine Zick-Zack-Sequenz umgeordnet:
Die AC-Koeffizienten längs dieses Weges
bis zum letzten Eintrag ungleich Null
werden als Folge von Paaren beschrieben:
Symbol 1: | Länge der ununterbrochenen Folge von Nullen vor diesem Wert (Runlength) | |
Anzahl der Bits, die zur Darstellung des Wertes erforderlich sind. | ||
Symbol 2: | der Wert selbst | |
Der quantisierte DCT-Koeffizient AC70 aus vorigem
Beispiel wird beschrieben als Tupel
< (11,2), - 3 > ,
denn vor ihm in der Zickzacksequenz stehen 11 Nullen,
sein Wert kann mit 2 Bit codiert werden,
und sein Wert beträgt - 3 .
Für das Symbol 1 gibt es Häufigkeitsverteilungen,
aus denen sich ein Huffman-Code konstruieren läßt.
Für das Symbol 2 wählt man ein 2-er Komplement,
welches berücksichtigt, daß bei angekündigten
N Bits nur solche Zahlen kodiert werden müssen, für
die N - 1 Bits nicht ausreichen.
Länge/Bitzahl | Codierung |
0/0 (EOB) | 1010 |
0/1 | 00 |
0/2 | 01 |
0/3 | 100 |
0/4 | 1011 |
0/5 | 11010 |
0/6 | 1111000 |
0/7 | 11111000 |
0/8 | 1111110110 |
0/9 | 1111111110000010 |
0/10 | 1111111110000011 |
1/1 | 1100 |
1/2 | 11011 |
1/3 | 1111001 |
2/1 | 11100 |
2/2 | 11111001 |
2/3 | 1111110111 |
3/1 | 111010 |
3/2 | 111110111 |
3/3 | 111111110101 |
11/1 | 1111111001 |
11/2 | 1111111111010000 |
15/10 | 1111111111111110 |
Wert | Codierung |
15 | 1111 |
14 | 1110 |
13 | 1101 |
12 | 1100 |
11 | 1011 |
10 | 1010 |
9 | 1001 |
8 | 1000 |
7 | 111 |
6 | 110 |
5 | 101 |
4 | 100 |
3 | 11 |
2 | 01 |
1 | 1 |
-1 | 0 |
-2 | 10 |
-3 | 00 |
-4 | 011 |
-5 | 010 |
-6 | 001 |
-7 | 000 |
-8 | 0111 |
-9 | 0110 |
-10 | 0101 |
-11 | 0100 |
-12 | 0011 |
-13 | 0010 |
-14 | 0001 |
-15 | 0000 |
Huffman | 2-er Komplement | |||
Symbol 1 | Symbol 2 | für Symbol 1 | für Symbol 2 | |
(1, 3) | -7 | 1111001 | 000 | |
(0, 4) | -12 | 1011 | 0011 | |
(0, 4) | -8 | 1011 | 0111 | |
(0, 1) | -1 | 00 | 0 | |
(1, 1) | 1 | 1100 | 1 | |
(0, 3) | 7 | 100 | 111 | |
(0, 3) | -5 | 100 | 010 | |
(0, 3) | -7 | 100 | 000 | |
(0, 2) | -3 | 01 | 00 | |
(1, 1) | 1 | 1100 | 1 | |
(3, 1) | -1 | 111010 | 0 | |
(1, 2) | -3 | 11011 | 00 | |
(0, 3) | -4 | 100 | 011 | |
(0, 1) | -1 | 00 | 0 | |
(0, 3) | 4 | 100 | 100 | |
(0, 2) | 3 | 01 | 11 | |
(11, 2) | -3 | 1111111111010000 | 00 | |
(0, 1) | 1 | 00 | 1 | |
(0, 1) | -1 | 00 | 0 | |
EOB | 1010 |
|
|
100% |
9% |
5% |
4% |
Kompression nach dem JPEG-Verfahren. Platzbedarf in % bezogen auf tif-Datei.
3% |
2% |
1.5% |
1% |
Kompression nach dem JPEG-Verfahren. Platzbedarf in % bezogen auf tif-Datei.
95 | 88 | 87 | 95 | 88 | 95 | 95 | 95 |
143 | 144 | 151 | 151 | 153 | 170 | 183 | 181 |
153 | 151 | 162 | 166 | 162 | 151 | 126 | 117 |
143 | 144 | 133 | 130 | 143 | 153 | 159 | 175 |
123 | 112 | 116 | 130 | 143 | 147 | 162 | 189 |
133 | 151 | 162 | 166 | 170 | 188 | 166 | 128 |
160 | 168 | 166 | 159 | 135 | 101 | 93 | 98 |
154 | 155 | 153 | 144 | 126 | 106 | 118 | 133 |
01011111 | 01011000 | 01010111 | 01011111 | 01011000 | 01011111 | 01011111 | 01011111 |
10001111 | 10010000 | 10010111 | 10010111 | 10011001 | 10101010 | 10110111 | 10110101 |
10011001 | 10010111 | 10100010 | 10100110 | 10100010 | 10010111 | 01111110 | 01110101 |
10001111 | 10010000 | 10000101 | 10000010 | 10001111 | 10011001 | 10011111 | 10101111 |
01111011 | 01110000 | 01110100 | 10000010 | 10001111 | 10010011 | 10100010 | 10111101 |
10000101 | 10010111 | 10100010 | 10100110 | 10101010 | 10111100 | 10100110 | 10000000 |
10100000 | 10101000 | 10100110 | 10011111 | 10000111 | 01100101 | 01011101 | 01100010 |
10011010 | 10011011 | 10011001 | 10010000 | 01111110 | 01101010 | 01110110 | 10000101 |
00011111
quantisierter DC-Koeffizient
1111001000101100111011011100011001100111100010100000010011001
1110100110110010001100010010001111111111111010000000010001010
Huffman-Codierung für quantisierte AC-Koeffizienten