Fachbereich Medieninformatik Hochschule Harz Run Length Coding und Variable Length Coding Referat Matthias Zittlau 11034 Abgabe: 15.01.2007
Inhaltsverzeichnis 1. RLC...1 2.1 Einführung...1 2.2 Prinzip...1 2.3 Effektivität...2 2.3 Anwendung...2 2. VLC...3 2.1 Einführung...3 2.2 Prinzip...3 2.3 Effektivität...4 2.3 Anwendung...4 3. Quellen 3.1 Literaturverzeichnis...5 3.2 Internetquellen...5 3.3 Bildquellen...5
1. RLC (Run Length Coding) - Lauflängenkodierung 1.1 Einführung: RLC zählt zu einem der einfachsten Verfahren Daten zu komprimieren und stellt nur geringe Anforderungen an die Hard- und Software. Dieses Verfahren komprimiert den einfachsten Typ einer Redundanz in einer Datei, die langen, sich wiederholenden Folgen von gleichen Zeichen, Läufe bzw. runs genannt. RLC existiert in verschiedenen Ausprägungen. Um das Prinzip des RLC zu verdeutlichen und einige Probleme aufzuzeigen, wird nachfolgend eine Beispiel-Zeichenfolge kodiert. 1.2 Prinzip: Das Grundprinzip des RLC: Durch das Ersetzen von mehreren gleichen, aufeinander folgenden Zeichen mit dem einzelnen Zeichen und der Angabe der Anzahl wird die anfallende Datenmenge reduziert, ohne das Informationsgehalt verloren geht. Beispiel-Zeichenfolge (Beispiel von [4]): AAABBBAACCCCAAADEEEF5AAA#BBBB 3ABBBAACCCCAAADEEEF5AAA#BBBB 3A3BAACCCCAAADEEEF5AAA#BBBB 3A3B2ACCCCAAADEEEF5AAA#BBBB 3A3B2A4CAAADEEEF5AAA#BBBB 3A3B2A4C3ADEEEF5AAA#BBBB 3A3B2A4C3A1DEEEF5AAA#BBBB Hier wird das erste Problem deutlich. Ein einzelnes Zeichen verlängert durch dieses Verfahren die Zeichenkette. Lösung: Einzelne Zeichen müssen ohne Angabe der Anzahl kodiert werden. 3A3B2A4C3ADEEEF5AAA#BBBB 3A3B2A4C3AD3EF5AAA#BBBB 3A3B2A4C3AD3EF5AAA#BBBB 3A3B2A4C3AD3EF5AAA#BBBB Ein weiteres Problem tritt auf falls, das Symbol, das in unserem Code die Zeichenanzahl beschreibt, selbst in der Zeichenkette vor kommt. Lösung: Vor jeder Angabe der Anzahl wird ein Escape Zeichen eingesetzt (als Escape Zeichen wird das am unwahrscheinlichsten bzw. seltenste auftretende Zeichen gewählt). #3A#3B#2A#4C#3AD#3EF#5AAA#BBBB #3A#3B#2A#4C#3AD#3EF#53A#BBBB #3A#3B#2A#4C#3AD#3EF53A#BBBB Das nächste Problem könnte auftreten, falls das Escape Zeichen selbst in der zu kodierenden Zeichenkette auftritt. Lösung: Ein Escape Zeichen wird zu 2 Escape Zeichen kodiert. #3A#3B#2A#4C#3AD#3EF53A##BBBB #3A#3B#2A#4C#3AD#3EF53A###4B Seite: 1
RLC Code: #3A#3B#2A#4C#3AD#3EF53A###4B Zusammengefasst ergibt sich folgendes Prinzip: Mehrere aufeinander folgende, gleiche Zeichen werden durch das einzelne Zeichen ersetzt und mit einer Angabe der Anzahl versehen, vor die ein Escape Zeichen eingefügt wird. Falls das Escape Zeichen in der Zeichenkette selbst vorkommt, wird es ebenfalls mit einen Escape Zeichen versehen und einzelne Zeichen werden unverändert übernommen. 1.3 Effektivität: Dieses Verfahren hat nur eine positive Auswirkung, wenn mindestens vier aufeinander folgende Zeichen auftreten. Bei einem bzw. drei aufeinander folgenden Zeichen entsteht keine Kompression. Eine Folge von 2 gleichen Zeichen bzw. ein Escape Zeichen bewirkt eine Verlängerung der Zeichenkette. 1.4 Anwendung: Zur Anwendung kommt RLC meist bei einfachen Grafi ken, die einen hohen Anteil von gleichfarbigen Flächen aufweisen. RLC ist unter anderem Bestandteil von BMP, TIFF und PCX-Unterformaten. In der MPEG-Kodierung wird RLC nach der DCT (Diskrete Cosinus Transformation) angewandt, um die ermittelten Koeffi zienten zu komprimieren. Seite: 2
2. VLC (Variable Length Coding) Kodierung mit variabler Länge 2.1 Einführung: Bei konventionellen Codes werden für alle Zeichen bzw. Symbole eine einheitliche Länge verwendet, unerheblich in welcher Häufi gkeit sie auftreten. Somit benötigen häufi g auftretende Zeichen dieselbe Codelänge, wie selten auftretende. Bei einer Kodierung mit variabler Länge wird die Häufi gkeit der zu kodierenden Zeichen berücksichtigt und ermöglicht so eine beträchtliche Platzeinsparung. Um dies zu verdeutlichen wird auch hier wieder eine Beispiel-Zeichenfolge mit dem Prinzip des VLC kodiert. 2.2 Prinzip: Das VLC Verfahren kodiert die Zeichen mit möglichst geringer Anzahl Bits, welche am häufi gsten vorkommen. Selten auftretende Zeichen werden mit mehr Bits kodiert. Beispiel-Zeichenfolge (Beispiel von [3]): ABRACADABRA Binärdarstellung mit Hilfe von fünf Bits würde folgende Kodierung ergeben: 0000100010100100000100011000010010000001000101001000001 00001 = A 00010 = B 10010 = R 00011 = C 00100 = D Es wird deutlich das alle Buchstaben die gleiche Anzahl Bits benötigen, unerheblich in welcher Häufi gkeit sie auftreten. Bei einem Code mit variabler Länge wird dem am häufi gsten verwendeten Buchstaben die kürzesten Bitfolgen zugewiesen. In unserm Beispiel würde idealer Weise A mit 0 kodiert, B mit 1, R mit 01, C mit 10 und D mit 11. ABRACADABRA kodiert mit unserem VLC Beispiel wäre dann: 010101001101010 VLC hat die Zeichenfolge in den möglichst kürzesten Code kodiert. Das Problem bei diesem Code ist aber das er nicht mehr eindeutig dekodiert werden kann, so kann 01 als AB aber auch als R interpretiert werden. Um dieses Problem zu beheben müssten Begrenzungszeichen nach jedem kodierten Zeichen eingefügt werden. 0#1#01#0#10#0#11#0#1#01#0 Dies verlängert den Code natürlich wieder erheblich, dennoch ist der Code kürzer als der oben dargestellte fünf Bit Binärcode. Die Problematik mit den Begrenzungszeichen kann nur umgangen werden wenn sichergestellt ist das kein Anfang eines Zeichencodes als selbstständiger Zeichencode verfügbar ist. Wenn wir dieses Kriterium beachten könnte A mit 11, B mit 00, C mit 010, D mit 10 und R mit 011 kodiert werden um die folgende Zeichenfolge nur noch eindeutig dekodieren zu können. 1100011110101110110001111 Mit Hilfe des folgenden Codebaumes können wir sehen das kein Anfang unserer Zeichencodes übereinstimmt und wir können garantieren, dass unser Code auch nur eindeutig dekodiert werden kann. Seite: 3
Abb.1 binärer Codebaum (nach [3]) Der Codebaum wird, wie folgt, gelesen. Man beginnt an der Wurzel (es wird nur abwärts gelesen), jeder Schritt nach links steht für die 0 jeder Schritt nach rechts für die 1. Hat man einen Endpunkt erreicht beginnt man erneut bei der Wurzel. 2.3 Effektivität: Ein Code mit variabler Länge ist am effi zientesten wenn keine Trennungszeichen benötigt werden und wenn es ein präfi xfreier Code ist (Präfi x = Vorsilbe). 2.4 Anwendung: Codes mit variabler Länge sind zum Beispiel die arithmetische Kodierung, die Huffman-Kodierung oder die Shannon- Fano-Kodierung. Mit Hilfe einer VLC-Kodierung wird bei der MPEG-Kodierung nach dem RLC nochmal eine Datenkomprimierung erreicht.
3. Quellen 3.1 Literaturverzeichnis: [1] Bruns, Prof. Dr. Kai 2005: Taschenbuch der Medieninformatik: Carl Hanser Verlag Münschen Wien [2] Strutz, Tilo 2002: Bilddatenkompression: Friedr. Vieweg & Sohn Verlagsgesellschaft mbh, Braunschweig/Wiesbaden 3.2 Internetquellen: [3] www.informatik.uni-leipzig.de/lehre/heyer0001/ad2-vorl11.ppt (10.01.07) [4] www.gloegl.de/fi les/datenkomp.ppt (27.11.06) 3.3 Bildquellen: Seite 4 Abb.1 binärer Codebaum (nach [3]) Seite: 5