Sie sind auf Seite 1von 84

Abbildungsverzeichnis

III

Abbildungsverzeichnis

1.1

Beispielbilder.

1.2

Zickzack-Abtastung

1.3

Quadtree-Zerlegung des Beispielbildes Abb. 1.1b.

1.4

Huffman-Baum des Beispiels Abb. 1.1.

20

1.5

Unterteilung des Intervalls [0,1)

22

1.6

Arithmetische Codierung des Zeichenstrings AAABA.

23

1.7

Arithmetische Codierung des Zeichenstrings ABABA.

24

1.8

Arithmetische Codierung des Zeichenstrings BAABA.

24

1.9

Arithmetische Codierung des Zeichenstrings ABAABCDAABBADAA#.

27

1.10 Arithmetische Decodierung der Zahl 0.1875dez.

29

1.11 Arithmetische Decodierung der Zahl 0.46875dez.

29

1.12 Arithmetische Decodierung der Zahl 0.6875dez.

30

1.13 Arithmetische Decodierung der Zahl 0.2718910425901413dez.

31

1.14 Echtfarbenbild

35

1.15 Beispielbild Abb. 1.14b bzw. Abb. A.4 als MCU

36

1.16 Cosinus-transformierte linke obere DU Y00

38

1.17 Quantisierte linke obere DU Y00

40

1.18 Verluste bei der JPEG-Kompression

45

1.19 Verluste bei der JPEG-Kompression [3]

46

1.20 Verluste bei der JPEG-Kompression [3]

47

A.1 Beispielbilder fr Kapitel A.

51

A.2 Binrversion des Beispielbildes

53

A.3 Beispielbilder in RGB-Komponenten zerlegt.

56

A.4 Image, subdivided in components Y Cb Cr . Values are hexadecimal.

58

A.5 Numerische Werte von Abb. 1.15, der MCU des Beispielbildes

64

IV

Abbildungsverzeichnis

A.6 DUs der cosinus-transformierten MCU.

65

A.7 Quantisierte numerische Werte der MCU in Abb. ??

66

Tabellenverzeichnis

Tabellenverzeichnis

1.1

Kompressionsrate und relative Datenredundanz durch Reduktion der Anzahl der Bitebenen.

1.2

LZW-Codierung Schritt fr Schritt

10

1.3

LZW-Decodierung Schritt fr Schritt

12

1.4

Informationstheoretische Werte des Beispielbildes Abb. 1.1

16

1.5

Der Morse-Code, der lteste Code mit variabler Lnge

18

1.6

aus Tab. 1.4, Zeile 1 und 4

19

1.7

Huffman Codierung des Beispielbildes

19

1.8

Huffman-Code fr das Beispielbild Abb. 1.1 und Bitzahl fr jeden Grauwert

20

1.9

Informationstheoretische Werte des Huffman-codierten Beispielbildes Abb. 1.1b.

21

1.10 Wahrscheinlichkeiten und kumulierte Wahrscheinlichkeiten

22

1.11 Arithmetische Codierung der Sequenz AAABB.

23

1.12 Wahrscheinlichkeiten und kumulierte Wahrscheinlichkeiten zu Bsp. ??

25

1.13 Arithmetische Codierung des Beispiels 1.9

26

1.14 Arithmetische Decodierung der Sequenz AAABB.

28

1.15 Huffman-Code fr die DC-Koeffizienten der Luminanz- und der Chrominanz-Komponenten


[4].
42
A.1 Datenstrom aus der Zickzack-Abtastung von Abb. A.1b.

52

A.2 Datenstrom aus dem Zickzack-Scan von Abb. A.2b.

54

A.3 Datenstrom aus der RLE-Codierung von Tab. A.1.

59

A.4 Datenstrom aus der RLE-Codierung von Tab. A.1 mit alternativem Algorithmus.

60

A.5 Datenstrom aus Tab. A.1 Fano-codiert

61

A.6 Datenstrom aus Tab. A.1 Huffman-codiert

62

A.7 Datenstrom der cosinustransformierten, quantisierten und zickzack-abgetasteten MCU


Abb. A.7

67

VI

Tabellenverzeichnis

A.8 Huffman code for the AC coefficients of the luminance and chrominance components
[4]. Hexadecimal representation of values left column

68

A.9 Codingof the MCU of the example image 1.1a).

73

Inhaltsverzeichnis

VII

Inhaltsverzeichnis

Abbildungsverzeichnis

IV

Tabellenverzeichnis

VI

1 Methoden der Bildkompression


1.1

1.2

Verlustfreie Bildkompression

1.1.1

Heuristische verlustfreie Methoden

Die Lauflngencodierung (RLE)

Subtraktion benachbarter Pixel

Zerlegung in Quadtrees

1.1.2

LZW-Kompression

1.1.3

Grundlagen der Informationstheorie

13

1.1.4

Die Huffman Coderung

18

1.1.5

Die Arithmetische Codierung

21

Der Algorithmus der arithmetischen Codierung

21

Die Decodierung

28

Verlustbehaftete Bildkompression

32

1.2.1

33

Der JPEG-Standard

Anhang

49

A Supplementary Material for Chapter 1

51

A.1 General things

51

A.2

59

Verlustfreie Bildkompression

A.3 Lossy Compression


Literaturverzeichnis

63
75

VIII

Index

Inhaltsverzeichnis

77

1 Methoden der Bildkompression


Das bekannte Sprichwort: Ein Bild ist tausend Worte wert erhlt im Zusammenhang mit der Bildkompression noch einen weiteren Aspekt: wrtlich genommen, unterschtzt es sogar die Verhltnisse.
Die Rohdaten eines typischen Echtfarbbilds erfordern einen Speicherplatz, der eher in der Grenordnung von einigen Millionen Worten liegt, und eine Videosequenz kommt typischerweise in die
Grenordnung von Gigabytes.
Ein Bild ist also, betrachtet man den bentigten Speicherplatz, weit mehr als tausend Weorte "wert".
Whrend unser menschliches visuelles System diese Datenflut offensichtlich ohne grere Probleme
bewltigt (meist, indem Information bersehen wird), stossen elektronische Systeme, die Bilder
verarbeiten oder verschicken, schnell an ihre Grenzen.
Information bersehen ist der Schlssel in der Bildkompression: zur Auswertung oder Betrachtung
von Bildern sind diese groe Datenmengen berhaupt nicht ntig. Ein Groteil der Information, die
in einem Bild enthalten ist, ist redundant, gar nicht sichtbar oder zur Auswertung eines Bildes nicht
notwendig. Unter dem Begriff Bildkompression werden alle Techniken zusammengefasst, die die Datenmenge eines Bildes reduzieren, ohne dass es "darunter leidet", was auch immer das heien mag.
Grundstzlich unterscheidet man zwei Anstze der Bildkompression: verlustfreie und verlustbehaftete Kompressionsmethoden.
Verlustfreie Kompressionsmethoden entfernen redundante Bildinformation, und das Originalbild mit der ursprnglichen Dateigre kann aus dem komprimierten Bild wiederhergestellt
werden. Redundanz kann folgende Ursachen haben:
Redundanz in der Codierung: Der Grauwert 52 erfordert beispielsweise zur Binrcodierung 6 Bit. Ihn wie blich mit 8 Bit zu codieren erzeugt zwei redundante Zeichen.
Redundanz zwischen benachbarten Pixeln: In Bildern oder Filmsequenzen, die von Kameras aufgenommen wurden, haben (rumlich oder zeitlich) benachbarte Pixel hnliche
Werte. Jedes Pixel unabhngig von seinen Nachbarn mit der gleichen Anzahl Bits zu codieren erzeugt ebenfalls redundante Zeichen.
Verlustbehaftete Kompressionsmethoden entfernen sowohl redundante als auch irrelevante Bildinformation, und das Originalbild kann aus den komprimierten Daten nicht ohne Vernderungen
wieder hergestellt werden. Natrlich muss der Term irrelevante Bildinformation im Zusammenhang mit dem Ziel der Bildverwertung gesehen werden. Die menschliche visuelle Wahrnehmung bentigt beispielsweise nur minimale Bildinformation um einen Gegenstand zu erkennen
und zuzuordnen und kommt deshalb mit hohen Kompressionsraten sehr gut zurecht.
Trotz der hohen Verluste sind die modernen verlustbehafteten Methoden die Gewinner bei der
Datenkompression. Sie erzielen weit hhere Kompressionsraten als smtliche verlustfreie Methoden und erzeugen komprimierte Bilder, die visuell vom Original kaum zu unterscheiden
sind.
Wenn die Resultate der modernen verlustbehafteten Kompressionsmethoden so erfolgreich sind, warum
beschftigt man sich dann berhaupt noch mit verlustfreien Methoden? Dafr gibt es verschiedene
Grnde.

1 Methoden der Bildkompression

Beispiel 1.1
Bilder, die nach der Kompression bestimmte weitere Bildverarbeitungsschritte durchlaufen, sollten
verlustfrei komprimiert werden, weil die verlustbehaftete Kompression zu Fehlern fhren kann. Werden beispielsweise Unterschiede in Bildern durch Bildsubtraktionfestgestellt, so treten mit ziemlicher
Sicherheit Fehler auf, die auf die verlustbehaftete Kompression zurckzufhren sind.
Beispiel 1.2
Medizinische Bilder sollten immer verlustfrei komrimiert werden um Fehldiagnosen zu vermeiden,
die auf die Kompressionsmethode zurckzufhren sind.
Beispiel 1.3
Satellitenbilder fr die wissenschaftliche Auswertung sollten immer verlustfrei komprimiert werden,
da sie wegen der erforderlichen hohen Auflsung sowieso schon mindestens mit der Abtastrate, die
durch das Abtasttheorem vorgegeben ist, digitalisiert werden. Verlustbehaftete Kompression wrde
diese Resultate zunichte machen. Andererseits werden Satellitenbilder fr den allgemeinen Gebrauch
durchaus verlustbehaftet komprimiert. Dies ist sogar eine Notwendigkeit wenn diese im Internet bereitgestellt werden sollen.
Es ist also nicht so, dass verlustbehaftete Methoden die verlustfreien ersetzen, und dieses Kapitel
wird beide Arten behandeln. In diesem Rahmen werden wir uns jedoch auf zweidimensionale Bilder beschrnken. Einige der Methoden knnen aber problemlos auf drei Dimensionen erweitert werden, wobei die dritte Dimension entweder zeit-oder ortsabhngig sein kann. Fr Videosequenzen gibt
es bekanntlich die MPEG Kompressionsalgorithmen, die jedoch den Rahmen dieses Kapitels berschreiten wrden. Die Einarbeitung in das Thema Kompression erfordert einen soliden mathematischen Hintergrund. auf den Gebieten Statistik und der Fouriertransformation. Aber zuerst einige
grundlegende Dinge.

Die Bildkompression wird anhand verschiedener Beispielbilder erklrt werden. Wir verwenden
ein Echtfarbenbild der Gre 1616 (RGB), das mit einem Byte pro Kanal codiert wurde,
was fr die Rohdaten eine Dateigre von 16 16 3 = 768 Bytes ergibt (Abb. 1.1a.
ein Grauwertbild der Gre 16 16, das mit einem Byte pro Pixel codiert wurde, was fr
die Rohdaten eine Dateigre von 16 16 = 256 Bytes ergibt (Abb. 1.1b).
ein Binrbild der Gre 16 16, das mit einem Byte pro Pixel codiert wurde, was fr die
Rohdaten eine Dateigre von 16 16 = 256 Bytes ergibt1 (Abb. 1.1c).
Bei Echtfarbenbilder werden in der Regel vor der Kompression die Farbkanle getrennt (z.B.
RGB oder YCbCr) und jede Komponente wird einzeln komprimiert. Wir knnen also die grundlegenden Methoden an Grauwertbildern erlutern (Abb. 1.1b).
Fr Grauwerte aus dem Bereich von 0 . . . 255 wird aus verschiedenen Grnden die hexadezimale Darstellung gewhlt..
1 Man htte das Binrbild mit einem Bit pro Pixel codieren knnen, aber dieses Bild wre nicht darstellbar und wrde einen
Decoder zur Darstellung bentigen, wre also schon komprimiert

Manche Kompressionsalgorithmen erzielen bessere Resultate wenn das Bild als eindimenstionaler Datenstrom an Stelle einer zweidimensionalen Matrix dargestellt wird. Dies knnte man
durch Aneinanderhngen der Bildzeilen oder der Bildspalten erreichen. Diese Methode produziert jedoch an den Zeilen- bzw. Spaltenenden unnatrlich hohe Grauwertunterschiede zwischen benachbarten Pixeln des Datenstroms. Eine weitaus bessere Methode ist in Abb. 1.2 dargestellt2
In der Datenkomression spricht man auch von Bildcodierung, denn die Kompression geschieht
ja durch Umcodieren der Pixel, jedoch nicht, um Information zu verbergen, sondern um Redundanzen zu eliminieren. Ein Algorithmus, der ein Bild codiert, wird Encoder genannt, der
umgekehrte Algorithmus heit Decoder genannt. Beides zusammen heit in der Fachsprache
CODEC
Die Kompressionsrate CR und die relative Datenredundanz RD eine Bildes sind Mae fr
die Qualitt von verlustlosen Kompressionsmethoden, whrend fr verlustbehaftete Methoden
meistens der Bit-pro-Pixel Wert Cbpp als Qualittsma verwendet wird. Sie sind folgendermaen
definiert:
CR =

n
m

RD = 1
Cbpp =

1
CR

8m
n

(1.1)

mit:
n: Dateigre des unkomprimierten Bildes in Bytes
m: Dateigre des komprimierten Bildes in Bytes
Eine Kompressionsrate von CR = 8 bedeutet beispielsweise, dass die Dateigre auf 0.125
der ursprnglichen Dateigre verkleinert werden konnte, ohne den Informationsgehalt eines
Bildes zu reduzieren. Daraus folgt fr die relative Datenredundanz ein Wert von RD = 0.875,
oder, 87.5% der Daten des unkomprimierten Bildes knnen ohne Informationsverlust gelscht
werden. Die Kompressionsrate CR und die relative Datenredundanz hngen sowohl von der
verwendeten Methode ab als auch vom Datenmaterial selbst. Der schlechteste Fall fr jede
Kompressionsmethode ist eine Kompressionsrate von CR 1, was heit, dass die Datenmenge
nicht verringert wurde,
Die Resultate einiger einfacheren Algorithmen wie die der Lauflngencodierung (RLE) sind
fr sich gesehen nicht sehr beeindruckend. Sie werden jedoch als Teil mchtigerer Algorithmen
wie JPEG beispielsweise verwendet.
Wenn wir die Bildgre vor und nach der Kompression berechnen, setzen wir Rohdaten voraus.
Dies ist nicht die wahre Dateigre, da alle Dateiformate Bildinformationen in den Kopfzeilen
eines Bildes einfgen.

2 Bei

nichtquadratischen Bildern muss natrlich die Bildbreite oder -hhe gemerkt werden

1 Methoden der Bildkompression

Abbildung 1.1: Beispielbilder.


a) Echtfarbbild (siehe auch Abb. A.3)
b) Grauwertbild (siehe auch Abb. A.1)
c) Binrbild (siehe auch Abb. A.2)

1.1 Verlustfreie Bildkompression


Verlustfreie Methoden werden immer dann angewandt, wenn die vollstndige Wiederherstellung der
Daten unabdingbar ist. Auch bestimmte Bildformate wie GIF und TIIFF verwenden verlusfreie Kompressionsmethoden. Einige verlustfreie Methoden werden in Kombination mit anderen angewandt
und zeigen erst dort ihren wirklichen Wert. Beispiele dafr sind die RLE- und die Quadtree-Bildkompression.
Die Qualitt eines Kompressionsalgorithmus hngt sowohl von der Geschwindigkeit des CODEC ab
als auch von seiner Fhigkeit, redundante Information in Bildern zu eliminieren. Aus diesem Grund
werden wir uns einige informationstheoretische Zusammenhnge ansehen, beispielsweise mssen wir
klren, was wir unter Information berhaupt verstehen.
Generell unterscheidet man bei verlustfreien Methoden
heuristische Anstze,

wrterbuchbasierte Anstze, d.h. solche, welche die redundanten Bilddaten mit Hilfe einer
bersetzungstabelle den redundanzfreien Code bersetzen und

informationstheoretische Anstze.

Letztere zeigen die besten Resultate Resultate. Sie versuchen, die Bilder in der Weise zu codieren,
dass nur der reine Informationsgehalt brig bleibt. Einige, wie beispielsweise der Fano Code sind
heute nicht mehr im Einsatz und wurden durch Weiterentwicklungen abgelst.

1.1 Verlustfreie Bildkompression

Abbildung 1.2: Zickzack-Abtastung


Eine zweidimenstinale Matrix wird durch Zickzack-Abtastung in einen eindimensionalen Datenstrom umgewandelt. Er beginnt mit: F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 82 82 82 . . . Die vollstndigen Daten zeigt
Tab. A.1 Seite 52.

1.1.1 Heuristische verlustfreie Methoden


Einfache verlustfreie Methoden verwenden heuristische Anstze um die Anzahl der Datenbytes eines
Bildes zu reduzieren. Gewhnlich werden sie von den CODECs effizienterer Algorithmen als Zwischenschritt benutzt. Beispielsweise benutzt JPEG die RLE-Codierung nach einem verlustbehafteten
Schritt zur weiteren Kompression der Ergebnisse. Einige Beispiele heuristischer verlustfreier Methoden:

Die Lauflngencodierung (RLE)


Was machen Sie wenn Sie 6 Eier, 10 Brtchen und 2 pfel kaufen wollen? Sie schreiben nicht die
18 Artikel einzeln auf einen Zettel, sondern Sie schreiben n Artikelname. Genau das tut ein RLE
CODEC mit den Grauwerten eines Bildes.
Die Bildmatrix wird in einen eindimensionalen Datenstrom umgewandelt wie in Abb. 1.2 beschrieben,
dann zhlt er die Grauwerte, die nebeneinander stehen und notiert deren Wert und deren Anzahl. Von
Tab. A.1 Seite 52 erhalten wir beispielsweise den RLE-codierten Datenstrom3
F0 0B 82 05 AF 01 82 01 AF 01 F0 01 FF 01 F0 02 . . .

Die Dateigre des Beispielbildes in Abb. 1.1b betrug vor der Kompression 256 Bytes, nach der
Kompression 220 Bytes. Nach Gl. .1.1 berechnen wir die Kompressionsrate CR und die relative Da-

3 zu lesen:: F0 11, 82 5 usw. Zwei Bytes enthalten also jeweils den Grauwert und deren Anzahl. Alle Werte sind hexadezimal dargestellt. Die Daten sind gekrzt. Fr die komplette RLE-codierten Daten siehe Tab. A.3 Seite 59 .

1 Methoden der Bildkompression

tenredundanz RD zu:
256
= 1.164
220
220
= 0.14
=1
256

CR =
RD

Die Daten sind also komprimiert, wenn das Ergebnis auch zugegebenermaen nicht sehr eindrucksvoll ist.
Im Binrbild erhalten wir bessere Resultate. Da alle Pixel entweder den Wert 0 oder 1 haben, ist es
nur notwendig, den ersten Pixelwert des Datenstoms zu notieren und die Anzahlen der nebeneinanderstehenden weien und schwarzen Pixel. Wenn wir fr jede Anzahl 1 Byte verwenden, erhalten wir
im Falle des Beispielbildes Abb. 1.1c 256 Bytes vor der Kompression und 67 Bytes nach der Kompression und damit ein Kompressionsrate CR = 3.82 und eine relative Datenredundanz RD = 0.74.
Wie bei allen Kompressionsalgorithmen existieren auch hier zahllose Variationen, alle mit dem Ziel,
die Kompressionsratezu verbessern.
Diese Variation vermeidet es, bei einmaligem Auftreten eines Grauwertes (wie in AF 01) die
Anzahl zu notieren. Natrlich muss dann sichergestellt werden, dass das Byte, welches den
Grauwert enthlt, nicht mit dem Byte verwechselt wird, welches die Anzahl enthlt:4
F0 F0 0A 82 82 04 AF 82 AF F0 FF F0 F0 01 82 . . .

Kompressionsratebetrgt CR = 1.196 die relative Datenredundanz RD = 0.164


Fr das Beispielbild Abb. 1.1b bentigt diese Variante des RLE-Algorithmus 214 Bytes, die
Andere Varianten separieren die 8 Bitebenen eines Bildes und RLE-codieren die Binrbilder
separat.
Die RLE-Kompression zeigt berzeugende Ergebnisse, wenn ein Bild groe Flchen des gleichen
Grauwertes enthlt. Sie wird von den Dateiformaten JPG, PCX. ps, BMP, GIF, TIFF, und RLE (Compuserve) verwendet.

Subtraktion benachbarter Pixel


In Bildern einer realen Szene, die beispielsweise von einer Kamera aufgenommen wurden, sind benachbarte Grauwerte in der Regel sehr hnlich. Diese Kompressionsmethode macht sich dies zunutze,
indem jedes Pixel in Abhngigkeit seines Vorgngers im Datenstrom codiert wird: von jedem Pixel
wird sein Vorgnger subtrahiert. Methoden, die Pixel in Abhngigkeit ihrer Vorgnger codieren, nennt
man prdiktive Methoden.

4 zu

lesen: F0 + F010, 82 + 824 etc. Jeder Grauwert, der mehr als einmal aufftritt, wird zweimal notiert, whrend
einmalig auftretende Grauwerte einfach notiert werden. Die Daten sind gekrzt. Fr die komplette RLE-codierten Daten siehe
Tab. A.4 Seite 60

1.1 Verlustfreie Bildkompression

Nehmen wir an, ein Pixel im Datenstrom habe den Grauwert 217 und das benachbarte Pixel den
Grauwert 222, dann ist die Differnenz d = 5. Es wird also das erste Pixel im Datenstrom als Wert
gespeichert, und alle nachfolgenden Pixel als Differenzen zu ihren Vorgngern. Ein Bild, das auf diese
Weise komprimiert wurde, bentigt in der Regel wegen der geringen Absolutbetrge weniger als 8 Bit
Pixeltiefe, was die Datengre kann reduziert (Tab. 1.1).

Number of
bit layors

Compressionratio CR

relative
data redundancy RD

256 8
= 2.0
256 4

256 8
= 1.6
256 5

256 5
= 0.375
256 8

256 8
= 1.3
256 6

256 6
= 0.25
256 8

256 8
= 1.14
256 7

256 7
= 0.125
256 8

256 4
= 0.5
256 8

Tabelle 1.1: Kompressionsrate und relative Datenredundanz durch Reduktion der Anzahl der Bitebenen.

Zerlegung in Quadtrees
Auch bei dieser Methode wird angenommen, dass ein Bild Bereiche mit sehr hnlichen oder gleichen benachbarten Grauwerten enthlt. Zudem ist die Voraussetzung, dass das Bild quadratisch und
die Seitenlnge eine Potenz von 2 ist. Der Algorithmus zerlegt ein Bild in quadratische Unterbilder, solange, bis jeweils alle Grauwerte innerhalb der Quadrate gleich sind (Abb. 1.3a). Dies kann
durch eine Baumstruktur (Abb. 1.3b) dargestellt werden. Das Bild und jedes quadratische Unterbild,
welches weiter unterteilt werden kann, wird durch einen Knoten reprsentiert, Unterbilder, die nicht
weiter unterteilt werden, durch ein Blatt. Das Ergebnis ist eine Baumstruktur mit Knoten und Blttern auf verschiedenen Ebenen. In Abb. 1.3 reprsentiert der Knoten der Ebene 0 (die Wurzel) das
Bild der Gre 16 16, die Knoten der Ebene 1 die Unterbilder der Gre 8 8 usw. Ein Bild der
Gre 2n 2n hat also n + 1 Ebenen. Jeder Knoten auer der Wurzel hat einen Elternknoten und
hchstens vier Kindknoten , whrend jedes Blatt nur einen Elternknoten hat.
Es gibt zahllose und sehr effiziente Algorithmen, Baumstrukturen zu codieren und zu decodieren.
[15, 13]. Die Umsetzung bersteigt jedoch den Rahmen dieses Abschnittes.

1 Methoden der Bildkompression

level 0 (root)

level 1

level 2

level 3
level 4

Abbildung 1.3: Quadtree-Zerlegung des Beispielbildes Abb. 1.1b.


Das Bild wird solange in Quadrate unterteilt, bis jedes Quadrat nur noch einen Grauwert enthlt
a) Unterteilung des Beispielbildes
b) Baumstruktur des Beispielbildes. Schwarze Punkte reprsentieren Knoten, weie Punkte reprsentieren Bltter. Stufe 4 des Baumes besteht vollstndig aus Blttern (nicht dargestellt)

1.1.2 LZW-Kompression
LZW-Kompression ist eine der vielen sog. wrterbuchbasierten Kompressionsalgorithmen, die whrend des Codier- bzw. Decodiervorgangs ein Wrterbuch generieren, in welchem die hufigsten vorkommenden Zeichenketten gespeichert werden und nun nur noch unter einer Abkrzung angesprochen werden mssen.
Der Kompressionsalgorithmus geht zurck auf den Algorithmus LZ77 von Jacob Ziv and Abraham
Lempel [18]. Bei dem LZ77-Algorithmus spricht man von einem gleitenden Fenster (engl.: sliding
window). Der Grundgedanke des Verfahrens besteht darin, einen zuvor gesehenen Datenstrom als
Wrterbuch zu verwenden. Dieses verwendete Wrterbuch ist in seiner Gre begrenzt. Damit immer
ein aktuelles Wrterbuch vorhanden ist, wird dieses durch einen einfachen Verschiebemechanismus
realisiert. Das gleitende Fenster besteht aus zwei Teilen, einem Such-Puffer (engl.: search buffer) und
einem Vorschau-Puffer der die nchsten zu codierenden Zeichen enthlt (engl.: look-ahead buffer).
blicherweise enthlt der Such-Puffer mehrere tausend Zeichen und der Vorschau-Puffer fr die zu
codierenden Daten etwa 100 Zeichen oder auch weniger.
Der Algorithmus wurde 1978 von Ziv[17] modifiziert, und 1984 erhielt er durch Terry Welch [16]
seine heutige Form Die LZW Kompression ist die Basis fr die UNIX utility compress, und sie
wird in den GIF, PostScript, TIFF, und ARJ Datenformaten eingesetzt.
Die Grundidee der LZW-Codierung ist ebenfalls, wiederholt vorkommende Grauwertsequenzen in
Zeichenketten abzulegen, welche in einer Tabelle, dem Wrterbuch D abgespeichert werden. Der
komprimierte Code besteht aus Pointern, welche auf die Position im Wrterbuch D verweisen, an
welcher die Zeichenkette abgelegt ist.

1.1 Verlustfreie Bildkompression

Zu Beginn eines Kompressionslaufes enthlt das Wrterbuch das Alphabet welches die Symbole der
Originaldaten enthlt (zum Beispiel die Buchstaben A, . . . ,Z, a,. . . ,z wenn die Originaldaten aus Text
bestehen oder die Grauwerte 0. . . 255 wenn es sich um ein Schwarzwei-Bild handelt).
Der Codierungsalgorithmus kann als Pseudocode folgendermaen beschrieben werden:
START
(Zu Beginn enthlt D das Alphabet, P und C sind leer.)
BEGIN LOOP
1. C := nchstes Symbol des Datenstroms
IF (C=#) STOP
2. P ||C D?
YES: P := P ||C
NO:
Output Pos. P
insert P ||C in D
P := C
END LOOP
mit:
D: Wrterbuch
P : String Buffer
C: Character Buffer
#: End of File Dateiende
||: Concatenate Aneinanderhngen von Zeichen: A||B=AB
:=: Zuweisung
Zur Vereinfachung wollen wir fr die Erklrungen nicht den relativ groen Datenstrom des Beispielbildes Abb. 1.1 verwenden sondern einen Datenstrom aus Buchstaben (jeweils 1 Byte):
ANNA_AND_BARBARA_AND_A_BANANA#
Nehmen wir an, das Wrterbuch D enthalte das Alphabet des Datenstromes, d.h. die Buchstaben ABDNR_.
Das n-te Symbol stehe am Eingang des CODEC. Tab. 1.2 zeigt den Codierungalgorithmus Schritt fr
Schritt:
InputC
n
0
0
0

P ||C D?

Output
Code

Wrterbuch D
Pos.
Entry
0
A
1
B
2
D

P:=C

P:=P||C

Fortsetzung nchste Seite

10

1 Methoden der Bildkompression

Fortsetzung

n
0
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1/
18
19
20
21
22
23
24
25
26
27
28
29
30

A
N
N
A
_
A
AN
D
_
B
A
R
B
BA
R
A
A_
A
AN
AND
_
_A
_
_B
A
AN
A
AN
ANA

Input
C P ||C D?

A
N
N
A
_
A
N
D
_
B
A
R
B
A
R
A
_
A
N
D
_
A
_
B
A
N
A
N
A
#

yes
no
no
no
no
no
yes
no
no
no
no
no
no
yes
no
no
yes
no
yes
yes
no
yes
no
yes
no
yes
no
yes
yes
no

Output
Code

Wrterbuch D
Pos
Entry
3
N
4
R
5
_

P:=C

P:=P||C

A
0
3
3
0
5

6
7
8
9
10

AN
NN
NA
A_
_A

N
N
A
_
A

6
2
5
1
0
4

11
12
13
14
15
16

AND
D_
_B
BA
AR
RB

D
_
B
A
R
B

14
4

17
18

BAR
RA

R
A

19

A_A

AN

BA

A_
AN
AND
11

20

AND_

10

21

_A_

13

22

_BA

23

ANA

_A
_B
AN
AN
ANA
23

Tabelle 1.2: LZW-Codierung Schritt fr Schritt

Die 3. Spalte von links (Input) enthlt den zu codierenden Datenstring, die 5. Spalte von links (Output)
enthlt den codierten Datenstring. Wenn wir annehmen, dass jede Ziffer mit 1 Byte codiert wird, ist
die Datei von 29 Bytes auf 19 Bytes geschrumpft. Das Wrterbuch D kann gelscht werden: es wird
nicht zur Decodierung bentigt, aber das zugrundeliegende Alphabet (hier ABDNR_) muss bekannt
sein. Fr die Kompressionsrate CR und die relative Datenredundanz RD erhalten wir nach Gl. 1.1:
CR =

29
= 1.5
19

1.1 Verlustfreie Bildkompression

11

RD = 1

19
= 0.34
29

Zur Darstellung des Bildes mssen wir die komprimierten Daten auf den Eingang des Decoders
geben. Der zu dekomprimierende Datenstrom fr dieses Beispiel ist:
0 3 3 0 5 6 2 5 1 0 4 14 4 9 11 10 13 6 23 #
Der Decodierungsalgorithmus ist etwas komplizierter als der Codierungsalgorithmus - es kann nmlich vorkommen, dass ein Symbol des zu decodierenden Datenstroms zum Zeitpunkt der Decodierung
noch nicht im Wrterbuch vorhanden ist. Diese Situation muss man umgehen.
Zu Anfang steht das zugrundeliegende Alphabet (also ABDNR_) im Wrterbuch.
START
(Zu Beginn enthlt D das Alphabet, P und C sind leer.)

cSdec =dec(cS)
Output cSdec
BEGIN LOOP
pS := cS
pSdec =cSdec
Hole nchstes Symbol cS vom Eingangsdatenstrom.
IF (cS=#) STOP
cS D?
ja

cSdec =dec(cS)
Output cSdec
P := pSdec
C = erstes Zeichen von cSdec 5
insert P ||C in D

nein

P := pSdec
C = erstes Zeichen von pSdec
OutputP ||C
insert P ||C in D

END LOOP
5 Ist

z.B. cSdec = B, dann ist C = B, ist cSdec = AND dann ist C = A

12

1 Methoden der Bildkompression

mit:
D:
cS:
cSdec :
pS:
pSdec :
P:
C:
dec(S):

Wrterbuch
momentanes Symbol aus dem Datenstrom, zu decodieren
das decodierte Symbol cS
vorhergehendes Symbol aus dem Datenstrom
das decodierte Symbol pS
String Buffer
Character Buffer
das decodierte Symbol S, dec(S)=Sdec

Tab. 1.3 zeigt den Codierungalgorithmus Schritt fr Schritt:

n
0
0
0
0
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

pS

pSdec

Input
cS

0
3
3
0
5
6
2
5
1
0
4
14
4
9
11
10
13
6
23

A
N
N
A
_
AN
D
_
B
A
R
BA
R
A_
AND
_A
_B
AN
ANA

0
3
3
0
5
6
2
5
1
0
4
14
4
9
11
10
13
6
23
#

Output
cS D?

ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
nein

cSdec

A
N
N
A
_
AN
D
_
B
A
R
BA
R
A_
AND
_A
_B
AN

A
N
N
A
_
AN
D
_
B
A
R
BA
R
A_
AND
_A
_B
AN
ANA

A
N
N
A
_
AN
D
_
B
A
R
BA
R
A_
AND
_A
_B
AN

N
N
A
_
A
D
_
B
A
R
B
R
A
A
_
_
A
A

Wrterbuch D
Pos.
Entry
0
A
1
B
2
D
3
N
4
R
5
_
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

AN
NN
NA
A_
_A
AND
D_
_B
BA
AR
RB
BAR
RA
A_A
AND_
_A_
BA
ANA

Tabelle 1.3: LZW-Decodierung Schritt fr Schritt

Die 4. Spalte von links (Input) enthlt den zu decodierenden Datenstring, die 7. Spalte von links
(Output) enthlt den decodierten Datenstring.

1.1 Verlustfreie Bildkompression

13

Speziell fr den Decodierungsschritt kann das Wrterbuch D sehr umfangreich werden, und man
muss sehr effiziente Suchalgorithmen implementieren, um realistische Zeiten einhalten zu knnen.
Wenn wir das Beispielbild Abb. 1.1 LZW-komprimieren, erhalten wir eine Dateigre der Rohdaten
von 101 Bytes anstelle der 1616=256 Bytes6 Fr die die Kompressionsrate CR und die relative
Datenredundanz RD erhalten wir nach Gl. 1.1:
256
= 2.53
101
101
=1
= 0.605
256

CR =
RD

1.1.3 Grundlagen der Informationstheorie


Wenn wir uns ber die einfachen Methoden hinaus mit Bildkompression beschftigen mchten, mssen wir frher oder spter die Fragen beantworten:
Was genau kann aus einem Bild entfernt werden, ohne dass Information verloren geht?
Was versteht man unter Information?
Wie gro ist der Anteil der reinen Information in einem Bild?
Wie wird Information berechnet?
Damit beschftigt sich die Informationstheorie, nmlich mit Wahrscheinlichkeiten und Informationsinhalten von Ereignissen.
Die Wahrscheinlichkeit p(Ej ) eines bestimmten Ereignisses Ej (z.B. der Wurf einer Sechs mit
einem Wrfel Aus einer Menge E mglicher Ereignisse ist definiert:
p(Ej ) =

Anzahl des Auftretens von EreignisEj


Gesamtzahl der EreignisseN

(1.2)

1
Beispielsweise ist die Wahrscheinlichkeit fr eine sechs bei einem idealen Wrfels p(E6 ) = .
6
Sei K die Anzahl der mglichen verschiedenen Ereignisse (z.B. K = 6, die Anzahl der Punkte 1 . . . 6
auf einem Wrfel), dann gilt:
K
X

p(Ej ) = 1

(1.3)

j=1

6 Dieser Wert wurde berechnet, indem die Rohdaten (*.raw) im *.gif-Format gespeichert wurden und die Header-Gre
davon subtrahiert wurde.

14

1 Methoden der Bildkompression

Die Information I(Ej ) eines bestimmten Ereignisses Ej mit der Auftrittswahrscheinlichkeit p(Ej )
ist durch die Gleichung definiert:
I(Ej ) = log

1
p(Ej )

(1.4)

= log p(Ej )
Die Basis des Logarithmus in Gl. 1.4 legt die Einheiten der Information I(Ej ) fest. Da wir in Bilder mit Bits und Bytes hantieren, whlen wir den Logarithmus zur Basis 2 log2 und die Informationseinheit wird Bit genannt. Um beim obigen Beispiel zu bleiben, knnen wir nun die Information
berechnen, die in dem Ereignis einer sechs im Wrfelspiel (beim Einsatz eines Wrfels) innewohnt:
I(Ei ) = log2 p(Ei )
1
ln
6
=
= 2, 585 Bit
ln 2
Wie wir schon jetzt aus Gl. 1.4 sehen knnen, ist der Informationsgehalt eines Ereignisses Ej umso
hher, je geringer seine Wahrscheinlichkeit p(Ej ) ist, also je seltener es auftritt. Ein Ereignis Ej , das
mit der Wahrscheinlichkeit p(Ej ) = 1 auftritt, besitzt berhaupt keine Information.
Sei Q eine Informationsquelle, welche Ereignisse Ej generiert, und sei K die Anzahl verschiedener
Ereignisse, die auftreten knnen. Dann definieren wir die Entropie HQ , d.h. die Unsicherheit der
Quelle Q durch:
HQ =

K
X

p(Ej )I(Ej )

(1.5)

j=1

K
X

p(Ej ) log p(Ej )

j=1

Fr den Wrfel W erhalten wir


HQW =

6
X

p(Ej ) log2 p(Ej )

j=1

6
X
1
j=1

log2

1
= 2, 585 bit
6

Sind also alle Wahrscheinlichkeiten p(Ej ) gleich, so ist


die Entropie einer Quelle Q gleich dem Informationsgehalt I(Ej ) eines Ereignisses Ej : HQ = I(Ej )
die Entropie HQ maximal
Gehen wir nun zurck zu Bildern. Die Ereignisse Ej in Bildern sind die Grauwerte gj . Im Allgemeinen kennen wir die Wahrscheinlichkeit p(gj ), dass ein bestimmter Grauwert gj auftritt, nicht, aber

1.1 Verlustfreie Bildkompression

15

wir haben eine gute Nherung: das normierte Histogramm. Wir erhalten:
p(gj ) =

H(gj )
K1
P

H(gk )

k=0

H(gj )
N
I(gj ) = log2 p(gj )
=

=
mit:
K:
N:
H(gj ):
I(gj ):
p(gj ):

ln p(gj )
Bit
ln 2

maximal mgliche Zahl verschiedener Grauwerte (also 256 bei 8 Bit Pixeltiefe)
Anzahl der Pixel in einem Bild
Histogrammwert des Grauwertes gj
Informationswert des Grauwertes gj
Wahrscheinlichkeit des Grauwertes gj

und knnen daraus die Entropie HQ eines Bildes berechnen.


HQ =

K1
X

p(gj )I(gj )

j=0

K1
X

p(gj ) log2 p(gj )

K1
X

p(gj )

j=0

j=0

ln(p(gj ))
ln 2

mit:
HQ : Entropie einer Informationsquelle Q
p(gj ): Wahrscheinlichkeit des Grauwertes gj
K:
Anzahl der Spalten im Histogramm bzw. in der Wahrscheinlichkeitstabelle
Tab. 1.4 zeigt alle bisher besprochenen Gren fr das Beispielbild Abb. 1.1. Das kumulierte Histogramm HK (gj ) und die kumulierte Wahrscheinichkeit pK (gj ) werden wir spter noch bentigen.
Welche Hinweise gibt uns das fr die optimale Codierung eines Bildes? Ein berhmter Satz hilft uns
weiter: Shannons Quellencodierungstheorem, das hier ohne Beweis wiedergegeben werden soll.
Satz 1.1 (Shannon)
Ein Code ist optimal im Sinne der Informationstheorie, wenn die durchschnittliche Codewortlnge Lavg fr ein Codewort gleich der Entropie HQ des Bildes ist.
Ein Codewort ist fr die Bildberarbeitung ein Grauwert, beispielsweise gj = 25 = 00001101. Solange
wir noch alle Grauwerte mit 8 Bit codieren, ist natrlich Lavg = 8, aber das wird sich ndern. Es ist
Lavg =

K1
X
j=0

p(gj )L(gj )

(1.6)

16

1 Methoden der Bildkompression


gj
H(gj )
HK (gj )
p(gj )
pK (gj )
I(gj )
HQ (gj )

32hex
7
7
0.0273
0.0273
5.1926
0.1420

4Bhex
49
56
0.1914
0.2188
2.3853
0.4566

82hex
36
92
0.1406
0.3594
2.8301
0.3980

AFhex
29
121
0.1133
0.4727
3.1420
0.3559

E1hex
2
123
0.0078
0.4805
7.0000
0.0547

F0hex
124
247
0.4844
0.9648
1.0458
0.5066

FFhex
9
256
0.0352
1.0
4.8301
0.1698

sum
256
n.a.
1.0
n.a.
n.a.
2.0835

Tabelle 1.4: Informationstheoretische Werte des Beispielbildes Abb. 1.1


Die Tabelle zeigt die Grauwerte gi (hexadezimal), das Histogramm H(gi ), das kumulative Histogramm HK (gi ), die Wahrscheinlichkeiten p(gj ), die kumulativen Wahrscheinlichkeiten pK (gj ), the information of each gray value I(gi ) = log2 (p(gj )) sowie die Entropien HQ (gi ) = p(gj ) log2 (p(gj ))
und die jeweiligen Summen, falls definiert.

mit:
L(gj ): Codelwortnge eines Grauwertes gj
Lavg : durchschnittliche Codewortlnge
Damit erhalten wir:
Lavg = HQ
K1
X
j=0

p(gj )L(gj ) =

K1
X

p(gj ) log2 p(gj )

j=0

L(gj ) = log2 p(gj )


L(gj ) = log2

H(gj )
N

L(gj ) = I(gj )

(1.7)

Dies definiert die Codelwortnge eines Grauwertes gj L(gj ) fr jeden Grauwert gj in Bits: Es ist
dieselbe Anzahl von Bits wie die des Informationsgehaltes, den der Grauwert trgt. Wegen
L(gj ) = I(gj )
= log2 p(gj )
1
= log2
p(gj )
kann man auch erkennen: je unwahrscheinlicher ein Grauwert gj ist, d.h. je seltener er in einem Bild
vorkommt, desto lnger ist sein Code.
Beispiel 1.4
Der Grauwert g0 = 32hex , welcher 7 mal, vorkommt, sollte mit 5.1926 Bit codiert werden. Wenn
wir die Erkenntnisse aus Gl. 1.7 auf das Musterbild Abb. 1.1 anwenden, dessen statistischen Daten in
Tab. 1.4 zu sehen sind, knnen wir die kleinstmgliche Dateigre fr das Bild berechnen, die unter
verlustfreier Komprimierung mglich ist. Wir erhalten:
7
X
j=1

H(gj ) I(gj ) = 7 5.1926 + 49 2.3853 + . . . + 9 4.8301 = 533.38 Bit

1.1 Verlustfreie Bildkompression

17

Gerundet sollten wir also eine Dateigre von 534 Bit oder 67 Bytes erhalten.
Dies ist die Gre der Information in diesem Bild, und jede verlustfreie Kompressionsmethode auf
informationstheoretischer Grundlage wird versuchen, dieses Limit zu erreichen. Bisher ist noch keine
der oben erwhnten Kompressionsmethoden an den Wert herangekommen.
Erreichen wir mit einer Kompressionsmethode weniger als 67 Bytes, so haben wir Information verloren und das Verfahren ist nicht mehr verlustfrei.
Mit Hilfe von Gleichung Gl. 1.1 knnen wir wieder die Kompressionsrate CR und die relative Datenredundanz RD berechnen:
256 8
= 3.84
534
1
RD = 1
= 0.739
CR
CR =

(1.8)

d.h. 73.9% der Daten im Beispielbild sind redundant. Wenn wir also das Bild mit 8 Bit codieren,
verbleiben 256 67 = 189 Bytes redundanter Information im Bild.
Codierungmethoden wie Shannon-Fano , Huffman und vor allem die Arithmetische Codierung machen sich die Erkenntnisse der Informationstheorie zunutze und generieren zur Datenkompression
Codes mit variabler Lnge: Grauwerte mit groer Wahrscheinlichkeit werden mit wenigen Bits codiert, Grauwerte mit kleiner Wahrscheinlichkeit mit einer groen Anzahl von Bits. Solche Codes
werden Entropiecodes genannt.
Zunchst jedoch einige informationstheoretische Begriffe
Durch die Codierung wird ein Alphabet A (z.B. die Grauwerte {0 . . . 255} ) in ein anderes
Alphabet B abgebildet (z.B. eines mit unterschiedlicher Wortlnge fr verschiedene Grauwerte).
Die Elemente eines Alphabetes werden Symbole genannt. Enthlt die zu codierende Datei einen
Text, so ist das abzubildende Alphabet die Menge der Buchstagen {A . . . Z, a . . . z}, bei einem
Bild die Menge der Grauwerte.
Symbole mit einer hohen Wahrscheinlichkeit, wie z.B. der Buchstabe e in der deutschen Spache, wird mit weniger Bits codiert als Symbole mit einer niedrigen Wahrscheinlichkeit. Der
lteste Code, der diese Eigenschaft hat, ist das Morse-Alphabet7 in Tab. 1.5. Das Alphabet
{A . . . Z} wird in das Alphabet { .} abgebildet, und die Lnge eines codierten Buchstabens
ist variabel.
Die bentigten Wahrscheinlichkeiten fr das Alphabet eines Bildes (also die Grauwerte {0 . . . 255})
festgelegt sein (wie bei Fax-Protokollen) und dem Codierer und Decodierer als Tabellen
zur Verfgung gestellt werden,
in einem Vorverarbeitungsschritt statistisch bestimmt werden (beispielsweise ber ein Histogramm) und den Eingabedaten angefgt werden, was natrlich die Dateigre erhht
7 Samuel

Morse, 1843

18

1 Methoden der Bildkompression

dynamisch bestimmt werden whrend des Durchgangs der Daten durch das Codierprogramm

A
B
C
D
E
F
G
H

.-...
-.-.
-..
.
..-.
--.
....

I
J
K
L
M
N
O
P

..
.---..-..
--.
--.--.

Q
R
S
T
U
V
W
X

--..-.
...
......--..-

Y
Z
0
1
2
3
4
5

-.---..
----.---..--...-.........

6
7
8
9
.
,
?
:

-....
--...
---..
----.
--..---..-..--..
---...

Tabelle 1.5: Der Morse-Code, der lteste Code mit variabler Lnge

1.1.4 Die Huffman Coderung


Unter den Codes mit variabler Wortlnge sind die berhmtesten der Fano Code [14, 2] (1949 von
Robert Fano am MIT und den Bell Laboratories entwickelt), der Huffman Code [5] (1952 David
Huffman MIT), und die Arithmetische Codierung. Der Fano Code ist nicht optimal im Sinne der
Imformationstheorie und wird aus diesem Grunde hier nicht behandelt. Der Huffman Code, der in
diesem Abschnitt behandelt wird, war bis in die achtziger Jahre des letzten Jahrhunderts der optimale
Code, der machbar war, und ist noch heute in vielen Anwendungen im Einsatz. Er bekam Konkurrenz
durch die Arithmetische Codierung.
Moderne Codes mit variabler Wortlnge sind sogenannte prfixfreie Codes8 weil sie die PrefixEigenschaft9 besitzen: Es gibt es kein Codewort, das Prfix eines anderen Codewortes ist. Fr Grauwerte heit das, kein Codewort eines Grauwertes gj ist der Anfang eines anderen Grauwertes gk . Dies
ist fr die Decodierung wichtig, wie wir spter sehen werden.
Ein Code mit variabler Wortlnge ist nicht notwendigerweise ein prfixfreier Code, wie wir am Morsealphabet sehen knnen. Die Wortlnge ist zwar variable, aber beispielsweise kann die Zeichenfolge .-- als AT oder als EM (Tab. 1.5) decodiert werden. Deshalb bentigt der Morsecode ein weiteres
Symbol (gewhnlich ein Leerzeichen oder eine kleine Pause) um die Symbole seines Alphabets zu
separieren.
Die Huffman-Codierung sei an einem Beispiel erklrt
Beispiel 1.5
Wir verwenden Abb. 1.1 und Tab. 1.4).
1. Erzeuge die Wahrscheinlichkeitstabelle des Bildes (Tab. 1.4 Zeile 4).
8 irrtmlicherweise
9 auch

auch Prfixcodes genannt


Fano-Bedingung genannt

1.1 Verlustfreie Bildkompression

19

2. Sortiere die Tabelle aufsteigend nach Wahrscheinlichkeiten


gj
p(gj )

E1hex
0.0078

32hex
0.0273

FFhex
0.0352

AFhex
0.1133

82hex
0.1406

4Bhex
0.1914

F0hex
0.4844

Tabelle 1.6: aus Tab. 1.4, Zeile 1 und 4

3. Beginne mit den zwei kleinsten Wahrscheinlilchkeiten und verbinde sie mit einem Knoten. Er
erhlt als Wert die Summe der beiden Wahrscheinlichkeiten.
4. Weise den Wert 0 dem Knoten mit der kleineren Summe, Wert 1 dem Wert mit der greren
Summe zu.
P
5. Wiederhole Schritte 3 und 4 bis ein einziger Knoten mit der Wahrscheinlichkeit p(gj ) = 1
brig ist 10 (Tab. 1.7).

gj
p(gj )
Stufe 1
p(gj )
Stufe 2
p(gj )t
Stufe 3
p(gj )
Stufe 4
p(gj )
Stufe 5
p(gj )
Stufe 6
p(gj )

E1hex
32hex
FFhex
AFhex
0.0078 0.0273 0.0352 0.1133
0
1
0.0351
0.0352 0.1133
0
1
0.0703
0.1133
0
1
0.1836
1
0.3242
1
0.5156
1
1.0000

82hex
0.1406

4Bhex
0.1914

F0hex
0.4844

0.1406

0.1914

0.4844

0.1406

0.1914

0.4844

0.1406
0

0.1914

0.4844

0.1914
0

0.4844
0.4844
0

Tabelle 1.7: Huffman Codierung des Beispielbildes

Dieser Algorithmus kann als Baumstruktur dargestellt werden, dem Huffman-Baum (Abb. 1.4). Die
Wurzel liegt in der untersten Zeile, und die Bltter werden von unten nach oben codiert, in dem
zwischen der Wurzel und dem Blatt alle 0 und 1 aufgesammelt werden. Tab. 1.8 zeigt den HuffmanCode des Beispiels Abb. 1.1.
Wenn wir alles addieren, erhalten wir 545 Bits oder 68.125 Bytes fr das komprimierte Bild. Fr die
Kompressionsrateund die relative Datenredundanznach Gl. 1.1 erhalten wir:
CR =

256 8
= 3.758
545

10 Einige Algorithmen sortieren nach jeder Summenbildung bzw. jedem neuen Knoten. Dies kann vermieden werden wenn
der kleineren Wahrscheinlichkeit der Wert 0 und der greren der Wert 1 zugewiesen wird

20

1 Methoden der Bildkompression


E1

32

1
FF

1
AF

1
82

0
4B

0
F0

Abbildung 1.4: Huffman-Baum des Beispiels Abb. 1.1.

gj
H(gj )
Huffman Code
bits

32hex
7
111001
76

4Bhex
49
10
49 2

82hex
36
110
36 3

AFhex
29
1111
29 4

E1hex
2
111000
26

F0hex
124
0
124 1

FFhex
9
11101
95

Tabelle 1.8: Huffman-Code fr das Beispielbild Abb. 1.1 und Bitzahl fr jeden Grauwert

RD = 1

545
= 0.734
256 8

und die Entropie ist HQ = 2.1289 Bit (Tab. 1.9) Die Huffman-Codierung kommt also (zumindest in
diesem Beispiel) der idealen Situation Gl. 1.8 ziemlich nahe. Da der Huffmann-Code ein Prfix-Code
ist, ist die Decodierung eindeutig.
Aber sogar hier gibt es ein Haar in der Suppe: Der Hauptnachteil der Huffman Methode ist, dass die
Effizienz der Kompression nur dann optimal ist, wenn die Wahrscheinlichkeiten der zu codierenden
1
Symbole ganze Potenzen von sind. Um dies zu erklren, betrachten wir ein Symbol im zu codieren2
9
den Alphabet mit der Wahrscheinlichkeit p =
. Dieses Symbol trgt I = log2 p 0.152 Bits an
10
Information. Das kleinste Codewort, das diesem Symbol durch die Huffman Codierung zugeordnet
werden kann, hat die Lnge 1 Bit, und 1 Bit > 0.152 Bit. Deshalb wird jeder Huffman Code immer
eine gewisse Redundanz in sich tragen.
Der Huffman Code macht es erforderlich, dass fr die Decodierung eines jeden Bildes die Codetabelle im Bildheader vorhanden sein muss, es sei denn, es wird eine Codetabelle generiert, die fr alle
oder eine gewisse Anzahl von Bilder gilt. Die JPEG Kompression benutzt beispielsweise die Huff-

1.1 Verlustfreie Bildkompression


gi
H(gi )
p(gi )
L(gi )
HQ (gi )

32hex
7
0.0273
6
0.1642

21
4Bhex
49
0.1914
2
0.3828

82hex
36
0.1406
3
0.4219

AFhex
29
0.1133
3
0.4531

E1hex
2
0.0078
6
0.0469

F0hex
124
0.4844
1
0.4844

FFhex
9
0.0352
5
0.0.1758

sum
256
1.0
n.a.
2.1289

Tabelle 1.9: Informationstheoretische Werte des Huffman-codierten Beispielbildes Abb. 1.1b.


Die Tabelle zeigt die Grauwerte gi (hexadezimal), das Histogramm H(gi ), die Wahrscheinlichkeiten p(gj ),
die Wortlngen L(gi ) der Huffman-codierten Grauwerte sowie die Entropien HQ (gi ) = p(gj )L(gj ) unter
Huffman-Codierung und die jeweiligen Summen, falls definiert.

man Codierung als Zwischenschritt. Die Codetabelle dafr wurde ein einziges Mal fr eine statistisch
gengend groe Anzahl verschiedener Bilder generiert und ist fr alle Bilder gleich. Sie ist Teil des
JPEG Standards. Daher muss bei JPEG die Huffman Codetabelle nicht jedem Bild beigegeben werden.

1.1.5 Die Arithmetische Codierung


Vor der Entwicklung der arithmetischen Codierung in den 1970er Jahren war Huffman die optimale
verlustfreie Kompressionsmethode, da sie relativ nahe an die durch die Informationstheorie vorgegebene Grenze kam, sie in manchen Fllen sogar erreichte.
Vorarbeiten fr die arithmetische Codierung wurden allerdings schon in den sechziger Jahren geleistet
(Abramson [1]) und in den siebziger und achtziger Jahren erfolgte die Entwicklung des Algorithmus,
wie er heute bekannt ist durch Rubin [12], Rissanen [11] und Langdon [9], um nur ein paar Namen
zu nennen.
Heute gibt es eine Menge versteckter Anwendungen von arithmetischer Codierung wie hardwareimplementierte CODECS, beispielsweise die Fax-Protokolle G3 und G4.
Die Arithmetische Kompression codiert einen Datenstrom (beispielsweise ein Bild) in eine einzige
reelle Zahl.

Der Algorithmus der arithmetischen Codierung


P
Offensichtlich gilt fr jedes Bild die Gleichung p(gj ) = 1 und fr die Wahrscheinlichkeiten p(gj )
gilt: p(gj ) [0; 1). Auf der anderen Seite wissen wir, dass das halboffene Interval [0; 1) unendlich
viele Zahlen enthlt. Die arithmetische Codierungsmethode codiert den gesamten Datenstrom ein
eine Zahl y [0; 1) indem das Intervall [0; 1) rekursiv mit Hilfe der Wahrscheinlichkeiten p(gj ) in
immer kleinere Intervalle unterteilt wird.
Nehmen wir an, wir haben einen Datenstrom von 5 Bytes (Pixel), und wir haben 2 verschiedene
GrauP
werte g0 = Ahex und g1 = Bhex . Sei p(g0 ) = 0.6, p(g1 ) = 0.4 wie in Tab. 1.10. Da
p(gj ) = 1
ist, unterteilen die beiden Wahrscheinlichkeiten das Interval [0; 1) in zwei Teilintervalle. Beide Teil-

22

1 Methoden der Bildkompression

gj
H(gj )
p(gj )
pK (gj )
Intervals

Ahex
3
0.6
0.6
lo0 = 0.0 hi0 = 0.6

Bhex
2
0.4
1.0
lo1 = 0.6 hi1 = 1.0

sum
5
1.0
n.a
n.a

p(A) = 0.6

1.0

0.6

0.0

Tabelle 1.10: Wahrscheinlichkeiten und kumulierte Wahrscheinlichkeiten


Die Wahrscheinlichkeiten p(Ahex ) = 0.6 und p(Bhex ) = 0.4 unterteilen das Intervall [0; 1) in zwei Teile.
Beide werden durch eine untere Grenze lo und eine obere Grenze hi begrenzt. Die Tabelle zeigt auerdem
das Histogramm H(gj ) und die kumulierten Wahrscheinlichkeiten pK (gj ) )

p(B) = 0.4

Abbildung 1.5: Unterteilung des Intervalls [0,1)


Die Wahrscheinlichkeiten p(Ahex ) = 0.6 und p(Bhex ) = 0.4 teilen das Intervall [0; 1) in zwei Teile.

intervalle haben eine untere Grenze lo und eine obere Grenze hi. Abb. 1.5 zeigt die anfngliche Unterteilung des Intervalls [0; 1). g0 = Ahex gehrt zu dem ersten 60% des Intervalls mit der unteren
Grenze 0.0 und der oberen Grenze 0.6, und g1 = Bhex zu den zweiten 40% des Intervalls mit unterer
Grenze 0.6 und oberer Grenze 1.0. Zu Anfang der Codierung wird die zu codierende Datenmenge
durch das gesamte Interval [0; 1) reprsentiert. Wenn der Datenstrom der 5 Symbole eingelesen wird,
werden diese nach ihren Wahrscheinlichkeiten codiert, die durch die jeweilige untere Grenze lok und
der oberen Grenze hik (k = 0 . . . 4) festgelegt ist. lok and hik werden durch folgende Gleichungen
berechnet:
lok = lok1 +pK (gj1 ) (hik1 lok1 )
hik = lok1 +pK (gj ) (hik1 lok1 )
mit:
lo:
hi:
pK (gj ):
pK (gj1 ):

(1.9)

untere Intervallgrenze
obere Intervallgrenze
kumulierte Wahrscheinlichkeit des momentanen Symbols in Tab. 1.10
kumulierte Wahrscheinlichkeit des Symbols vor dem momentanen in Tab. 1.10

wobei die kumulierte Wahrscheinlichkeit pK (gj1 ) = 0 gesetzt wird, wenn pK (gj ) die am weitesten
links stehende Wahrscheinlichkeit in Tab. 1.10 ist.
Dies soll an einigen Beispielen erklrt werden. Nehmen wir an, wir haben ein Alphabet mit 2 Symbolen (Grauwerten), deren Wahrscheinlichkeiten Tab. 1.5 zeigt.
Beispiel 1.6
Sei der Datenstrom der Grauwerte AAABB#
Gl. 1.9, Tab. 1.11 und Abb. 1.6 veranschaulichen den Vorgang. Das erste A reduziert das Intervall [0; 1) auf [0; 0.6), das zweite A auf [0; 0.36), und das dritte A reduziert es [0; 0.216), das erste B auf [1296; 0.216) usw. Der Datenstrom AAABB wird nun also reprsentiert durch das Intervall [0.18144; 0.216) und kann durch irgendeine reelle Zahl y codiert werden mit 0.18144 y

1.1 Verlustfreie Bildkompression

23

gk

lok
lo = 0.0
lo0 = lo = 0.0

lo1 = lo0 = 0.0

lo2 = lo1 = 0.0

lo3 = lo2 + (hi2 lo2 )pK (A)


= 0.1296
lo4 = lo3 + (hi3 lo3 )pK (A)
= 0.18144

hik
hi = 1.0
hi0 = lo + (hi lo)pK (A)
= 0.6
hi1 = lo0 + (hi0 lo0 )pK (A)
= 0.36
hi2 = lo1 + (hi1 lo1 )pK (A)
= 0.216
hi3 = lo2 + (hi2 lo2 )pK (B)
= 0.216
hi4 = lo3 + (hi3 lo3 )pK (B)
= 0.216

1.0

0.6

0.0

Tabelle 1.11: Arithmetische Codierung der Sequenz AAABB.

[0.00000; 1.00000)

[0.00000; 0.60000)

[0.00000; 0.36000)
B

[0.00000; 0.21600)

[0.12960; 0.21600)
[0.18144; 0.21600)

Abbildung 1.6: Arithmetische Codierung des Zeichenstrings AAABA.


Er wird codiert mit einer Dezimalzahl zwischen 0.18144 und 0.216, z.B. mit 0.1875dez = 0.0011bin . Aus
darstellerischen Grnden werden die Subintervalle, die bei der Codierung jedes Zeichens entstehen, jeweils
auf die Lnge 1 des ursprnglichen Intervalls gestreckt.

0.216, beispielsweise mit y = 0.1875. Warum whlen wir nicht y = 0.2? Da wir die Dezimalzahl
binr verschlsseln mssen, whlen wir diejenige mit der kleinsten Anzahl von Nachkommastellen in
der Binrdarstellung.
Die Gre s des letzten Unterintervalls bestimmt die Anzahl der Bits, die bentigt werden, um eine
Zahl in diesen Grenzen zu bestimmen. Die Anzahl der Bits, die ein Unterintervall der Gre s von
[0, 1) bentigt, betrgt log2 s. Fr dieses und die nchsten beiden Beispiele ist s = 0.03456, also
sollten wir
log2 s =

ln s
= 4.85
ln 2

mit:
s:
Gre des letzten Unterintervalls bei der arithmetischen Codierung
log2 s: Gre der arithmetisch komprimierten Daten
also 4 oder 5 Bits bentigen, um die Daten zu codieren.

24

1 Methoden der Bildkompression

1.0

0.6

0.0

Beispiel 1.7
Sei der Datenstrom der Grauwerte ABABA#

[0.00000; 1.00000)
B

[0.00000; 0.60000)

[0.36000; 0.60000)
B

[0.36000; 0.50400)

[0.44640; 0.50400)
[0.44640; 0.48096)

Abbildung 1.7: Arithmetische Codierung des Zeichenstrings ABABA.


Er wird codiert mit einer Dezimalzahl zwischen 0.4464 und 0.48096, z.B. mit 0.46875dez = 0.01111bin

Der Datenstrom ABABA wird also in die reelle Zahl y with


0.4464 y 0.48096, codiert, beispielsweise in y = 0.46875dez = 0.01111bin.

1.0

0.6

0.0

Beispiel 1.8
Sei der Datenstrom der Grauwerte BAABA#

[0.00000; 1.00000)

[0.60000; 1.00000)

[0.60000; 0.84000)
B

[0.60000; 0.74400)
[0.65760; 0.74400)
[0.65760; 0.70944)

Abbildung 1.8: Arithmetische Codierung des Zeichenstrings BAABA.


Er wird codiert mit einer Dezimalzahl zwischen 0.657600 und 0.70944, z.B. mit 0.6875dez = 0.1011bin

Der Datenstrom BAABA wird also in die reelle Zahl y mit 0.6864 y 0.0.72096, codiert, beispielsweise in y = 0.6875dez = 0.1011bin.
Bisher haben wir das EOF-Zeichen # nicht mitcodiert. Dies ist jedoch, wie sich spter zeigen wird, fr
die Decodierung ntig.

1.1 Verlustfreie Bildkompression

25

Am Ende sei hier noch ein umfangreicheres Beispiel aufgefhrt, welches den Algorithmus der die
Arithmetische Codierung noch ausfhrlicher zeigt. Das EOF-Zeichen # wird wie ein weiteres Zeichen
des Alphabets (bzw. wie ein weiterer Grauwert in einem Bild) behandelt
Beispiel 1.9
Wir codieren die Grauwertsequenz ABAABCDAABBADAA#
Die statistischen Daten zeigt Tab. 1.12 die Codierungsschritte im einzelnen Tab. 1.13 und Abb. 1.9

gj
H(gj )
p(gj )
pK (gj )
loj hij

A
8
0.5
0.5
0.0 0.5

B
4
0.25
0.75
0.5 0.75

C
1
0.0625
0.8125
0.75 0.8125

D
2
0.125
0.9375
0.8125 0.9375

EOF

1
0.0625
1.0
0.9375 1.0

sum
16
1.0
n.a
n.a

Tabelle 1.12: Wahrscheinlichkeiten und kumulierte Wahrscheinlichkeiten zu Bsp. ??

gk

lo1 = lo0 + (hi0 lo0 )pK (A)


= 0.25
lo2 = lo1 = 0.25

lo3 = lo2 = 0.25

10

lo4 = lo3 + (hi3 lo3 )pK (A)


= 0.265625
lo5 = lo4 + (hi4 lo4 )pK (B)
= 0.271484375
lo6 = lo5 + (hi5 lo5 )pK (C)
= 0.271881103515625
lo7 = lo6
= 0.271881103515625
lo8 = lo7
= 0.271881103515625
lo9 = lo8 + (hi8 lo8 )pK (A)
= 0.2718887329101562
lo10 = lo9 + (hi9 lo9 )pK (A)
= 0.2718906402587891

lok
lo = 0.0
lo0 = lo = 0.0

hik
hi = 1.0
hi0 = lo + (hi lo)pK (A)
= 0.5
hi1 = lo0 + (hi0 lo0 )pK (B)
= 0.375
hi2 = lo1 + (hi1 lo1 )pK (A)
= 0.3125
hi3 = lo2 + (hi2 lo2 )pK (A)
= 0.28125
hi4 = lo3 + (hi3 lo3 )pK (B)
= 0.2734375
hi5 = lo4 + (hi4 lo4 )pK (C)
= 0.27197265625
hi6 = lo5 + (hi5 lo5 )pK (D)
= 0.271942138671875
hi7 = lo6 + (hi6 lo6 )pK (A)
= 0.271911621093750
hi8 = lo7 + (hi7 lo7 )pK (A)
= 0.2718963623046875
hi9 = lo8 + (hi8 lo8 )pK (B)
= 0.2718925476074219
hi10 = lo9 + (hi9 lo9 )pK (B)
= 0.2718915939331055
Fortsetzung nchste Seite

26

1 Methoden der Bildkompression

Fortsetzung

k
11

gk
A

12

13

14

15

lok
lo11 = lo10
= 0.2718906402587891
lo12 = lo11 + (hi11 lo11 )pK (C)
= 0.2718910276889801
lo13 = lo12
= 0.2718910276889801
lo14 = lo13
= 0.2718910276889801
lo15 = lo14 + (hi14 lo14 )pK (D)
= 0.0.2718910416588187

hik
hi11 = lo10 + (hi10 lo10 )pK (A)
= 0.2718911170959473
hi12 = lo11 + (hi11 lo11 )pK (D)0.
= 0.2718910872936259
hi13 = lo12 + (hi12 lo12 )pK (A)
= 0.2718910574913025
hi14 = lo13 + (hi13 lo13 )pK (A)
= 0.2718910425901413
hi15 = lo14 + (hi14 lo14 )pK (#)
= 0.2718910425901413

Tabelle 1.13: Arithmetische Codierung des Beispiels 1.9

Da die Gre des letzten Unterintervalls das Produkt der Wahrscheinlichkeiten der Eingangssymbole
ist, erhalten wir
s=

N
1
Y

p(gj )

j=0

log2 s =

N
1
X

log2 p(gj )

N
1
X

ln p(gj )
ln 2

j=0

s=

j=0

= N

K
X

p(gi )

j=0

ln p(gj )
ln 2

= N HQ
mit:
s:
N:
K:
HQ :

Gre des letzten Unterintervalls


Anzahl der Eingangssymbole
Anzahl Spalten in der Wahrscheinlichkeitstabelle
Entropie

Daher ist die Anzahl der Bits, die durch die Arithmetische Codierung fr die gesamte Nachricht
generiert wird, genau gleich N HQ und die durchschnittliche Lnge pro Symbol
Lges
= HQ
N
also gleich der Entropie. Die arithmetische Codierung erreicht die Grenze der verlustfreien Kompression, welche durch die Informationstheorie vorgegeben ist. Es kann also nach Voraussetzung kein
besseres verlustfreies Kompressionsverfahren geben. Daher knnen wir auch voraussagen, mit wievielen Bits das Beispielbild Abb. 1.1b) arithmetisch codiert werden kann: Es sind nach Tab. 1.4
Lavg =

N HQ = 256 2.0835 = 534 Bit

27

0.75
0.8125

0.5

0.0

0.9375
1.0

1.1 Verlustfreie Bildkompression

[0.0000000000000000; 1.0000000000000000)
B

[0.0000000000000000; 0.5000000000000000)

[0.2500000000000000; 0.3750000000000000)

[0.2500000000000000; 0.3125000000000000)
B

[0.2500000000000000; 0.2812500000000000)
C

[0.2656250000000000; 0.2734375000000000)
D

[0.2714843750000000; 0.2719726562500000)

[0.2718811035156250; 0.2719421386718750)

[0.2718811035156250; 0.2719116210937500)
B

[0.2718811035156250; 0.2718963623046875)

[0.2718887329101562; 0.2718925476074219)

[0.2718906402587891; 0.2718915939331055)
D

[0.2718906402587891; 0.2718911170959473)

[0.2718910276889801; 0.2718910872936259)

[0.2718910276889801; 0.2718910574913025)
#

[0.2718910276889801; 0.2718910425901413)
[0.2718910416588187; 0.2718910425901413)

Abbildung 1.9: Arithmetische Codierung des Zeichenstrings ABAABCDAABBADAA#.


Er wird codiert mit einer Dezimalzahl zwischen 0.2718910416588187 und 0.2718910425901413, z.B. mit
0.2718910425901413dez = 0.01000101100110101010011011bin . Aus darstellerischen Grnden werden
die Subintervalle, die bei der Codierung jedes Zeichens entstehen, jeweils auf die Lnge 1 des ursprnglichen Intervalls gestreckt.

28

1 Methoden der Bildkompression

Die Decodierung
Der Decodierer erhlt als Eingabe die codierte Zahl y R. Die Tabelle der kumulierten Wahrscheinlichkeiten muss bekannt sein. Sie wird entweder im Header der Datei, welche die Zahl y enthlt mit
bergeben oder sie wird aus einer Vielzahl von Bildern oder Texten generiert, wie zum Beispiel beim
Fax Standard. Die Decodierung ist ein iterativer Prozess. Man beginnt mit y0 = y und das erste
Intervall [lo0 ; hi0 ) mit lo0 < y0 < hi0 ) wird berechnet. Die iterative Decodiergleichung lautet
yk =

yk1 lok1
p(gk1 )

(1.10)

Davon werden alle decodierten Symbole generiert. Zur Veranschaulichung decodieren wir die obigen
Beispiele.
a) Die Decodierung von y = 0.1875 aus Abb. 1.6 Seite 23 zeigt Tab. 1.14 und Abb. 1.10.

yk

0
1
2
3
4

0.1875
0.3125
0.5208
0.8681
0.6703

Intervall
lok . . . hik
0.0 0.1875 0.6
0.0 0.3125 0.6
0.0 0.5208 0.6
0.6 0.8681 1.0
0.6 0.6703 1.0

Decodierter
Grauwert
A
A
A
B
B

p(gk )
0.6
0.6
0.6
0.4
0.4

Tabelle 1.14: Arithmetische Decodierung der Sequenz AAABB.

b) Die Decodierung beiden anderen Beispiele zeigen Abb. 1.11 und Abb. 1.12.
Eine kleine Schnheitsreparatur muss jedoch noch gemacht werden: Der Decodierer hrt nicht auf zu
codieren! In den obigen Beispielen wurde jeweils abgebrochen, wenn die bekannte Anzahl von fnf
Zeichen, die wir decodiert haben, wieder generiert waren. In der Praxis ist das jedoch unmglich,
da wir nicht wissen, wieviele Zeichen codiert wurden. Dieses Problem lst man dadurch, dass das #Zeichen, das nur ein einziges Mal am Dateiende auftritt, mitcodiert wird. Dies ist in Beispiel Abb. 1.13
gezeigt.

1.0

0.6

29

0.0

1.1 Verlustfreie Bildkompression

[0.00000; 1.00000)

[0.00000; 0.60000)

[0.00000; 0.36000)

[0.00000; 0.21600)

[0.12960; 0.21600)
[0.18144; 0.21600)

1.0

0.6

0.0

Abbildung 1.10: Arithmetische Decodierung der Zahl 0.1875dez .


Das Kreuz bezeichnet in allen Intervallen die Zahl, welche decodiert werden soll. Das codierte Beispiel
siehe Abb. 1.6.

[0.00000; 1.00000)
B

[0.36000; 0.60000)
B

[0.00000; 0.60000)

[0.36000; 0.50400)
[0.44640; 0.50400)
[0.44640; 0.48096)

Abbildung 1.11: Arithmetische Decodierung der Zahl 0.46875dez .


Das Kreuz bezeichnet in allen Intervallen die Zahl, welche decodiert werden soll. Das codierte Beispiel
siehe Abb. 1.7.

1.0

0.6

1 Methoden der Bildkompression

0.0

30

B
A

[0.60000; 1.00000)

[0.60000; 0.84000)

[0.00000; 1.00000)

[0.60000; 0.74400)
[0.65760; 0.74400)
[0.65760; 0.70944)

Abbildung 1.12: Arithmetische Decodierung der Zahl 0.6875dez .


Das Kreuz bezeichnet in allen Intervallen die Zahl, welche decodiert werden soll. Das codierte Beispiel
siehe Abb. 1.8.

0.5

0.0

0.9375
1.0

31

0.75
0.8125

1.1 Verlustfreie Bildkompression

[0.0000000000000000; 1.0000000000000000)
B

[0.0000000000000000; 0.5000000000000000)

[0.2500000000000000; 0.3750000000000000)

[0.2500000000000000; 0.3125000000000000)
B

[0.2500000000000000; 0.2812500000000000)
C

[0.2656250000000000; 0.2734375000000000)

[0.2714843750000000; 0.2719726562500000)

[0.2718811035156250; 0.2719421386718750)

[0.2718811035156250; 0.2719116210937500)
B

[0.2718811035156250; 0.2718963623046875)

B
A

[0.2718887329101562; 0.2718925476074219)
[0.2718906402587891; 0.2718915939331055)

[0.2718906402587891; 0.2718911170959473)

[0.2718910276889801; 0.2718910872936259)

[0.2718910276889801; 0.2718910574913025)
#

[0.2718910276889801; 0.2718910425901413)
[0.2718910416588187; 0.2718910425901413)

Abbildung 1.13: Arithmetische Decodierung der Zahl 0.2718910425901413dez .


Das Kreuz bezeichnet in allen Intervallen die Zahl, welche decodiert werden soll. Das codierte Beispiel
siehe Abb. 1.9.

32

1 Methoden der Bildkompression

1.2 Verlustbehaftete Bildkompression


Daten, die verlustbehaftet komprimiert wurden, knnen nicht wiederhergestellt werden. Es bleiben
immer Unterschiede zur ursprnglichen Bilddatei, die aber visuell nicht sichtbar sind. Jedoch kann
man wesentlich hhere Kompressionsraten erzielen: CR = 20 to CR = 50 oder hher. Diese Methoden entstanden im Umfeld des Internets und den Folgetechnologien, wo es ntig ist, wesentlich hhere
Datenraten zu bertragen und zu bearbeiten, beispielsweise bei der Bildsuche in Bilddatenbanken und
hnlichen Anwendungen.
Heutige Kompressionstechniken sind besonders stark auf Bildern mit mehreren Komponenten, beispielsweise auf Echtfarbbildern. Deshalb verwenden wir fr Erklrungen das Beispielbild Abb. 1.1a.
Ein typischer11 verlustbehafteter Kompressionsalgorithmus beinhaltet die folgenden Schritte:
Vorverarbeitung
Trennen der Farbkomponenten, eventuell Transformation des Farbraumes
Unterteilung der Farbkomponentenbilder in Unterbilder
Bildtransformation
die diskrete Fourier-Transformation (DFT, FFT) mit komplexem Ergebnis
die diskrete Cosinus-Transformation (DCT) mit reellem Ergebnis wird von JPEG verwendet
die diskrete Wavelet-Transformation (DWT) wird von JPEG2000 verwendet
Bei der Hauptkomponentenanalyse (Principal Component Analysis, PCA) [7, 8] wird
eine Kovarianzmatrix des Originalbildes erzeugt und es werden die Eigenvektoren und
Eigenwerte dieser Matrix berechnet. Dasselbe Prinzip verwenden die diskrete KarhunenLove-Transformation (KLT) und die Hotelling-Transformation (HT).
Die mathematische Grundlagen dieser Verfahren sind statistische Momente zweiter Ordnung
Independent component analysis (ICA) [6] ist eine Erweiterung der PCA und beruht auf
statistischen Momenten hherer Ordnung. Es werden weitgehend unabhngige Basisvektoren generiert.
Alle Transformationen bereiten den Quantisierungsschritt vor, der die eigentlichen Verluste einer verlustbehafteten Kompression erzeugt.
Quantisierung der Werte der Transformationskoeffizienten
Der Quantisierer reduziert die Genauigkeit der Transformationskoeffizienten und damit die Anzahl der Bits, die fr die Speicherung bentigt werden. Dieser Schritt ist fr den Informationsverlust verantwortlich, da die verlorene Genauigkeit natrlich nicht wieder hergestellt werden
kann. Andererseits ist er auch der Grund fr die hohen Kompressionsraten der verlustbehafteten
11 Hier werden nur die Haupteigenschaften beschrieben, jede Implementierung eines CODECs kann weitere Eigenschaften
aufweisen

1.2 Verlustbehaftete Bildkompression

33

Bildkompression. Die Quantisierung kann individuell auf jeden Koeffizienten angewandt werden, bekannt unter dem Begriff Scalare Quantisierung (SQ) oder mit eine ganzen Gruppe von
Koeffizienten, was mit VeKtorquantisierung (VQ) bezeichnet wird.
Der Entropiecodierer
Ein weiterer verlustfreier Kompressionsschritt setzt einen Entropiecodierer, meist die HuffmanCodierung (siehe Abschnitt 1.1.4) oder die Arithmetische Codierung (siehe Abschnitt 1.1.5)
ein. JPEG beispielsweise benutzt die Huffman-Codierung, JPEG2000 stellt die Huffman- und
die Arithmetische Codierung zur Wahl. Sowohl JPEG als auch JPEG2000 schlieen eine RLECodierung (siehe Abschnitt 1.1.1) an.
Der Decoder invertiert auch hier die Schritte des CODECs. Allerdings kann natrlich die Information,
die im verlustbehafteten Schritt verloren gegangen ist, nicht wiederhergestellt werden. Deshlab macht
es hier auch keinen Sinn, ber Datenredundanz zu sprechen, da weit mehr Daten entfernt werden
als die redundante. Bestehen bleibt jedoch die Kompressionsrate CR und der Begriff Bit-pro-Pixel
Wert Cbpp als Mazahlen.

1.2.1 Der JPEG-Standard


Der Begriff JPEG hat mehrere Bedeutungen:
Joint Photographic Experts Group, eine Gruppe von Experten, die 1986 entstand um einen
neuen Standard zur Kompression von photografischen Farb- und Schwarzweibildern zu entwickeln [4].
den von dieser Expertengruppe entwickelte Standard [4], der 1992 eingefhrt wurde, und der
aus einer Anzahl von Empfehlungen bestand, Farb- und Schwarzweibilder verlustbehaftet zu
komprimieren. Dabei wird unterschieden:
der Basisalgorithmus (baseline process)
der erweiterte DCT-basierte Algorithmus (extended DCT-based process)
der verlustfreie Algorithmus (lossless process)
der hierarchische Algorithmus (hierarchical process)
jede Umsetzung des Standards in einen CODEC
die Dateierweiterung eines Bildes, das mit einem der JPEG-Algorithmen komprimiert wurde
(geschrieben *.jpg)
Der am hufigsten verwendete Algorithmus ist der Basisalgorithmus, der Basisalgorithmus, der auch
in diesem Abschnitt beschrieben wird. JPEG basiert auf der diskreten Cosinustransformation (vor der
Quantisierung), der Huffman Codierung und einer modifizierten RLE-Codierung im verlustfreien Teil.
JPEG setzt eine Pixeltiefe von 8 Bit pro Bildkomponente voraus und kann bis zu 4 Bildkomponenten
verarbeiten.

34

1 Methoden der Bildkompression

Zugrundegelegt wird bei JPEG das Modell eines verlustbehafteten CODEC (siehe Abschnitt 1.2) , das
aus den Komponenten Vorverarbeitung, Transformation, Quantisierung, Prdiktionscodierer (RLE),
Entropiecodierer (Huffman) besteht. Die einzelnen Schritte werden am Abb. 1.1b erklutert.
Die Vorverarbeitung
Dieser Schritt bereitet das Bild auf den DCT-Schritt vor.
Die Farbraumtransformation
Wie oben erwhnt, kann der JPEG-Standard bis zu 4 Bildkpmponenten verarbeiten. Unser
Beispielbild Abb. 1.1b ist ein Echtfarbbild, das aus den drei Komponenten R, G und B besteht (Abb. A.3). Im Vorverarbeitunsschritt wird es in den Y Cb Cr Farbraum transformiert,
welche aus den RGB-Komponenten durch Gl. 1.11 berechnet werden..
Y
Cb
Cr

= 0.299R
+ 0.587G + 0.114B
= 0.16875R 0.33126G +
0.5B
= 0.5R
0.41869G 0.08131B

+ 128
+ 128

(1.11)

mit:
Y Cb Cr : Luminanz, Chrominanz-Blau, Chrominanz-Rot
RGB: Rot, Grn, Blau
Wie Gl. 1.11 zeigt, wird der Grnanteil in der Luminanzkomponente am hchsten gewichtet. Dies trgt der bekannten Tatsache Rechnung, dass die spektrale Empfindlichkeit
des menschlichen Auges bei etwa 540 nm am hchsten ist. Die beiden Chrominanzkomponenten Cb und Cr gewichten die Farben Blau bzw. Rot am hchsten (Abb. 1.14). Der
Vollstndigkeit halber seien auch die umgekehrten Gleichungen gegeben:
R
G
B

=Y
=Y
=Y

+
0.34414(Cb 128)
1.772(Cb 128)

1.402(Cr 128)
0.71414(Cr 128)

(1.12)

generieren die RGB-Werte aus den Y Cb Cr -Werten. Das Y Cb Cr -Bild nach der Farbtransformation zeigt Abb. A.412 .
Unterabtastung der Chrominanzkomponenten
Whrend die Luminanzkomponente Y unverndert weiterverarbeitet wird, werden die beiden Chrominanzkomponenten Cb und Cr mit einem Faktor zwei in jede Richtung unterabgetastet (Format 4:2:0). Um bei unserem Beispielbild zu bleiben: es werden die Cb und
die Cr -Komponenten von Abb. A.4 der Gre 16 16 unterabgetastet und das Resultat
sind zwei Chrominanzbilder der Gre 8 8.
Tiling13
Theoretisch knnte sich jetzt die DCT-Transformation anschlieen, die Koeffizienten mit
niedrigen Werten knnen zu 0 gesetzt werden und die Daten wren komprimiert. Aber
JPEG macht es raffinierter: gewhnlich gibt es in Bildern lebhaftere und weniger lebhafte Teile, dh. Teile mit DCT-Koeffizienten hherer und weniger hoher Ordnung . Mit
12 Drucker

und RGB-Bildschirme zeigen alle Bilder als RGB-Bild, daher die anderen Farben. Ein Y Cb Cr -Bildschirm wrde
das Bild zeigen wie Abb. 1.1b
13 to tile (eng.) pflastern, Fliesen verlegen

1.2 Verlustbehaftete Bildkompression

a
a)
b)

35

Abbildung 1.14: Echtfarbenbild


RGB-Komponenten
Y Cb Cr -Komponenten (im RGB-Modus dargestellt)

einer einzigen DCT-Transformation ber das gesamte Bild und anschlieender Quantisierung knnten die Koeffizienten hherer Ordnung, die in der Regel einen kleineren Betrag
haben, verloren gehen, d.h. die Kompression wrde ein unerwnschtes Tiefpassverhalten
zeigen. Dem beugt das Tiling vor. Die Luminanzkomponente und die unterabgetasteten
Chrominanzkomponenten werden jeweils in Unterbilder der Gre 8 8 Pixels zerlegt14.
Durch Tiling entstehen also aus dem Beispielbild Abb. A.4 sechs Blcke: vier Luminanzund 2 Chrominanzblcke, jeweils der Gre 8 8 Pixel. Sie bilden eine sog. minimale
Codiereinheit (MCU) . Abb. 1.15 zeigt die MCU fr das Beispielbild Abb. A.4. Da dieses
eine Bildge von 16 16 Pixel hatte, erhalten wir eine einzige MCU. Ein Bild der
Gre 512 512 erzeugt 1024 MCUs mit jeweils 6 Blcken der Gre 8 8.
Jeder der 6 Blcke einer MCU wird Dateneinheit (DU) . Die Luminanz-DUs werden
Y DU genannt und die Chrominanz-DUs Cb DU und Cr DU .
Die MCUs
M CU = Y00 DU Y01 DU Y10 DU Y11 DU Cb DU Cr DU

(1.13)

mit:

14 Die Gre 8 8 wurde aus praktischen Grnden gewhlt:: die Zweierpotenz wegen der schnellen DCT-Transformation
und 8 8 = 64 Bytes war geeignet sowohl fr die 32-Bit- als auch fr die 64-Bit-Technologie.

36

1 Methoden der Bildkompression

Y00 DU : Obere linke Luminanz DU einer MCU


Y01 DU : Obere rechte Luminanz DU einer MCU
Y10 DU : Untere linke Luminanz DU einer MCU
Y11 DU : Untere rechte Luminanz DU einer MCU
Cr DU : Chrominanz-Rot DU einer MCU
Cb DU : Chrominanz-Blau DU einer MCU
werden an den nchsten Vorverarbeitungsschritt weitergereicht.

Abbildung 1.15: Beispielbild Abb. 1.14b bzw. Abb. A.4 als MCU
Die Luminanzkomponente Y des Y Cb Cr -Bildes wurde in DUs der Gre 88 unterteilt (a-d). Beide
Chrominanzkomponenten Cb (e) und Cr (f) wurden in beide Richtungen mit einem Faktor 2 unterabgetastet. Das Bild Abb. A.4 besteht also aus einer einzigen MCU.

Offset Die letzte Vorverarbeitungskomponente von JPEG subtrahiert von allen Pixeln einer MCU den Wert 128, so dass sie im Intervall [128; 127]liegen.
Die diskrete Cosinus Transformation (DCT) Jede der 8 8 groen DU s einer M CU wird
einer diskreten Cosinustransformation unterzogen, deren Gleichung durch
G(u, v) =





N 1 N 1
(2x + 1)u
(2y + 1)v
2Cu Cv X X
g(x, y) cos
cos
N
2N
2N
x=0 y=0





7
7
Cu Cv X X
(2x + 1)u
(2y + 1)v
g(x, y) cos
cos
4 x=0 y=0
16
16
 1

for u, v = 0???????????
2
Cu , Cv =
1
for u, v 6= 0
=

(1.14)
(1.15)

1.2 Verlustbehaftete Bildkompression

mit:
N:
g(x, y):
x, y:
u, v:
G(u, v):
Cu , Cv :

37

Seitenlnge einer DU, N=8N=8


Pixelwerte in Abhngigkeit von (x, y)
Indices
Indices
Pixelwerte in Abhngigkeit von (u, v)
Normierungskonstante

gegeben ist. Bekanntlich kann eine Doppelsumme wie in Gl. 1.14 als Matrixgleichung geschrieben werden:
Cu Cv
A X AT
4

cos 0
cos 0

cos cos 3
16
16

6
cos
cos 2
16
16

cos 3 cos 9

16
16
A=
cos 4 cos 12
16
16

15
cos 5
cos
16
16

cos 6 cos 18

16
16

Y=

cos 7
16

1, 00
0, 98
0, 92
0, 83
0, 71
0, 56
0, 38
0, 20

cos 21
16

cos 0

cos 0

cos 0

cos 0

cos 0

cos 0

cos 5
16

cos 7
16

cos 9
16

cos 11
16

cos 13
16

cos 15
16

cos 10
16

cos 14
16

cos 18
16

cos 22
16

cos 26
16

cos 30
16

cos 15
16

cos 21
16

cos 27
16

cos 33
16

cos 39
16

cos 45
16

cos 20
16

cos 28
16

cos 36
16

cos 44
16

cos 52
16

cos 60
16

cos 25
16

cos 35
16

cos 45
16

cos 55
16

cos 65
16

cos 75
16

cos 30
16

cos 42
16

cos 54
16

cos 66
16

cos 78
16

cos 90
16

cos 35
16

cos 49
16

cos 63
16

cos 77
16

cos 91
16

1, 00
1, 00
1, 00
0, 83
0, 56
0, 20
0, 38 0, 38 0, 92
0, 20 0, 98 0, 56
0, 71 0, 71
0, 71
0, 98
0, 20
0, 83
0, 92
0, 92 0, 38
0, 56
0, 83 0, 98

1, 00
0, 20
0, 92
0, 56
0, 71
0, 83
0, 38
0, 98

1, 00
1, 00
0, 56 0, 83
0, 38
0, 38
0, 98
0, 20
0, 71 0, 71
0, 20
0, 98
0, 92 0, 92
0, 83
0, 56

cos 105
16

1, 00
0, 98

0, 92

0, 83

0, 71

0, 56

0, 38
0, 20

mit:
X: eine der sechs DUs einer MCU
Y: cosinustransformierte DU
Abb. 1.16 zeigt die DCT der oberen linken DU der Luminanzkomponente. Die DCT der gesamten MCU des Beispielbildes siehe Abb. A.6.
Bemerkungen:
Die DCT jeder der 8 8 DUs ergibt ein Feld von DCT-Koeffizienten der Gre 8 8,
dessen Ursprung in der linken oberen Ecke (Position (0, 0)) liegt. Dieser Koeffizient wird
DC-Koeffizient genannt, alle anderen sind AC-Koeffizienten.
In den cosinustransformierten DUs (beispielsweise inAbb. 1.16) nehmen die Koeffizienten
von links oben nach rechts unten ab. Die wichtigeren Koeffizienten liegen also oben
links, die weniger wichtigen unten rechts in der Matrix.

38

1 Methoden der Bildkompression

307.50 228.84 141.19 18.14 -49.50

1.07

41.38 -56.35 -44.95

143.97 -82.99

54.91

1.45

5.18

-4.59

-7.34

15.85

95.40 -70.63

-2.19

-22.41 -47.84 30.75

31.10 -31.33 -31.78 11.98

-1.62

0.60

2.01

33.25

-4.67

28.00 -87.34 10.90

52.61

28.00 -80.56 37.43

-6.96

-14.13 -30.19

-2.88

35.37

22.75

1.09

9.25

49.69 -65.87 -55.40

-9.65

36.05

12.49 -22.95 13.59

87.77 -65.87

15.71 -10.84 -51.07

-9.49

-32.08

5.48

20.02

Abbildung 1.16: Cosinus-transformierte linke obere DU Y00


Vor der Cosinus-Transformation wurde von allen Pixelwerten 128 subtrahiert. Die vollstndige Dokumentation der cosinus-transformierten und quantisierten MCU siehe Abb. ??.

Die DCT wird natrlich mit doppelter Genauigkeit berechnet, aus Darstellungsgrnden
wurden nur die Beschrnkung auf zwei Nachkommastellen

Quantisierung
Soweit gab es, auer eventuellen Rundungsfehlern, noch keine Verluste Aber, wie wir sehen,
sind die Betrge der AC-Koeffizienten in der rechten unteren Ecke jeder cosinus-transformierten
DU sehr niedrig. Der Quantisierungsschritt wird sie zu Null setzen. Dies geschieht durch eine
elementweise Division durch eine sog. Quantisierungsmatrix Q(u, v):

G0 (u, v) = round

mit:
G0 (u, v):
G(u, v):
Q(u, v):
r:

G(u, v)
r Q(u, v)

(1.16)

Cosinustransformierte, quantisierte DU
cosinustransformierte DU
Quantisierungsmatrix
Qualittsfaktor bzw. Kompressionsfaktor, r R

Gl. 1.16 sorgt dafr, dass einige der AC-Koeffizienten verschwinden. Die Quantisierungsmatrix Q(u, v) wird vom JPEG-Standard vorgegeben [4]. Er schlgt fr die Luminanz- und die
Chrominanzkomponenten verschiedene Quantisierungsmatrizen vor. QL (u, v) zur Quantisierung der Luminanzkomponenten wird in Gl. 1.17 gegeben, QC (u, v) zur Quantisierung der

1.2 Verlustbehaftete Bildkompression

39

Chrominanz in Gl. 1.18. Der JPEG-Standard schlgt vor:

16 11 10 16 24
12 12 14 19 26

14 13 16 24 40

14 17 22 29 51
QL (u, v) =
18 22 37 56 68

24 35 55 64 81

49 64 78 87 103
72 92 95 98 112
fr die Luminanzquantisierung und

17
18

24

47
QC (u, v) =
99

99

99
99

18
21
26
66
99
99
99
99

24
26
56
99
99
99
99
99

47
66
99
99
99
99
99
99

99
99
99
99
99
99
99
99

40
58
57
87
109
104
121
100

99
99
99
99
99
99
99
99

51 61
60 55
69 56
80 62
103 77
113 92
120 101
103 99

99
99
99
99
99
99
99
99

99
99
99
99
99
99
99
99

(1.17)

(1.18)

fr die Chrominanzquantisierung
Diese Tabellen wurden aufgrund von psychovisuellen Studien ber das menschliche Sehsystem
generiert und werden seit Einfhrung des JPEG Standards erfolgreich von vielen JPEG CODECs bei Bildern mit 8 Bit in der Luminanz- und den Chrominanzkomponenten eingesetzt.
Bilder, die mit diesen Tabellen quantisiert wurden, werden von Betrachtern als gleichgut wie
unkomprimierte Bilder wahrgenommen. Mit der Variablen r in Gl. 1.16 hat der Benutzer zudem Einfluss auf die Qualitt und die Kompressionsrate. Trotzdem mssen diese Tabellen nicht
optimal sein, ein CODEC kann auch andere Quantisierungstabellen verwenden.
Dem Quantisierungsschritt kommt die Schlsselrolle in der JPEG Kompression zu. Es ist der
Schritt, welcher lokal hohe Frequenzen, also Details aus dem Bild entfernt. Koeffizienten, die
aufgrund der Quantisierung verschwunden sind, knnen nicht mehr wiederhergestellt werden.
Abb. 1.17 zeigt die quantisierte DU, die aus Abb. 1.16 mit Hilfe von Gl. 1.17 erzeugt wurden.
Abb. A.7 zeigt die gesamte cosinus-transformierte quantisierte quantized MCU.
Zickzack-Scan
In diesem Schritt werden die quantisierten DU im Zickzack-Muster abgetastet wie in Abb. 1.2
gezeigt. Dies erzeugt im Datenstrom viele benachbarte Nullen, was weitere Mglichkeiten fr
den Einsatz verlustfreier Verfahren wie RLE schafft. Zickzack-Scan auf die DU in Abb. 1.17
erzeugt den folgenden Datenstrom fr die DU Y00 :
Y00

10, 10, 0, 5, 2, 7, 1, -2, -3, 2, 1, 1, 0, -1, -1, 0, 0, 0, -1, -2, 0, 1, 0, 0, -1,


-1, 1, 0, 0, -1, 0, 0, 0, 0, -1, 1, 0 . . . 0

Den Datenstrom fr alle DUs der MCU zeigt Tab. A.7. In dieser Notation kann jede DU
~00 = (DC, AC1 . . . AC63 )T gesehen werden, mit den DCals 64-dimensionaler Vektorr Y
Koeffizienten in Position 0. Dieser Vektor wird der quantisierte Vektor der Dateneinheit Y00 genannt. In den nchsten beiden Schritten werden die DC- und die AC-Koeffizienten aller MCUs

40

1 Methoden der Bildkompression

10

10

-1

-2

-1

-1

-3

-1

-1

-1

-2

-1

Abbildung 1.17: Quantisierte linke obere DU Y00


Quantisiert wurde mit der Matrix Gl. 1.17 und r = 2.0. Die vollstndige Dokumentation der cosinustransformierten und quantisierten MCU siehe Abb. A.7.

eines Bildes mit zwei verschiedenen verlustfreien Methoden weiterhin komprimiert. Dies geht
jeweils in 3 Stufen vor sich.
Die Codierung der DC-Koeffizienten
Man stelle sich die quantisierten Vektoren aller DUs aller MCUs eines Bildes als Spalten einer Matrix dargestellt, so dass die ersten 4n Spalten (n sei die Anzahl der MCUs eines Bildes)) durch alle Luminanzkomponenten Y des Bildes gebildet werden, die nchsten n Spalten
durch alle Chrominanz-Cb-Komponenten und die letzten n Spalten durch alle Chrominanz-Cr Komponenten. Im Falle des Beispielbildes Abb. A.4 htten wir also eine Matrix mit 64 Zeilen
und 6 Spalten, mit dem DC-Vektor ~vDC in Zeile 1.
Um die Sache noch etwas komplizierter zu machen15 wird der DC-Vektor weiter unterteilt in
Luminanz Y , Chrominanz Cb und Chrominanz Cr Anteil:
~vDCL ist der DC-Vektor der Luminanzkomponenten aller MCUs
~vDCCb ist der DC-Vektor der Chrominanzkomponenten Blau aller MCUs
~vDCCr ist der DC-Vektor der Chrominanzkomponenten Rot aller MCUs
Im Falle des Beispielbildes Abb. A.4 erhalten wir:
~vDC = (10, 17, 14, 14, 6, 1)
|
{z
} | {z }
Luminanz

Chrominanz

~vDCL = (10, 17, 14, 14)


~vDCCb = (6)
~vDCCr = (1)
15 . . . und

(1.19)

natrlich, weil Luminanz- und Chrominanzkomponenten verschieden behandelt werden mssen

(1.20)

1.2 Verlustbehaftete Bildkompression

41

Wegen der kleinen Bildgre haben ~vDCCb und ~vDCCr jeweils nur ein Element, bei einer Bildgre
von 512 512 htten wir jedoch schon jeweils beachtliche 1024 Elemente fr ~vDCCb und ~vDCCr
und fr ~vDCL 4096 Elemente.
Stufe 1
In der 1. Stufe werden die Koeffizienten der DC-Vektoren durch Subtraktion benachbarter
Pixel (siehe Abschnitt 1.1.1) verlustfrei komprimiert
Diffi = DCi DCi1

(1.21)

und es entstehen neue Vektoren ~vDiffL , ~vDiffCb und ~vDiffCr


Aus Gl. 1.19 erhalten wir:
~vDiffL = (10, 7, 3, 0)

(1.22)

~vDiffCb = (6)
~vDiffCr = (1)
Die ersten Werte werden jeweils bernommen.
Stufe 2
In der 2. Stufe werden die Differenzenvektoren ~vDiffL , ~vDiffCb und ~vDiffCr mit Hilfe von
Tab. ?? codiert und es entsteht ein intermedirer Code, bestehend aus Paaren von Dezimalund Binrzahlen.. Im Beispiel codieren wir also
~vDiffL = (10, 7, 3, 0)

(1.23)

~vDiffCb = (6)
~vDiffCr = (1)

10 ist in Kategorie
7 ist in Kategorie
-3 ist in Kategorie
0 ist in Kategorie

4,
3,
2,
0,
..
.

wird codiert mit 1010,


wird codiert mit 111,
wird codiert mit 00,
und wird nicht codiert
..
.

der intermedire Code ist (4;1010)


der intermedire Code ist (3;111)
der intermedire Code ist (2;00)
der intermedire Code ist (0; )
..
.

~vDiffL = (10, 7, 3, 0)
((4;1010), (3;111), (2;00), (0; ))
~vDif f Cb = (6)
((3;001)
~vDif f Cr = (1)
((1;0)
Offensichtlich zeigt die Kategorie die Anzahl der Pixel an, die bentigt werden, um einen
Wert zu codieren.

42

1 Methoden der Bildkompression

Stufe 3
In der 3. Stufe werden nun mit Hilfe von Tab. 1.15 die Paare aufgelst und es entsteht ein
Datenstrom von Bits. Es handelt sich um eine Huffman-Codierung der Kategorien. Dabei
ist zu beachten, dass den Kategorien der Luminanz andere Werte zugeordnet werden als
denen der Chrominanz. Tab. 1.15 wird vom JPEG-Standard vorgegeben und basiert auf
der Auswertung einer Vielzahl von Bildern. Wir erhalten:

Category
0
1
2
3
4
5
6
7
8
9
10
11

Huffman code luminance


000
010
011
100
101
110
1110
11110
111110
1111110
11111110
111111110

Huffman code chrominance


000
01
10
110
1110
11110
111110
1111110
11111110
111111110
1111111110
11111111110

Tabelle 1.15: Huffman-Code fr die DC-Koeffizienten der Luminanz- und der Chrominanz-Komponenten [4].

~vDiffL = (10, 7, 3, 0)
((4;1010), (3;111), (2;00), (0; ))
(1011010, 100111, 01100, 000)
~vDCCb = (6)
((3;001)
~vDCCr

(110001)
= (1)
((1;0))
(010)

Insgesamt ergibt also die Codierung der DC-Koeffizienten des Beispielbildes den Datenstrom
1011010 100111 01100 000 110001 010
mit einer Lnge von 3 Bit.
Die Codierung der AC-Koeffizienten
Die AC-Koeffizienten werden ebenfalls in drei Stufen codiert. Wir verwenden als Beispiel die
quantisierten AC-Koeffizienten der linken oberen DU Y00 in Abb. 1.17. Die gesamten quantisierten Daten des Beispielbildes finden Sie in Tab. A.7.

1.2 Verlustbehaftete Bildkompression

43

Stufe 1
Stufe 1 ist eine Variante einer RLE-Codierung (siehe Abschnitt 1.1.1) , genannt Zero
Run Length Coding (ZRLC), , also Lauflngencodierung der Nullen. Die meisten der
63 AC-Koeffizienten jeder DU sind nach der Quantisierung Null. Der RLE-Schritt des
JPEG-Standards codiert deshalb die Anzahl der Nullen und bernimmt die Werte, die
ungleich null sind. Jeder Wert 6= 0 wird zusammen mit der Anzahl der vorhergehenden
Nullen gespeichert, bis nur noch Nullen brig sind. Dann wird der sog. EOB-marker (0;0)
(End of Block) angefgt und die erste Stufe ist abgeschlossen. Der ZRLC-Algorithmus
der Stufe 1 wird an den 63 quantisierten AC-Koeffizienten der linken oberen DU Y00
(Abb. 1.17) bzw. der zickzack-abgetasteten Daten von Seite 39 gezeigt:
Y00

Y00ZRLC

10, 10, 0, 5, 2, 7, 1, -2, -3, 2, 1, 1, 0, -1, -1, 0, 0, 0, -1, -2, 0, 1, 0, 0, -1, -1,
1, 0, 0, -1, 0, 0, 0, 0, -1, 1, 0 . . . 0
(0;10), (1;5), (0;2), (0;7), (0;1), (0;-2), (0;-3), (0;2), (0;1), (0;1), (1;-1),
(0;-1), (3;-1), (0;-2), (1;1), (2;-1), (0;-1), (0;1), (2;-1), (4;-1), (0;1), (0;0);

Stufe
Damit2ist Stufe 1 abgeschlossen und ein intermedirer Code von Paaren ist entstanden.
In Stufe 2 wird der rechte Teil eines jeden Paares mit Hilfe von Tab. ?? in ein Paar von
Dezimalzahlen und eine Biinrzahl bergefhrt:
10 ist in Kategorie
5 ist in Kategorie
2 ist in Kategorie
7 ist in Kategorie
1 ist in Kategorie

4
3
2
3
1
..
.

wird codiert mit 1010


wird codiert mit 101
wird codiert mit 10
wird codiert mit 111
wird codiert mit 1
..
.

der intermedire Code ist (0;4)1010


der intermedire Code ist (1;3)101
der intermedire Code ist (0;2)10
der intermedire Code ist (0;3)111
der intermedire Code ist (0;1)1
..
.

und wir erhalten:


Y00ZRLC = (0;10), (1;5), (0;2), (0;7), (0;1), (0;-2), (0;-3), (0;1), (0;1), (1;-1), (0;-1),
(3;-1), (0;-2), (1;1), (2;-1), (0;-1), (0;1), (2;-1), (4;-1), (0;1), (0;0);
(0;4)1010, (1;3)101, (0;2)10), (0;3)111, (0;1)1, . . .
Bemerkungen:
als intermediren Code der 2. Stufe.
Der EOB-marker (0;0) wird nicht angefgt, wenn der letzte Wert des Datenstroms
6= 0 ist.
JPEG codiert ide Anzahl der Nullen n in jedem Paar (n; z) mit 4 Bit, deshalb gilt
!

n 15. Ist n > 15, werden die Nullen in Sechzehnergruppen zusammengefasst und
mit einem sog. sixteen-zeros-marker (15;0)16 codiert.
Beispiel 1.10
Nehmen wir an, in einer DU haben wir
. . . , 18 Nullen, 7, 37 Nullen 9, . . .

16 (15;0)

bezeichnet 16 Nullen, nicht 15.

44

1 Methoden der Bildkompression

Die erste Zeile der folgenden Codierung ist falsch, die zweite ist richtig:
Yf = . . . , (18;7), (37;9), . . .
Yr = . . . , (15;0), (2;7), (15;0), (15;0), (5;9), . . .
Stufe 3
Stufe 3 ist nun wieder eine Huffman-Codierung (siehe Abschnitt 1.1.4) . Es werden die
Klammerausdrcke des intermediren Codes mit Hilfe von Tab. A.8 codiert. Diese Tabelle wurde wegen ihres groen Umfangs in den Anhang verlegt. Auch sie hat, wie die
Huffman-Tabelle der Stufe 3 bei der Codierung der DC-Komponenten weiter oben, verschiedene Werte fr die Luminanz- und die Chrominanzanteile..
Y00ZRLC

(0;10), (1;5), (0;2), (0;7), (0;1), (0;-2), (0;-3), (0;1), (0;1), (1;-1), (0;-1),
(3;-1), (0;-2), (1;1), (2;-1), (0;-1), (0;1), (2;-1), (4;-1), (0;1), (0;0);
(0;4)1010, (1;3)101, (0;2)10), (0;3)111, (0;1)1, . . .
10111010, 1111001101, 0110, 100111, 001 , . . .

Die gesamte JPEG-Codierung des Beispielbildes Abb. 1.1a finden Sie in Tab. A.9 im Anhang. Dort
sehen wir auch, dass die Rohdaten von einer Gre von 256 3 = 768 Bytes auf 60,5 Bytes geschrumpft wurden, was nach Gleichung Gl. 1.1 einen Kompressionsrate CR von
768
= 12.7
60.5
= 1.9

CR =
Cbpp

Abb. 1.18 zeigt verschiedene Qualittsstufen 0 Q 100 der JPEG-Kompression fr das Beispielbild Abb. 1.1a, welche durch Setzen des Parameters r in Gl. 1.16 erreicht werden kann. (Q = 100:
beste Qualitt, niedrigste Kompressionsrate, Q = 0: niedrigste Qualitt, hchste Kompressionsrate)
mit den jeweiligen Dateigren . Da auch *.jpg-Dateien im Kopf zustzliche Bildinformation tragen,
mssen sie mit unkomprimierten bmp- oder verlustfrei komprimierten tiff-Dateien verglichen werden.
Bemerkenswert ist, dass sich schon bei der Qualittsstufe Q = 100 Vernderungen im Bild zeigen.
Weitere Beispiele zeigen Abb. 1.20 und Abb. 1.19.
Der JPEG Decoder, der jedesmal aktiviert wird, wenn ein JPEG-Bild geffnet wird, invertiert nun alle
Schritte, die oben beschrieben wurden. Der Datenverlust durch Anwendung der Quantisierungsschrittes ist jedoch nicht mehr auszugleichen. Dies fhrt zu Bildvernderungen, die besonders bei hheren
Kompressionsraten sichtbar werden (Abb. 1.20 und 1.19)
Bemerkungen:
Alle vom JPEG-Standard vorgeschlagenen Tabellen sind Erfahrungstabellen, die an einer groen
Anzahl von Bildern getestet wurden, die von CCD-Kameras aufgenommen wurden. Andere
Aufnahmeverfahren wie IR-Bilder, Bilder aus dem Rntgenbereich usw. knnen durchaus eine
Vernderung der Tabellen erforderlich machen [10].
Die JPEG-Kompression verndert ein Bild immer dann, wenn es im Datenformat *.jpg abgespeichert wird, auch wenn die hchste Qualittsstufe eingestellt wird, wie Abb. 1.18b) im
Vergleich mit dem Originalbild Abb. 1.18a) zeigt. Verlustfreie Kompression unter JPEG ist
zumindest mit dem Basisalgorithmus nicht mglich

1.2 Verlustbehaftete Bildkompression

45

Wiederholtes Abspeichern eines JPEG-Bildes im *.jpg-Format vergert die Verluste mehr und
mehr, auch wenn dies anfnglich nicht sichtbar ist.
Der Basisalgorithmus der JPEG-Kompression ist optimiert fr die visuelle Wahrnehmung von
Menschen. Bilder, die weiterverarbeitet werden sollen, sollten mglichst verlustfrei komprimiert werden,.

Abbildung 1.18: Verluste bei der JPEG-Kompression


Gre der Rohdaten: 16 16 3 Bytes.
a) RGB-Bild, Original, Dateigre = 822 Bytes (als *.bmp-Datei)
b) Q = 100, 646 Bytes c) Q = 75, 454 Bytes d) Q = 50, 403 Bytes
e) Q = 25, 355 Bytes
f) Q = 15, 325 Bytes

Neben dem in diesem Abschnitt beschriebenen Basisalgorithmus gibt es unter JPEG weitere Algorithmen, deren grundlegenden Eigenschaften hier kurz vorgestellt und verglichen werden sollen:

46

1 Methoden der Bildkompression

Abbildung 1.19: Verluste bei der JPEG-Kompression [3]


Gre der Rohdaten: 300 222 3 Bytes
a) Q = 100, 31505 Bytes b) Q = 60, 6872 Bytes c) Q = 40, 5566 Bytes
d) Q = 20, 4084 Bytes
e) Q = 10, 3129 Bytes f) Q = 0, 2209 Bytes

1.2 Verlustbehaftete Bildkompression

47

Abbildung 1.20: Verluste bei der JPEG-Kompression [3]


Gre der Rohdaten: 200 300 3 Bytes
a) Q = 100, 54124 Bytes b) Q = 60, 10201 Bytes c) Q = 40, 8018 Bytes
d) Q = 20, 5397 Bytes
e) Q = 10, 3519 Bytes
f) Q = 0, 2029 Bytes

Anhang

51

A Supplementary Material for Chapter 1


A.1 General things

Example images documentation


Gray scale image with pixel values see fig A.1.

F0

F0

F0

F0

82

82

F0

82

82

F0

F0

F0

F0

F0

F0

F0

F0

F0

F0

82

AF

AF

82

AF

AF

82

F0

F0

F0

F0

F0

F0

F0

F0

82

82

AF

AF

82

AF

AF

82

82

F0

F0

F0

F0

F0

F0

82

AF

AF

82

AF

AF

AF

82

AF

AF

82

F0

F0

F0

F0

F0

F0

82

AF

AF

82

AF

82

AF

AF

82

F0

F0

F0

F0

F0

FF

F0

F0

82

82

AF

AF

AF

82

82

F0

F0

E1

F0

F0

F0

F0

F0

82

AF

AF

82

82

82

AF

AF

82

F0

E1

FF

F0

F0

F0

F0

82

AF

82

F0

82

F0

82

AF

82

F0

F0

FF

FF

F0

F0

F0

F0

82

F0

F0

4B

F0

F0

82

F0

FF

FF

FF

FF

FF

F0

F0

F0

F0

F0

F0

4B

F0

F0

F0

F0

F0

F0

F0

F0

F0

F0

F0

F0

4B

4B

F0

4B

F0

4B

4B

F0

F0

F0

F0

F0

F0

4B

F0

F0

F0

4B

F0

4B

F0

4B

F0

F0

F0

F0

32

F0

F0

F0

4B

F0

F0

F0

4B

4B

4B

F0

F0

32

F0

32

F0

F0

32

F0

F0

4B

F0

F0

F0

4B

F0

F0

32

F0

32

F0

F0

32

F0

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

4B

Abbildung A.1: Beispielbilder fr Kapitel A.


Die vollstndige Dokumentation der Beispielbilder zeigt Abb. A.3, Abb. A.1 und Abb. A.2.
a) Intensitten b) Grauwerte

Data stream of zigzag-scanned gray scale image see fig. A.1.


Binary image with pixel values see fig. A.2.

52

Anhang A Supplementary Material for Chapter 1

F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 82 82 82 82 82 AF
82 AF F0 FF F0 F0 82 AF AF AF F0 82 82 AF 82 AF
F0 F0 F0 F0 F0 82 82 AF AF 82 AF 82 F0 AF AF AF
82 82 AF 82 F0 F0 F0 F0 F0 AF AF AF AF AF AF 82
F0 F0 F0 82 82 82 AF 82 82 82 F0 F0 4B F0 F0 F0 F0
F0 F0 82 AF AF AF 82 F0 F0 F0 F0 F0 AF AF 82 82
82 F0 F0 4B F0 4B F0 4B F0 F0 F0 4B F0 4B F0 AF 82
82 82 F0 F0 F0 F0 F0 F0 F0 F0 F0 AF 82 F0 4B F0 4B
F0 4B 4B 4B 4B 4B F0 F0 F0 4B F0 F0 AF 82 F0 F0
F0 F0 F0 F0 F0 F0 E1 F0 82 82 F0 F0 4B 4B F0 4B 4B
4B 4B F0 4B F0 4B F0 F0 F0 E1 F0 F0 F0 F0 F0 FF
F0 FF F0 4B 4B 4B 4B 4B 4B 4B 4B F0 F0 F0 F0 F0
FF FF F0 F0 F0 FF FF F0 F0 F0 F0 F0 4B 4B 4B 4B
32 32 F0 F0 F0 FF F0 FF F0 F0 F0 F0 F0 4B 4B 4B 4B
32 32 32 F0 F0 F0 F0 F0 F0 4B 4B 4B 4B F0 F0 F0 32
32 4B 4B 4B 4B F0 4B 4B 4B
Tabelle A.1: Datenstrom aus der Zickzack-Abtastung von Abb. A.1b.

Anhang A.1 General things

53
0

a
a)
b)

Abbildung A.2: Binrversion des Beispielbildes


Binrbild
Bildmatrix Hintergrund (wei): Wert 0, Objekte (schwarz): Wert 1.

Data stream of zigzag-scanned binary image see fig. A.2.

54

Anhang A Supplementary Material for Chapter 1

0
1
1
0
0
0
1
0
1

00000000
10000011
11000111
11111001
01101010
11001101
11111000
00000000
1110111

0
1
1
0
1
1
0
1

0
1
1
1
1
1
0
1

1
1
1
0
1
1
0
1

1
1
1
1
1
0
0
1

1
1
0
0
1
1
0
1

1
0
0
0
0
0
0
1

1
1
1
0
0
1
0
1

1
1
0
1
0
0
0
0

1
1
0
0
1
0
0
0

1
1
0
1
0
0
0
0

0
1
0
0
0
0
0
0

0
1
0
1
1
0
0
0

0
1
0
1
1
0
0
0

0
0
1
1
0
0
0
1

1
0
1
1
0
0
1
1

1
0
1
0
0
0
1
1

1
0
1
0
0
0
1
1

1
0
1
0
0
0
1
0

Tabelle A.2: Datenstrom aus dem Zickzack-Scan von Abb. A.2b.

0
1
0
0
0
0
1
0

1
1
0
0
0
0
1
0

1
1
0
0
0
1
0
1

1
1
0
0
0
1
0
1

Anhang A.1 General things

RGB image with pixel values see fig. A.3.

55

56

Anhang A Supplementary Material for Chapter 1


D2

D2

D2

D2

FF

FF

D2

FF

FF

D2

D2

D2

D2

D2

D2

D2

D2

D2

FF

FE

FE

FF

FE

FE

FF

D2

D2

D2

D2

D2

D2

D2

D2

FF

FF

FE

FE

FF

FE

FE

FF

FF

D2

D2

D2

D2

D2

D2

FF

FE

FE

FF

FE

FE

FE

FF

FE

FE

FF

D2

D2

D2

D2

D2

D2

FF

FE

FE

FF

FE

FF

FE

FE

FF

D2

D2

D2

D2

D2

FF

D2

D2

FF

FF

FE

FE

FE

FF

FF

D2

D2

FC

D2

D2

D2

D2

D2

FF

FE

FE

FF

FF

FF

FE

FE

FF

D2

FC

FF

D2

D2

D2

D2

FF

FE

FF

D2

FF

D2

FF

FE

FF

D2

D2

FF

FF

D2

D2

D2

D2

FF

D2

D2

00

D2

D2

FF

D2

FF

FF

FF

FF

FF

D2

D2

D2

D2

D2

D2

00

D2

D2

D2

D2

D2

D2

D2

D2

D2

D2

D2

D2

00

00

D2

00

D2

00

00

D2

D2

D2

D2

D2

D2

D2

D2

00

D2

D2

D2

00

D2

00

D2

00

D2

D2

D2

D2

F0

00

F0

F0

F0

00

00

00

F0

F0

00

F0

00

F0

F0

00

D2

D2

00

D2

D2

D2

00

D2

D2

00

D2

00

D2

D2

00

D2

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

a
DC

DC

DC

DC

AE

AE

DC

AE

AE

DC

DC

DC

DC

DC

DC

DC

DC

DC

DC

AE

1B

1B

AE

1B

1B

AE

DC

DC

DC

DC

DC

DC

DC

DC

AE

AE

1B

1B

AE

1B

1B

AE

AE

DC

DC

DC

DC

DC

DC

AE

1B

1B

AE

1B

1B

1B

AE

1B

1B

AE

DC

DC

DC

DC

DC

DC

AE

1B

1B

AE

1B

AE

1B

1B

AE

DC

DC

DC

DC

DC

FF

DC

DC

AE

AE

1B

1B

1B

AE

AE

DC

DC

9D

DC

DC

DC

DC

DC

AE

1B

1B

AE

AE

AE

1B

1B

AE

DC

9D

FF

DC

DC

DC

DC

AE

1B

AE

DC

AE

DC

AE

1B

AE

DC

DC

FF

FF

DC

DC

DC

DC

AE

DC

DC

EE

DC

DC

AE

DC

FF

FF

FF

FF

FF

DC

DC

DC

DC

DC

DC

EE

DC

DC

DC

DC

DC

DC

DC

DC

DC

DC

DC

DC

EE

EE

DC

EE

DC

EE

EE

DC

DC

DC

DC

DC

DC

EE

DC

DC

DC

EE

DC

EE

DC

EE

DC

DC

DC

DC

67

DC

DC

DC

EE

DC

DC

DC

EE

EE

EE

DC

DC

67

DC

67

DC

DC

67

DC

DC

EE

DC

DC

DC

EE

DC

DC

67

DC

67

DC

DC

67

DC

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

EE

FF

FF

FF

FF

00

00

FF

00

00

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

00

00

00

00

00

00

00

FF

FF

FF

FF

FF

FF

FF

FF

00

00

00

00

00

00

00

00

00

FF

FF

FF

FF

FF

FF

00

00

00

00

00

00

00

00

00

00

00

FF

FF

FF

FF

FF

FF

00

00

00

00

00

00

00

00

00

FF

FF

FF

FF

FF

FF

FF

FF

00

00

00

00

00

00

00

FF

FF

48

FF

FF

FF

FF

FF

00

00

00

00

00

00

00

00

00

FF

48

FF

FF

FF

FF

FF

00

00

00

FF

00

FF

00

00

00

FF

FF

FF

FF

FF

FF

FF

FF

00

FF

FF

11

FF

FF

00

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

11

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

FF

11

11

FF

11

FF

11

11

FF

FF

FF

FF

FF

FF

11

FF

FF

FF

11

FF

11

FF

11

FF

FF

FF

FF

98

FF

FF

FF

11

FF

FF

FF

11

11

11

FF

FF

98

FF

98

FF

FF

98

FF

FF

11

FF

FF

FF

11

FF

FF

98

FF

98

FF

FF

98

FF

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

11

D2

Abbildung A.3: Beispielbilder in RGB-Komponenten zerlegt.


Werte sind hexadezimal dargestellt
R-Komponente a) als Bild b) als Pixelwerte
G-Komponente c) als Bild d) als Pixelwerte
B-Komponente e) als Bild f) als Pixelwerte

Anhang A.1 General things

Y Cb Cr image with pixel values see fig. A.4.

57

58

Anhang A Supplementary Material for Chapter 1


DD

DD

DD DD

B2

B2

DD

B2

B2

DD DD

DD

DD

DD DD

DD

DD

DD

DD

5C

5C

B2

5C

5C

B2

DD

DD

DD

DD DD

DD

DD

DD

B2

B2

5C

5C

B2

5C

5C

B2

B2

DD

DD

DD DD

DD

DD

B2

5C

5C

B2

5C

5C

5C

B2

5C

5C

B2

DD

DD DD

DD
DD

B2

DD

DD

B2

5C

5C

B2

5C

B2

5C

5C

B2

DD

DD

DD DD

FF

DD

DD

B2

B2

5C

5C

5C

B2

B2

DD

DD

B0

DD DD

DD

DD

DD

B2

5C

5C

B2

B2

B2

5C

5C

B2

DD

B0

FF

DD

DD

DD

DD

B2

5C

B2

DD

B2

DD

B2

5C

B2

DD

DD

FF

FF

DD

DD

DD

DD

B2

DD

DD

8E

DD

DD

B2

DD

FF

FF

FF

FF

FF

DD

DD

DD DD

DD

DD

8E

DD

DD

DD DD

DD

DD

DD DD

DD

DD

DD

DD

8E

8E

DD

8E

DD

8E

8E

DD

DD

DD

DD DD

DD

8E

DD

DD DD

8E

DD

8E

DD

8E

DD DD

DD

DD

4E

DD

DD

8E

DD DD

DD

8E

8E

8E

DD

DD

4E

DD

4E

DD DD

4E

DD

DD

8E

DD

DD

DD

8E

DD

DD

4E

DD

4E

DD

DD

4E

DD

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

93

93

93

93

1B

1B

93

1B

1B

93

93

93

93

93

93

93

93

93

93

1B

4C

4C

1B

4C

4C

1B

93

93

93

93

93

93

93

93

1B

1B

4C

4C

1B

4C

4C

1B

1B

93

93

93

93

93

93

1B

4C

4C

1B

4C

4C

4C

1B

4C

4C

1B

93

93

93

93

93

93

1B

4C

4C

1B

4C

1B

4C

4C

1B

93

93

93

93

93

80

93

93

1B

1B

4C

4C

4C

1B

1B

93

93

69

93

93

93

93

93

1B

4C

4C

1B

1B

1B

4C

4C

1B

93

69

80

93

93

93

93

1B

4C

1B

93

1B

93

1B

4C

1B

93

93

80

80

93

93

93

93

1B

93

93

3A

93

93

1B

93

80

80

80

80

80

93

93

93

93

93

93

3A

93

93

93

93

93

93

93

93

93

93

93

93

3A

3A

93

3A

93

3A

3A

93

93

93

93

93

93

3A

93

93

93

3A

93

3A

93

3A

93

93

93

93

AA

93

93

93

3A

93

93

93

3A

3A

3A

93

93

AA

93

AA

93

93

AA

93

93

3A

93

93

93

3A

93

93

AA

93

AA

93

93

AA

93

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

3A

78

78

78

78

B7

B7

78

B7

B7

78

78

78

78

78

78

78

78

78

78

B7

F4

F4

B7

F4

F4

B7

78

78

78

78

78

78

78

78

B7

B7

F4

F4

B7

F4

F4

B7

B7

78

78

78

78

78

78

B7

F4

F4

B7

F4

F4

F4

B7

F4

F4

B7

78

78

78

78

78

78

B7

F4

F4

B7

F4

B7

F4

F4

B7

78

78

78

78

78

80

78

78

B7

B7

F4

F4

F4

B7

B7

78

78

B6

78

78

78

78

78

B7

F4

F4

B7

B7

B7

F4

F4

B7

78

B6

80

78

78

78

78

B7

F4

B7

78

B7

78

B7

F4

B7

78

78

80

80

78

78

78

78

B7

78

78

1B

78

78

B7

78

80

80

80

80

80

78

78

78

78

78

78

1B

78

78

78

78

78

78

78

78

78

DD

78

78

78

1B

1B

78

1B

78

1B

1B

78

78

78

78

78

78

1B

78

78

78

1B

78

1B

78

1B

78

78

78

78

49

78

78

78

1B

78

78

78

1B

1B

1B

78

78

49

78

49

78

78

49

78

78

1B

78

78

78

1B

78

78

49

78

49

78

78

49

78

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

1B

Abbildung A.4: Image, subdivided in components Y Cb Cr . Values are hexadecimal.


Y-Komponente
a) als Bild b) als Pixelwerte
Cb -Komponente c) als Bild d) als Pixelwerte
Cr -Komponente e) als Bild f) als Pixelwerte

Anhang A.2 Verlustfreie Bildkompression

A.2

59

Verlustfreie Bildkompression

RLE encoding documentation


Data stream of RLE-coded gray scale image see tab. A.3.

F0 0B 82 05 AF 01 82 01 AF 01 F0 01 FF 01 F0 02 82
AF 03 F0 01 82 02 AF 01 82 01 AF 01 F0 05 82 02 AF
82 01 AF 01 82 01 F0 01 AF 03 82 02 AF 01 82 01 F0
AF 06 82 01 F0 03 82 03 AF 01 82 03 F0 02 4B 01 F0
82 01 AF 03 82 01 F0 05 AF 02 82 03 F0 02 4B 01 F0
4B 01 F0 01 4B 01 F0 03 4B 01 F0 01 4B 01 F0 01 AF
82 03 F0 09 AF 01 82 01 F0 01 4B 01 F0 01 4B 01 F0
4B 05 F0 03 4B 01 F0 02 AF 01 82 01 F0 08 E1 01 F0
82 02 F0 02 4B 02 F0 01 4B 04 F0 01 4B 01 F0 01 4B
F0 03 E1 01 F0 05 FF 01 F0 01 FF 01 F0 01 4B 08 F0
FF 02 F0 03 FF 02 F0 05 4B 04 32 02 F0 03 FF 01 F0
FF 01 F0 05 4B 04 32 03 F0 06 4B 04 F0 03 32 02 4B
F0 01 4B 03
Tabelle A.3: Datenstrom aus der RLE-Codierung von Tab. A.1.

Data stream of RLE-coded gray scale image (alternative algorithm) see tab. A.4.

01
02
05
06
01
01
01
01
01
05
01
04

60

Anhang A Supplementary Material for Chapter 1

F0 F0 0A 82 82 04 AF 82 AF F0 FF F0 F0 01 82 AF AF
02 F0 82 82 01 AF 82 AF F0 F0 04 82 82 01 AF AF 01 82
AF 82 F0 AF AF 02 82 82 01 AF 82 F0 F0 04 AF AF 05
82 F0 F0 02 82 82 02 AF 82 82 02 F0 F0 01 4B F0 F0 05
82 AF AF 02 82 F0 F0 04 AF AF 01 82 82 02 F0 F0 01
4B F0 4B F0 4B F0 F0 02 4B F0 4B F0 AF 82 82 02 F0
F0 08 AF 82 F0 4B F0 4B F0 4B 4B 04 F0 F0 02 4B F0
F0 01 AF 82 F0 F0 07 E1 F0 82 82 01 F0 F0 01 4B 4B 01
F0 4B 4B 03 F0 4B F0 4B F0 F0 02 E1 F0 F0 04 FF F0
FF F0 4B 4B 07 F0 F0 04 FF FF 01 F0 F0 02 FF FF 01
F0 F0 04 4B 4B 03 32 32 01 F0 F0 02 FF F0 FF F0 F0 04
4B 4B 03 32 32 02 F0 F0 05 4B 4B 03 F0 F0 02 32 32 01
4B 4B 03 F0 4B 4B 02
Tabelle A.4: Datenstrom aus der RLE-Codierung von Tab. A.1 mit alternativem Algorithmus.

Anhang A.2 Verlustfreie Bildkompression

Fano encoding documentation


Data stream of Fano coded gray scale image see tab. A.5.

0 0 0 0 0 0 0 0 0 0 0 101 101 101 101 101 110 101 110 0


1110 0 0 101 110 110 110 0 101 101 110 101 110 0 0 0 0 0
101 101 110 110 101 110 101 0 110 110 110 101 101 110
101 0 0 0 0 0 110 110 110 110 110 110 101 0 0 0 101 101
101 110 101 101 101 0 0 100 0 0 0 0 0 0 101 110 110 110
101 0 0 0 0 0 110 110 101 101 101 0 0 100 0 100 0 100 0
0 0 100 0 100 0 110 101 101 101 0 0 0 0 0 0 0 0 0 110 101
0 100 0 100 0 100 100 100 100 100 0 0 0 100 0 0 110 101
0 0 0 0 0 0 0 0 11111 0 101 101 0 0 100 100 0 100 100
100 100 0 100 0 100 0 0 0 11111 0 0 0 0 0 1110 0 1110 0
100 100 100 100 100 100 100 100 0 0 0 0 0 1110 1110 0
0 0 1110 1110 0 0 0 0 0 100 100 100 100 11110 11110 0
0 0 1110 0 1110 0 0 0 0 0 100 100 100 100 11110 11110
11110 0 0 0 0 0 0 100 100 100 100 0 0 0 11110 11110 100
100 100 100 0 100 100 100
Tabelle A.5: Datenstrom aus Tab. A.1 Fano-codiert
Die Leerzeichen sind nicht Teil des Codes sondern dienen der Lesbarkeit

61

62

Anhang A Supplementary Material for Chapter 1

Huffman encoding documentation


Tabelle A.6: Datenstrom aus Tab. A.1 Huffman-codiert
Die Leerzeichen sind nicht Teil des Codes sondern dienen der Lesbarkeit

0 0 0 0 0 0 0 0 0 0 0 110 110 110 110 110 1111 110 1111 0


11101 0 0 110 1111 1111 1111 0 110 110 1111 110 1111
0 0 0 0 0 110 110 1111 1111 110 1111 110 0 1111 1111
1111 110 110 1111 110 0 0 0 0 0 1111 1111 1111 1111
1111 1111 110 0 0 0 110 110 110 1111 110 110 110 0 0 10
0 0 0 0 0 0 110 1111 1111 1111 110 0 0 0 0 0 1111 1111
110 110 110 0 0 10 0 10 0 10 0 0 0 10 0 10 0 1111 110
110 110 0 0 0 0 0 0 0 0 0 1111 110 0 10 0 10 0 10 10 10
10 10 0 0 0 10 0 0 1111 110 0 0 0 0 0 0 0 0 111000 0 110
110 0 0 10 10 0 10 10 10 10 0 10 0 10 0 0 0 111000 0 0
0 0 0 11101 0 11101 0 10 10 10 10 10 10 10 10 0 0 0 0
0 11101 11101 0 0 0 11101 11101 0 0 0 0 0 10 10 10 10
111001 111001 0 0 0 11101 0 11101 0 0 0 0 0 10 10 10
10 111001 111001 111001 0 0 0 0 0 0 10 10 10 10 0 0 0
111001 111001 10 10 10 10 0 10 10 10

Data stream of Huffman coded gray scale image see tab. A.6.
Arithmetic compression

Anhang A.3 Lossy Compression

A.3 Lossy Compression

JPEG compression documentation Numerical values of MCU see fig. A.5


Cosine transformed MCU see fig. A.6

63

64

Anhang A Supplementary Material for Chapter 1

DD

DD

DD DD

B2

B2

DD

B2

B2

DD DD

DD

DD

DD DD

DD

DD

DD

DD

B2

5C

5C

B2

5C

5C

B2

DD

DD

DD

DD DD

DD

DD

DD

B2

B2

5C

5C

B2

5C

5C

B2

B2

DD

DD

DD DD

DD

DD

B2

5C

5C

B2

5C

5C

5C

B2

5C

5C

B2

DD

DD DD

DD

DD

DD

B2

5C

5C

B2

5C

B2

5C

5C

B2

DD

DD

DD DD

DD

FF

DD

DD

B2

B2

5C

5C

5C

B2

B2

DD

DD

B0

DD DD

DD

DD

DD

B2

5C

5C

B2

B2

B2

5C

5C

B2

DD

B0

FF

DD

DD

DD

DD

B2

5C

B2

DD

B2

DD

B2

5C

B2

DD

DD

FF

FF

DD

DD

DD

DD

B2

DD

DD

8E

DD

DD

B2

DD

FF

FF

FF

FF

FF

DD

DD

DD DD

DD

DD

8E

DD

DD

DD DD

DD

DD

DD DD

DD

DD

DD

DD

8E

8E

DD

8E

DD

8E

8E

DD

DD

DD

DD DD

DD

8E

DD

DD DD

8E

DD

8E

DD

8E

DD DD

DD

DD

4E

DD

DD

DD

8E

DD DD

DD

8E

8E

8E

DD

DD

4E

DD

4E

DD DD

4E

DD

DD

8E

DD

DD

DD

8E

DD

DD

4E

DD

4E

DD

DD

4E

DD

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

8E

93

93

1B

93

1B

93

93

93

78

78

B7

78

B7

78

78

78

93

1B

4C

1B

4C

1B

93

93

78

B7

F4

B7

F4

B7

78

78

93

1B

4C

4C

4C

1B

93

93

78

B7

F4

F4

F4

B7

78

78

93

1B

4C

1B

4C

1B

69

93

78

B7

F4

B7

F4

B7

B6

78

93

93

93

3A

93

93

80

80

78

78

78

1B

78

78

80

80

93

93

3A

3A

3A

93

93

93

78

78

1B

1B

1B

78

78

78

93

93

93

3A

93

AA

AA

93

78

78

78

1B

78

49

49

78

3A

3A

3A

3A

3A

3A

3A

3A

1B

1B

1B

1B

1B

1B

1B

1B

Abbildung A.5: Numerische Werte von Abb. 1.15, der MCU des Beispielbildes
a-d: DUs Y00 , Y01 , Y10 , Y11 . Die Cb - (e) und die Cr - DU (f) wurden um den Faktor 2 in beiden Richtungen
unterabgetastet.

Anhang A.3 Lossy Compression

307.50 228.84 141.19 18.14 -49.50

1.07

41.38 -56.35 -44.95

143.97 -82.99

54.91

1.45

5.18

65

-4.59

-7.34

15.85

535.88 -253.71 -116.21 -18.35

95.40 -70.63

-2.19

28.88

50.77

-1.55

-32.14 -20.74 -70.93 -51.80

4.27

0.60

2.01

64.98

35.14

-2.82

-16.85 -34.47

4.92

11.26

0.45

33.25

-4.67

29.25

56.70

11.95 -42.93 -26.58

-1.30

14.01

-4.66

-22.41 -47.84 30.75

31.10 -31.33 -31.78 11.98

-1.62

2.88

44.34

24.19 -19.43

28.00 -87.34 10.90

52.61

28.00 -80.56 37.43

-6.96

-0.62

-11.39 22.72

66.33

55.38

21.16

2.90

26.04

-14.13 -30.19

-2.88

35.37

22.75

1.09

9.25

-23.28

-0.95

34.05

38.75

17.48

0.50

-0.01

-21.51

49.69 -65.87 -55.40

-9.65

36.05

12.49 -22.95 13.59

53.32 -32.83 32.76

-1.19

-7.77

-6.06

-16.43

-0.55

87.77 -65.87

15.71 -10.84 -51.07

-30.87 -32.83 -35.07 -53.29 -36.57

8.07

5.66

-30.29

17.63

21.06

16.61

8.63

258.24 -48.75 -32.78 -31.90

6.44

24.35 -33.29

2.73

15.19

-9.49

-32.08

5.48

20.02

442.38 59.30

-6.80

164.67 28.06

15.68 -17.41 -13.60 -47.34 57.11 -11.05

-54.20 -17.72 19.05

-17.16 34.13 -63.19 72.76 -45.04

447.13 -34.76 -16.26

4.07

27.61

-7.02

-18.10 -11.86 22.95

20.80 -31.43 -11.77

7.91

15.80 -15.97 39.58

61.83

14.30 -35.07 37.23

66.93

-7.57

-21.89 15.94

22.45

16.14

31.05

89.55

15.78

-25.12

5.15

-5.37

24.44

-0.22

24.74

7.88

25.72

12.22

-6.24

-18.13 51.22 -111.27 -51.02

-36.90 -30.48 29.55 -22.35 -53.17 -19.88

7.32

-31.56

4.74

-39.80 -27.96 -83.70 33.06 -24.37 -16.04 65.22

38.01

-37.03 -28.21

33.54

47.39

28.23

-2.91

-32.64 11.45 -20.15

17.23 -17.74 -26.67 11.17

-68.82 33.54

19.70

8.87

-7.05

44.62

2.04

18.23

63.67

-1.10

77.48 -17.45

33.91 -29.70 114.27 51.95

-17.74 -55.02 95.28 -20.26 39.88 -67.09 -57.78

-213.50

-52.47

182.20

42.71

21.75

25.59

13.29

43.30

-29.88

29.86

-68.21

-5.14

-46.88

-77.20

23.79

77.14

-19.52

-22.32

63.78

-22.02

72.72

72.91

-19.33

-11.09

338.73

33.11

-165.33

-40.00

-1.57

-9.74

12.46

35.74

-28.17

-10.84

-23.98

2.06

-24.23

26.70

-37.22

-75.29

-167.76

15.82

-2.12

-16.74

37.84

2.96

11.00

2.32

161.95

3.04

20.35

51.96

-81.71

-39.32

-17.80

-97.72

-84.93

-38.14

157.17

46.27

-10.43

-5.96

4.62

0.11

-49.25

37.11

-45.04

-7.39

5.50

-24.07

7.56

-52.10

-83.13

-25.30

3.71

2.90

-7.63

22.82

-5.73

35.38

52.94

-6.22

14.24

4.33

6.87

1.88

4.95

-33.04

88.71

14.71

-20.85

-18.31

9.53

-3.37

-4.87

30.72

-45.16

16.51

9.28

-3.59

8.14

32.52

-33.52

-86.12

-75.42

22.36

16.75

9.55

9.36

40.96

-15.38

-64.34

74.70

16.51

3.37

-22.07

-74.74

35.94

12.97

-43.53

-53.10

22.36

56.95

-41.03

-10.95

23.71

38.52

-25.17

Abbildung A.6: DUs der cosinus-transformierten MCU.


a-d: DUs Y00 , Y01 , Y10 , Y11 der Luminanzkomponente, e: Cb -, f: Cr Chrominanzkomponenten.

66

Anhang A Supplementary Material for Chapter 1

Quantized MCU see fig. A.7

10

10

-1

17

-12

-6

-1

-2

-3

-1

-1

-1

-1

-2

-1

14

-1

-1

-1

-1

-1

-1

14

-2

-1

-6

-1

-1

-1

-1

-1

-1

11

-2

11

-1

-3

-2

-1

12

-1

-3

-1

-1

-1

-1

-1

-1

-1

-1

Abbildung A.7: Quantisierte numerische Werte der MCU in Abb. ??


Faktor r = 2. a-d: Blcke Y00 , Y01 , Y10 , (e) Cb - und (f) Cr -Komponenten.

Zigzag scanned quantized MCU see fig. A.7

Anhang A.3 Lossy Compression

Y00

Y01

Y10

Y11

Cb
Cr

=
=

67

10, 10, 0, 5, 2, 7, 1, -2, -3, 2, 1, 1, 0, -1, -1, 0, 0, 0, -1,


-2, 0, 1, 0, 0, -1, -1, 1, 0, 0, -1, 0, 0, 0, 0, -1, 1, 0...0
17, -12, 1, 2, 2, -6, -1, 0, 1, 1, 0, 2, 0, -1, 0, 1, 0, 0, 0, 0,
0, 1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 1, 0...0
14, 3, 7, -2, 1, 0, -1, 1, -1, 2, -1, 0, 1, 0, 1, -1, 0, 1, -1, 0,
-1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 0, 1, 0...0
14, -2, 11, 1, -2, -1, 0, -1, -1, 1, 0, 0, 0, -1, 0, 0, 0, 0, 1,
1, 0, 0, -1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0...0
-6, -1, -1, -1, -1, 4, 0, 1, 0, 2, 0...0
-1, 1, 9, -3, 1, -1, 0, -3, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0...0

Tabelle A.7: Datenstrom der cosinustransformierten, quantisierten und zickzack-abgetasteten MCU Abb. A.7

68

Anhang A Supplementary Material for Chapter 1


Tabelle A.8: Huffman code for the AC coefficients of the luminance and chrominance components [4].
Hexadecimal representation of values left column

Zeroes; Category
(0;0) (EOB)
(0;1)
(0;2)
(0;3)
(0;4)
(0;5)
(0;6)
(0;7)
(0;8)
(0;9)
(0;A)
(1;1)
(1;2)
(1;3)
(1;4)
(1;5)
(1;6)
(1;7)
(1;8)
(1;9)
(1;A)
(2;1)
(2;2)
(2;3)
(2;4)
(2;5)
(2;6)
(2;7)
(2;8)
(2;9)
(2;A)
(3;1)
(3;2)
(3;3)
(3;4)
(3;5)
(3;6)
(3;7)

Huffman code luminance


1010
00
01
100
1011
11010
1111000
11111000
1111110110
1111111110000010
1111111110000011
1100
11011
1111001
111110110
11111110110
1111111110000100
1111111110000101
1111111110000110
1111111110000111
1111111110001000
11100
11111001
1111110111
111111110100
1111111110001001
1111111110001010
1111111110001011
1111111110001100
1111111110001101
1111111110001110
111010
111110111
111111110101
1111111110001111
1111111110010000
1111111110010001
1111111110010010

Huffman code chromimance


00
01
100
1010
11000
11001
111000
1111000
111110100
1111110110
111111110100
1011
111001
11110110
111110101
11111110110
111111110101
1111111110001000
1111111110001001
1111111110001010
1111111110001011
11010
11110111
1111110111
111111110110
111111111000010
1111111110001100
1111111110001101
1111111110001110
1111111110001111
1111111110010000
11011
11111000
1111111000
111111110111
1111111110010001
1111111110010010
1111111110010011
Fortsetzung nchste Seite

Anhang A.3 Lossy Compression

69

Fortsetzung

Zeroes; Category
(3;8)
(3;9)
(3;A)
(4;1)
(4;2)
(4;3)
(4;4)
(4;5)
(4;6)
(4;7)
(4;8)
(4;9)
(4;A)
(5;1)
(5;2)
(5;3)
(5;4)
(5;5)
(5;6)
(5;7)
(5;8)
(5;9)
(5;A)
(6;1)
(6;2)
(6;3)
(6;4)
(6;5)
(6;6)
(6;7)
(6;8)
(6;9)
(6;A)
(7;1)
(7;2)
(7;3)
(7;4)
(7;5)
(7;6)
(7;7)

Huffman code luminance


1111111110010011
1111111110010100
1111111110010101
111011
1111111000
1111111110010110
1111111110010111
1111111110011000
1111111110011001
1111111110011010
1111111110011011
1111111110011100
1111111110011101
1111010
11111110111
1111111110011110
1111111110011111
1111111110100000
1111111110100001
1111111110100010
1111111110100011
1111111110100100
1111111110100101
1111011
111111110110
1111111110100110
1111111110100111
1111111110101000
1111111110101001
1111111110101010
1111111110101011
1111111110101100
1111111110101101
11111010
111111110111
1111111110101110
1111111110101111
1111111110110000
1111111110110001
1111111110110010

Huffman code chromimance


1111111110010100
1111111110010101
1111111110010110
111010
111110110
1111111110010111
1111111110011000
1111111110011001
1111111110011010
1111111110011011
1111111110011100
1111111110011101
1111111110011110
111011
1111111001
1111111110011111
1111111110100000
1111111110100001
1111111110100010
1111111110100011
1111111110100100
1111111110100101
1111111110100110
1111001
11111110111
1111111110100111
1111111110101000
1111111110101001
1111111110101010
1111111110101011
1111111110101100
1111111110101101
1111111110101110
1111010
11111111000
1111111110101111
1111111110110000
1111111110110001
1111111110110010
1111111110110011
Fortsetzung nchste Seite

70

Anhang A Supplementary Material for Chapter 1

Fortsetzung

Zeroes; Category
(7;8)
(7;9)
(7;A)
(8;1)
(8;2)
(8;3)
(8;4)
(8;5)
(8;6)
(8;7)
(8;8)
(8;9)
(8;A)
(9;1)
(9;2)
(9;3)
(9;4)
(9;5)
(9;6)
(9;7)
(9;8)
(9;9)
(9;A)
(A;1)
(A;2)
(A;3)
(A;4)
(A;5)
(A;6)
(A;7)
(A;8)
(A;9)
(A;A)
(B;1)
(B;2)
(B;3)
(B;4)
(B;5)
(B;6)
(B;7)

Huffman code luminance


1111111110110011
1111111110110100
1111111110110101
111111000
111111111000000
1111111110110110
1111111110110111
1111111110111000
1111111110111001
1111111110111010
1111111110111011
1111111110111100
1111111110111101
111111001
1111111110111110
1111111110111111
1111111111000000
1111111111000001
1111111111000010
1111111111000011
1111111111000100
1111111111000101
1111111111000110
111111010
1111111111000111
1111111111001000
1111111111001001
1111111111001010
1111111111001011
1111111111001100
1111111111001101
1111111111001110
1111111111001111
1111111001
1111111111010000
1111111111010001
1111111111010010
1111111111010011
1111111111010100
1111111111010101

Huffman code chromimance


1111111110110100
1111111110110101
1111111110110110
11111001
1111111110110111
1111111110111000
1111111110111001
1111111110111010
1111111110111011
1111111110111100
1111111110111101
1111111110111110
1111111110111111
111110111
1111111111000000
1111111111000001
1111111111000010
1111111111000011
1111111111000100
1111111111000101
1111111111000110
1111111111000111
1111111111001000
111111000
1111111111001001
1111111111001010
1111111111001011
1111111111001100
1111111111001101
1111111111001110
1111111111001111
1111111111010000
1111111111010001
111111001
1111111111010010
1111111111010011
1111111111010100
1111111111010101
1111111111010110
1111111111010111
Fortsetzung nchste Seite

Anhang A.3 Lossy Compression

71

Fortsetzung

Zeroes; Category
(B;8)
(B;9)
(B;A)
(C;1)
(C;2)
(C;3)
(C;4)
(C;5)
(C;6)
(C;7)
(C;8)
(C;9)
(C;A)
(D;1)
(D;2)
(D;3)
(D;4)
(D;5)
(D;6)
(D;7)
(D;8)
(D;9)
(D;A)
(E;1)
(E;2)
(E;3)
(E;4)
(E;5)
(E;6)
(E;7)
(E;8)
(E;9)
(E;A)
(F;0) (ZRL)
(F;1)
(F;2)
(F;3)
(F;4)
(F;5)
(F;6)

Huffman code luminance


1111111111010110
1111111111010111
1111111111011000
1111111010
1111111111011001
1111111111011010
1111111111011011
1111111111011100
1111111111011101
1111111111011110
1111111111011111
1111111111100000
1111111111100001
11111111000
1111111111100010
1111111111100011
1111111111100100
1111111111100101
1111111111100110
1111111111100111
1111111111101000
1111111111101001
1111111111101010
1111111111101011
1111111111101100
1111111111101101
1111111111101110
1111111111101111
1111111111110000
1111111111110001
1111111111110010
1111111111110011
1111111111110100
11111111001
1111111111110101
1111111111110110
1111111111110111
1111111111111000
1111111111111001
1111111111111010

Huffman code chromimance


1111111111011000
1111111111011001
1111111111011010
111111010
1111111111011011
1111111111011100
1111111111011101
1111111111011110
1111111111011111
1111111111100000
1111111111100001
1111111111100010
1111111111100011
11111111001
1111111111100100
1111111111100101
1111111111100110
1111111111100111
1111111111101000
1111111111101001
1111111111101010
1111111111101011
1111111111101100
11111111100000
1111111111101101
1111111111101110
1111111111101111
1111111111110000
1111111111110001
1111111111110010
1111111111110011
1111111111110100
1111111111110101
1111111010
111111111000011
1111111111110110
1111111111110111
1111111111111000
1111111111111001
1111111111111010
Fortsetzung nchste Seite

72

Anhang A Supplementary Material for Chapter 1

Fortsetzung

Zeroes; Category
(F;7)
(F;8)
(F;9)
(F;A)

Huffman code luminance


1111111111111011
1111111111111100
1111111111111101
1111111111111110

Huffman code chromimance


1111111111111011
1111111111111100
1111111111111101
1111111111111110

Anhang A.3 Lossy Compression

73

Tabelle A.9: Codingof the MCU of the example image 1.1a).


YDC
CbDC
CrDC

= 1011010, 100111, 01100, 0000, 110001, 010


= 110001
= 010

Y00AC

= 10, 0, 5, 2, 7, 1, -2, -3, 2, 1, 1, 0, -1, -1, 0, 0, 0, -1, -2, 0, 1, 0, 0, -1, -1, 1, 0, 0, -1, 0, 0, 0, 0, -1, 1
= (0;10), (1;5), (0;2), (0;7), (0;1), (0;-2), (0;-3), (0;1), (0;1), (1;-1), (0;-1), (3;-1), (0;-2), (1;1), (2;-1), (0;-1), (0;1), (
= (0;4)1010, (1;3)101, (0;2)10, (0;3)111, (0;1)1, (0;2)01, (0;2)00,(0;1)1, (0;1)1, (1;1)0, (0;1)0, (3;1)0, (0;2)01 (1;1)1 (2;1)0 (0;1
= 10111010, 1111001101, 0110, 100111, 001, 0101, 0100, 001, 001, 11000, 000, 1110100, 0101, 11001, 110100, 000, 001

Y01AC

= -12, 1, 2, 2, -6, -1, 0, 1, 1, 0, 2, 0, -1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 1, 0...0


= (0;-12), (0;1), 01, (0;2), (0;-6), (0;-1), (1;1), (0;1), (1; 2), (1;-1), (1;1), (5;1), (2;-1), (1;-1), (5;1)
= (0;4)0011, (0;1)1, (0;2)10, (0;2)10, (0;3)001, (0;1)0, (1;1)1, (0;1)1, ((1;2)10, (1;1)0, (1;1)1, (5;1)1, (2;1)0, (
= 10110011, 001, 0110, 0110, 100001, 000, 11001, 001, 1101110, 11000, 11001, 11110101, 0, 11000, 11

Y10AC

= (0;3), (0;7), (0;-2), (0;1), (1; -1), (0;1), (0;-1), (0;2), (0;-1), (1;1), (1;1), (0;-1), (1;1), (0;-1), (1;-1), (2;-1), (0;
= (0;2)11, (0;3)111, (0;2)01, (0;1)1, (0;1)0, (0;1)1, (0;1)0, (0;2)10, (0;1)0, (1;1)1, (1;1)1, (0;1)0, (1;1)1, (0;1)0, (1;1)0, (2;
= 0111, 100111, 0101, 001, 000, 001, 000, 0110, 000, 11001, 11001, 000, 11001, 000, 11000, 111000, 001, 111
Y11AC

= (0;-2), (0;11), (0;1), (0;-2), (0;-1), (1;-1), (0;-1), (0;1), (3;-1), (4;1), (0;1), (2;-1), (2;2), (13;-1), (13
= (0;2)01, (0;4)1011, (0;1)1, (0;2)01, (0;1)0, (1;1)0, (0;1)0, (0;1)1, (3;1)0, (4;1)1, (0;1)1, (2;1)0, (4;2)10, (D;
= 0101, 10111011, 001, 0101, 000, 11000, 000, 001, 1110100, 1110111, 001, 111000, 111111100010, 11111111001
Cb

= -1, -1, -1, -1, 4, 0, 1, 0, 2, 0...0


= (0;-1), (0;-1), (0;-1), (0;-1), (0;4), (1;1), (1;2), (0;0)
= (0;1)0, (0;1)0, (0;1)0, (0;1)0, (0;3)100, (1;1)1, (1;2)10, (0;0)
= 010, 010, 010, 010, 1010100, 10111, 11101110, 00

Cr

= -1, 1, 9, -3, 1, -1, 0, -3, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0...0


= (0;1), (0;9), (0;-3), (0;1), (0;-1), (1;-3), (1;-1), (8;1), (0;0)
= (1;1)1, (0;4)1001, (0;2)00, (0;1)1, (0;1)0, (1;2)00, (1;1)0, (8;1)1, (0;0)
= 10111, 110001001, 10000, 011, 010, 11101100, 10110, 111110011, 00

74

Anhang A Supplementary Material for Chapter 1

Literaturverzeichnis

75

Literaturverzeichnis

[1] N. Abramson. Information Theory and Coding. McGraw-Hill, New York, 1963.
[2] R. M. Fano. The Transmission of Information. Technical Report 65, Lab. Electr. Engin., Massachusetts Institute of Technology, 1949.
[3] D. E. Gray, Preparing Graphics for the Web, 1996. URL http://www.dsdesign.com/
articles/jpeg.htm.
[4] Joint Photographic Experts Group. Information Technology - Digital Compression and Coding
of Continuous-Tone Still Images - Requirements and Guidelines. Technical Report T.81, CCITT,
September 1992.
[5] D. A. Huffman. A Method for the Construction of Minimum Redundancy Codes. Proc. IRE, 40
(10):10981101, 1952.
[6] A. Hyvrinen. A Family of Fixed-Point Algorithms for Independent Component Analysis.
In: Proc. Int. Conf. on Acoustics, Speech, and Signal Processing (ICASSP)97, Munich, Germany, 39173920, 1997.
[7] I. T. Jolliffe. Principal Component Analysis. Springer, New York, 1986.
[8] M. Kendall. Multivariate Analysis. Charles Griffin and Co., 1975.
[9] G. G. Langdon, J. J. Rissanen. A Double-Adaptive File Compression Algorithm. IEEE Trans.
Comm., 31(11):12531255, November 1983.
[10] F. Nicolls. Real-Time Compression of SAR Images for Transmission over Low-Bandwidth Channels. Technical report, UCT Cape Town, 1993.
[11] J. J. Rissanen. A Universal Data Compression System. IEEE Trans. Inform. Theory, 29(5):
656664, September 1983.
[12] F. Rubin. Arithmetic Stream Coding Using Fixed Precision Registers. IEEE Trans. Inform.
Theory, 25(6):672675, November 1979.
[13] H. Samet. The Quadtree and Related Hierarchical Data Structures. ACM Computing Surveys,
16(2):187260, 1984.
[14] C. E. Shannon. A Mathematical Theory of Communication. The Bell Sys. Tech. J., 27(3):379
423, 1948.
[15] G.J. Sullivan, R.L. Baker. Efficient Quadtree Coding of Images and Video. IEEE Transactions
on Image Processing, 3(3):327 331, May 1994.

76

Literaturverzeichnis

[16] T. A. Welch. A Technique for High-Performance Data Compression. Computer, 17(6):819,


June 1984.
[17] J. Ziv, A. Lempel. Compression of Individual Sequences via Variable-Rate Coding. IEEE Trans.
Inform. Theory, 24(5):530536, September 1977.
[18] J. Ziv, A. Lempel. A Universal Algorithm for Sequential Data Compression. IEEE Trans. Inform.
Theory, 23(3):337343., May 1977.

Index

baseline process, 33
extended DCT-based process, 33
hierarchical process, 33
lossless process, 33

EOB-marker, 43

AC-Koeffizient, 37
Alphabet, 9, 17
arithmetische Codierung, 21

hierarchischer Algorithmus, 33
Histogramm
normiertes, 15
Huffman Code, 18
Huffman-Baum, 19

Basisalgorithmus, 33
Baumstruktur, 7
Blatt, 7
Elternknoten, 7
Kindknoten, 7
Knoten, 7
Wurzel, 7
Bild
kompression, 1
Bit, 14
Bit-pro-Pixel Wert, 3
Blatt, 7
Chrominanzquantisierung, 38
Code
Huffman, 18
prfixfreier, 18
CODEC, 3
Codierung
arithmetische, 21
Dateneinheit, 35
DC-Koeffizient, 37
DC-Vektor, 40
Decoder, 3
Diskrete Cosinus Tranformation, 36
Elternknoten, 7
Encoder, 3
Entropie, 14
Entropiecode, 17

Fano, 17
Fano-Bedingung, 18

Information, 13, 14
Informationstheorie, 13
JPEG, 33
baseline process, 33
Basisalgorithmus, 33
Kindknoten, 7
Knoten, 7
Kompression, 1
arithmetische, 21
heuristische Methoden, 5
Huffman, 18
LZW, 8
Quadtree, 7
RLE, 5
Subtraktion, 6
verlustbehaftete, 32
verlustfrei, 4
Kompressionsmethode
prdiktive, 6
Kompressionsrate, 3
Lauflngencodierung, 5
Luminanzquantisierung, 38
LZW Kompression, 8
minimale Codiereinheit, 35
Morse Code, 17

78

normiertes Histogramm, 15
prdiktive Kompressionsmethode, 6
prfixfreier Code, 18
Prefix-Eigenschaft, 18
Quadtrees, 7
quantisierter Vektor, 39
Quantisierung
Chrominanz, 38
Luminanz, 38
Quantisierungsmatrix, 38
quantization
luminance, 38
Quellencodierungstheorem, 15
Relative Datenedundanz, 3
RLE, 5
Shannon, 15, 17
Subtraktion, 6
Symbol, 17
Unsicherheit, 14
verlustfrei, 4
Wrterbuch, 8
Wahrscheinlichkeit, 14
Wurzel, 7
Zero Run Length Coding, 43
ZRLC, 43

Index