Eike Müller Kompression-Algorithmen für Bilder 3. Juli 23 Inhaltsverzeichnis Huffman-Kodierung 2. Präfixfreie Codes................................. 2.2 Huffman Code.................................. 3.3 Beispiel...................................... 3.4 Nachteile der Huffman Kodierung........................ 3 2 Diskrete Kosinustransformation (DCT) 5 2. Durchführung der Transformation....................... 5 2.2 Unzulänglichkeiten der Diskreten Kosinustransformation........... 6 3 Wavelets 7 3. Mehrstufen Transformation........................... 7 3.2 Zweidimensionale Transformation........................ 9 3.3 JPEG2 Standard............................... 9 4 Fraktale Kompression 4. Grundlagen.................................... 4.2 Rekonstruktion des Bildes............................ 4.3 Konstruktion des Hutchinson Operators.................... 4.4 Graustufen und Farbe.............................. 5 Vergleich 6 Literatur 2
Huffman-Kodierung. Präfixfreie Codes Ein Code ist eine Vorschrift, die eine Nachricht in eine andere Sprache umwandelt. Hierbei wird jedem Symbol des Alphabets der Nachricht ein Codewort zugeordnet. Der vielleicht bekannteste Code ist die ASCII Kodierung, der jedem Symbol eine - Folge der Länge 8 zuordnet. Problematisch hierbei ist, dass diese Codes nicht eindeutig sein müssen. Ist zum Beispiel der folgende Code C gegeben C(a) = C(b) = C(c) =, so kann man nicht entscheiden, ob die kodierte Nachricht zu c oder zu ab dekodiert werden soll. Deswegen ist die Familie der präfixfreien Codes besonders interessant. Ein Code heißt präfixfrei, genau dann wenn jedes Codewort nicht Präfix von einem anderen Codewort ist. Da nur ein Codewort Präfix der kodierten Nachricht sein kann, folgt aus dieser Eigenschaft, dass jede kodierte Nachricht eindeutigt dekodiert werden kann. Solche Codes werden gerne in einem Binären Baum dargestellt, wobei die Kanten nach rechts mit und die nach links mit beschriftet werden. Jedes Blatt ist dann mit einem eigenen Symbol markiert und das Codewort für dieses Symbol ergibt sich aus den Kanten von der Wurzel hin zu diesem Blatt. Der binäre Baum zu dem präfixfreien Code C ist der Baum in Abbildung. C(a) = C(b) = C(c) =, c a b Abbildung : Code-Baum für den Code C(a) =, C(b) = und C(c) =. 2
.2 Huffman Code Die Huffman Kodierung wurde 952 von David Albert Huffman veröffentlicht. Sie weist einer Nachricht einen präfixfreien Code zu, mit dem die Nachricht möglichst kurz kodiert wird. Das heißt, es gibt keinen anderen präfixfreien Code, mit der die Nachricht kürzer kodiert werden kann. Folglich ist der Huffman Code die optimale Kompression unter den präfixfreien Codes. Um den Huffman Baum zu dem Code zu generieren, werden nur die relativen Häufigkeiten der einzelnen Symbole benötigt, die in der Nachricht vorkommen. Der Algorithmus läuft dabei wie folgt ab: Algorithm Generierung des Huffman Baumes Verpacke jedes Symbol a einzeln in einen Baum. while Anzahl der Bäume > do Vereinige die beiden Bäume mit kleinster Gesamthäufigkeit end while Da für den Huffman Baum nur die relativen Häufigkeiten benötigt werden, sieht der Baum für alle lange deutsche Texte immer gleich aus. Werden nur solche Texte kodiert, so muss nicht jedes mal der Huffman-Baum neu berechnet werden. Dies hat dann auch den Vorteil, dass für die Dekodierung der Baum auch nicht extra übertragen werden muss..3 Beispiel Als Beispiel betrachten wir das Wort mississippi. Es hat je 4 mal die Buchstaben i und s, zweimal den Buchstaben p und einmal den Buchstaben m. Die einzelnen Schritte des Algorithmus werden in Abbildung 2 dargestellt. Der Code der dabei entsteht ist der Folgende: C(m) = C(p) = C(i) = C(s) =. Somit wird das Wort mississippi zu kodiert..4 Nachteile der Huffman Kodierung Bei der Huffman Kodierung wird angenommen, das jedes auftretende Symbol unabhängig von den Symbolen in der Umgebung ist. Während dies einigermaßen bei Texten gegeben ist, so stimmt es bei Bildern nicht. Denn die Farbwerte benachbarter Pixel unterscheiden sich im Regelfall nur gering. Zusätzlich ist es bei Bildern möglich Informationen zu vergessen, ohne das dies sichtbar wird. Ändert man in einem Bild die einzelnen Farbwerte nur um kleine Werte, so ist dies mit dem bloßen Auge so gut wie nicht wahrnehmbar. Mit der Huffman-Kodierung ist aber nur eine verlustfreie Komprimierung möglich, was dazu führt, dass man solche Eigenschaften nicht ausnutzen kann. 3
Schritt Häufigkeit Symbole 4 4 2 m i s p Schritt 2 Häufigkeit 3 4 4 Symbole i s Schritt 3 Häufigkeit Symbole m p 7 4 s m Schritt 4 Häufigkeit Symbole p i s m p i Abbildung 2: Generierung das Huffman-Baum für das Wort mississippi. 4
Dies bedeutet natürlich nicht, dass die Huffman Kodierung bei Bilder nicht eingesetzt wird. Nur sie kann nicht alleine verwendet werden. 2 Diskrete Kosinustransformation (DCT) Bei der Diskreten Kosinustransformation (DCT) wird das Eingangssignal a i als Auswertungen einer Funktion f an den Stellen i dargestellt. Die Funktion f wird dabei als Linearkombination f = b k f k dargestellt. Die f k sind dabei Kosinusfunktionen unterschiedlicher Frequenzen: f (i) = 2 f k (i) = cos ( kπ n ( i + )) 2 für k. Eine Folge b k beschreibt durch die Formel a i = b n 2 + ( ( kπ b k cos i + )) n 2 k= das Eingangssignal a i. Dieses Auswerten wird auch Inverse Diskrete Kosinustransformation genannt. Der Vorteil dieser Darstellung ist, dass die b k mit k groß nur Einfluss auf die Farbveränderung benachbarter Pixel besitzen. Da man aber davon ausgehen kann, dass diese Pixel ähnliche Farbwerte haben, sind diese Einträge klein. Somit sind die Auswirkungen grober Quantisierungen dieser Werte nicht ausschlaggebend. Damit kann die Information dieser Werte verringert werden, ohne dass die Bildqualität besonders leidet. 2. Durchführung der Transformation Die Berechnung der b k aus den a i wird Diskrete Kosinustransformation genannt und erfolgt nach der Regel n ( ( πk b k = a i cos i + )). n 2 i= Diese Formeln beschreiben aber erstmal nur wie eindimensionale Signale transformiert werden. Bilder sind aber zweidimensionale Signale. Für die zweidimensionale Variante wird zuerst jede Zeile des Bildes einzeln betrachtet. Jede dieser Zeilen ist ein eindimensionales Signal, sodass man diese mit Hilfe der Transformation transformieren kann. Tut man dieses für jede einzelne Zeile, so erhält man ein neues Bild. Von diesem Bild betrachtet man nun jede einzelne Spalte. Diese stellen wieder eindimensionale Signale, die wiederum transformiert werden können. Nach diesen Transformationen erhält man dann schlussendlich das vollständig transformierte Bild. Die inverse Transformation läuft dabei genau analog ab. 5
Zusammengefasst lässt sich die Transformation durch n n b k,l = i= j= und die inverse Transformation durch beschreiben. a i,j = b n, 4 + k= n + l= n n + k= l= ( ( πk a i,j cos i + )) ( ( πl cos j + )) n 2 n 2 b k, 2 cos ( kπ n ( i + )) 2 ( ( b,l lπ 2 cos j + )) n 2 ( ( kπ b k,l cos i + )) ( ( lπ cos j + )) n 2 n 2 2.2 Unzulänglichkeiten der Diskreten Kosinustransformation Die Kosinusfunktionen sind nicht nur lokal definiert, sodass hohe Frequenzen, die nur in einem Bereich des Bildes vorkommen, gleich dazu führen, dass überall Kosinusfunktionen erkannt werden. Dies führt dazu, dass die Bilder nicht mehr gut komprimiert werden können. Das Beispiel 3 zeigt dies gut an einem Beispiel, wo nur am Rand eines Blockes Frequenzen auftreten. Abbildung 3: Diskrete Kosinustransformation eines Bildes mit nur lokal hohen Frequenzen. Dieser Nachteil führt dazu, dass immer nur kleine Ausschnitte effektiv transformiert werden können. Dies wird in dem JPEG Standard auch so verwirklicht, indem immer nur 8 8 Blöcke transformiert werden. Wählt man hierbei aber zu grobe Quantisierungen, so kann es zu großen Farbunterschieden zwischen benachbarten Blöcken kommen und die Blockstruktur wird sichtbar. Zusätzlich besteht das Problem bei der diskreten Kosinus Transformation darin, dass für die Transformation Kosinusfunktionen ausgewertet werden müssen. Dies führt dazu, dass auf Grund der Rechenungenauigkeit auch ohne Quantisierung immer Daten verloren gehen. 6
3 Wavelets Bei der Wavelet Transformation wird, wie bei der Diskreten Kosinustransformation auch, das Eingangssignal als Funktionsauswertungen einer Funktion f dargestellt. Im Unterschied wird hierbei f als Linearkombination von nur lokal definierten Funktionen dargestellt. Dies soll verhindern, dass Frequenzen, die nur lokal auftreten, auf dem gesamten Bild erkannt werden. Die einfachsten Wavelets sind die Haar-Wavelets. Die Basisfunktionen hierbei sind die Funktionen φ k (x) = φ(x 2k) und ψ k (x) = ψ(x 2k). Die beiden Funktionen φ und ψ werden in Abbildung 4 dargestellt. Der Ausschlag beider Funktionen soll dabei den Wert 2 besitzen. Abbildung 4: Vater und Mutter Haar-Wavelets φ und ψ. Ist nun ein Signal x = (x,..., x N ) der Länge N = 2 n gegeben, so bildet die Transformation es auf (a, d ) ab. Hierbei soll a die Koeffizienten von φ k und d die Koeffizienten von ψ k enthalten. Berechnen lassen sie sich durch ( a x + x 2 =, x 3 + x 4,..., x ) N + x N 2 2 2 ( d x x 2 =, x 3 x 4,..., x ) N x N. 2 2 2 Dabei wird a als Trend und d als Detail bezeichnet, denn a hat die selbe Form wie x und d beinhaltet die Veränderung zwischen zwei benachbarten Werten. Stammt das Signal von einer Diskretisierung eines kontinuierlichen Signals, so kann man davon ausgehen, dass d nur sehr kleine Einträge besitzt. Die Umkehrtransformation läuft dabei wie folgt ab: Sind a = ( ) a,..., a N/2 und d = ( ) d,..., d N/2 gegeben, so erhält man durch Einsetzen das Ursprungssignal ( a + d x =, a d,..., a N/2 + d N/2, a ) N/2 d N/2. 2 2 2 2 Das Beispiel in Abbildung 5 zeigt ganz gut, wie die Informationen in den vorderen Bereich geschoben werden. 7
Abbildung 5: Signal vor und nach der Haar-Wavelet Transformation. 8
3. Mehrstufen Transformation Nach der Transformation x 7 (a, d ), besitzt a die selbe Form wie x. Folglich bietet es sich an, a weiter zu (a2, d2 ) zu transformieren. Die ai kann man rekursiv immer weiter transformieren, bis man die gewu nschte Tiefe erha lt. Die n-te Stufe der Haar Transformation Hn bildet dann x auf (an, dn, dn,..., d2, d ) ab. 3.2 Zweidimensionale Transformation Die zweidimensionale Transformation la uft analog zu der zweidimensionale Transformation der Diskreten Kosinustransformation ab. Zuerst werden die Zeilen je einzeln transformiert und danach je die Spalten. Das Ergebnis einer zweidimensionale Transformation erster Stufe sieht man in Abbildung 6. Abbildung 6: zweidimensionale -level Transformation 3.3 JPEG2 Standard Bei dem JPEG2 Standard werden Wavelets verwendet. Hierbei handelt es sich aber nicht um die Haar Wavelets, sondern um die Cohen-Daubechies-Feauveau-Wavelets. Diese konzentrieren die Informationen noch besser als die Haar Wavelets. Hierbei werden werden zwei verschiedene Versionen dieser Wavelets verwendet. Die Variante CDF 9/7 wird verwendet, wenn bei kleiner Bildgro ße eine hohe Bildqualita t erreicht werden soll. Und die Variante CDF 5/3 wird verwendet, wenn die Bilder verlustfrei abgespeichert werden sollen. Die Variante CDF 5/3 konzentriert dabei die Informationen nicht so gut wie die CDF 9/7 Variante, aber dafu r ist sie eine Ganzzahl Transformation. Dies wird beno tigt um wegen der Rechenungenauigkeit keine Informationen zu verlieren. 9
Nachteile des JPEG2 Standards sind, dass die Transformation um einiges länger dauern als bei der Diskreten Kosinustransformation und zusätzlich wird diese Transformation auch noch durch Patente geschützt. Somit darf man sie nicht ohne weiteres einsetzen. 4 Fraktale Kompression Die Fraktale Kompression besitzt eine ganz andere Idee als die Kompression durch die beiden vorherigen Varianten. In den beiden vorherigen Varianten besteht die Idee daraus, dass die Information verdichtet wird. Bei der Fraktalen Kompression wird das Bild als Fixpunkt einer Funktion beschrieben. Zusätzlich hat die Kompression den Vorteil, dass sie nicht von einem Pixelraster abhängt. Somit kann das Bild beliebig vergrößert werden, ohne das Pixel auftauchen. 4. Grundlagen Ein Iteratives Funktionen System ist eine Menge von kontrahierenden Abbildungen f i : R 2 R 2, i =,..., n. Diese Abbildungen beschreiben den Hutchinson Operator H : 2 R2 2 R2 gegeben durch H(A) = n f i (A). i= Dieser Hutchinson Operator besitzt genau einen nicht leeren kompakten Fixpunkt B R 2. Dieser Fixpunkt B beschreibt dann ein binäres Bild. Ein Punkt p R 2 hat den Farbwert schwarz falls p B und ansonsten weiß. 4.2 Rekonstruktion des Bildes Um den Fixpunkt B des Hutchinson Operator zu bestimmen, wählt man eine beliebige nicht leere kompakte Menge A. Dann berechnet man iterative die Mengen A k+ = H(A k ). Diese Folge konvergiert gegen das gewünschte Bild B. Da im Normalfall kein Index k existiert mit B = A k, berechnet man nur die Folge bis zu einem Index k, sodass zwischen A k und A k kein sichtbarer Unterschied mehr besteht. Im Abbildung 8 sieht man wie die einzelnen Iterationsstufen aussehen. Beachten muss man aber dabei, das hier schon die Erweiterung zu Graustufen vorgenommen worden ist. 4.3 Konstruktion des Hutchinson Operators Die Suche nach einem Iterativen Funktionen System, welches ein gegebenes Bild gut beschreibt, ist nicht ganz einfach. Normalerweise wird dafür das Bild in Domainblöcke D i zerlegt. Für jeden Domainblock D i wird dann ein Rangeblock R i gesucht, der größer ist aber sehr ähnlich zu D i ist. Schlussendlich muss dann nur noch die kontrahierende Abbildung f i bestimmt werden, die R i auf f i (R i ) D i abbildet.
Abbildung 7: Iterationsstufen der fraktalen Kompression. Je mehr Spielraum man hierbei für die einzelnen Blöcke und und Abbildungen lässt, umso besser kann man dabei das Bild beschreiben. Eine größere Auswahl bedeutet aber auch, dass die Kodierung länger dauert. Außerdem muss des Weiteren beachtet werden, dass zur Repräsentierung dieser Parameter mehr Speicherplatz benötigt wird. Abbildung 8: Domain- und Rangeblock 4.4 Graustufen und Farbe Um Graustufen bei der fraktalen Kompression zu erlauben muss eine weite Dimension verwendet werden. Das heißt das Bild B ist dann als Teilmenge des R 3 gegeben. Gilt (x, y, z) B, so bedeutet dies, dass die Position (x, y) im Bild den Farbwert z besitzt. Mit immer mehr neuen Dimensionen ist es somit auch möglich weitere Farbkanäle hinzu zufügen. Somit benötigt ein farbiges Bild dann fünf Dimensionen.
5 Vergleich Abbildung vergleicht die Bildqualität der einzelnen Verfahren bei den Kompressionsstufen : 35 und :. Hierbei sieht man, dass die Diskrete Kosinustransformation schon bei einer Kompressionsstufe von : 35 leicht zu der Blockstrucktur tendiert. Bei einer Kompressionsstufe von : ist sie sehr deutlich. Bei den Wavelets hingegen hat man bei : 35 noch so gut wie keine Qualitätsverluste, wogegen bei : das Bild leicht unscharf wird. Bei der Fraktalen Kompression entsteht bei : ein recht akzeptables Bild. Hierbei werden aber schon gewisse Details (zum Beispiel beim Hut) weggelassen. Bei : dagegen kann man nur noch schwerlich etwas ausmachen. Dies ist dem Fakt geschuldet, dass das Bild nicht genügend Selbstähnlichkeiten besitzt. Schlussendlich bietet die Wavelet Komprimierung qualitativ die besten Ergebnisse, wogegen die Diskrete Kosinustransformation um einiges schneller abläuft. Hat man aber dagegen ein Bild mit großer Selbstähnlichkeit wie das Bild von einem Blumenkohl aus Abbildung 9, so kann diese die besten Ergebnisse liefern. Abbildung 9: Blumenkohl: Hier eignet sich die fraktale Kompression. 6 Literatur [] Fraktale Kompression. http://www-lehre.informatik.uni-osnabrueck.de/mmii/ paper/fraktale_kompression.html. [2] Vergleichende Betrachtung von Verfahren zur Bildkompression. http: //monarch.qucosa.de/fileadmin/data/qucosa/documents/496/data/vortrag/ dth/pictures.html. [3] Wikipedia. http://www.wikipedia.org. [4] Ten Lectures on Wavelets. Society for Industrial and Applied Mathematics, 992. 2
:35 : DCT Wavelet Fraktal Abbildung : Vergleich zwischen Diskreter Kosinustransformation, Wavelets und Fraktaler Kompression. 3