Komprimierungen von Multimediadaten Version: Datum: 1.0 2005-02-17 Otto Liebminger Jahrgang 7/8ABELT Schuljahr 2004/2005 Datenkompressionen Inhaltsverzeichnis 1 Abstract ______________________________________________ 3 2 Einleitung ____________________________________________ 3 3 Datenkompressions-Technologien _______________________ 4 3.1 Ausrichtung auf den Inhalt _______________________________________ 4 3.2 Datenkompressionen ___________________________________________ 4 3.2.1 Datenkompressionsrate ___________________________________ 5 3.2.2 Vorgegebene Transferraten ________________________________ 5 3.3 Kodierung, Enkodierung, Dekodierung _____________________________ 6 3.4 Basistechniken _______________________________________________ 6 3.4.1 Run-Length Encoding ( RLE ) _______________________________ 8 3.4.2 Lempel-Ziv-Kodierungen (LZ) ______________________________ 11 3.4.3 Huffman-Kodierung ______________________________________ 14 3.4.4 arithmetische Kodierung __________________________________ 18 3.4.5 Shannon-Fano-Kodierung _________________________________ 23 3.5 Übersichten _________________________________________________ 25 4 Methoden der Grafikkodierung __________________________ 28 4.1 Es gibt zwei grundsätzliche Arten von Graphiken: ____________________ 28 4.1.1 Rastergraphik __________________________________________ 28 4.1.2 Vektorgraphik __________________________________________ 30 5 JPEG – Graphikformat für Einzelbilder ___________________ 31 5.1 Eigenschaften von JPEG _______________________________________ 31 5.2 Einsatzbereiche ______________________________________________ 32 5.3 Kodierungschritte _____________________________________________ 32 5.3.1 Bildaufbereitung (Farbkonversion und Sampling) _______________ 33 5.3.2 Transformation (DCT: Diskrete Kosinustransformation) __________ 35 5.3.3 Quantisierung(Gewichtung der Inhalte) _______________________ 37 5.3.4 Entropiekodierung (Huffman-Kodierung) ______________________ 38 5.4 JPEG2000 __________________________________________________ 39 6 MPEG – Datenformat für Videosignale ____________________ 40 6.1 MPEG - Übersicht ____________________________________________ 6.2 MPEG - Formate _____________________________________________ 6.3 Aufbau vom MPEG ___________________________________________ 6.3.1 Es gibt 3 Arten von Bildern ________________________________ 6.3.2 Aufgaben und Eigenschaften der unterschiedlichen Frame-Typen __ 6.4 MPEG-1 ____________________________________________________ 6.5 MPEG-2 ____________________________________________________ 6.6 MPEG-4 ____________________________________________________ 40 40 41 43 44 45 46 47 7 Literaturverzeichnis ___________________________________ 48 Otto Liebminger 14.05.2016 Seite 2 von 49 Datenkompressionen 1 Abstract For this paper an insight shall be given into JPEG and MPEG, the two compression procedures. The introduction shows a rough summary of the human vision. In my opinion this is necessary to understand the following compression procedures. The JPEG procedure is described in detail since it also represents the basis for the following MPEG procedure. In addition, some basic principles like resolution, color depth as well as vector and grid graphics are described. I tried to find pictures matching all topics since these contribute to a better understanding as experience has shown. Concerning MPEG, there is mainly explained the basic concept. The disadvantages of MPEG 1 as well as the improvements in the MPEG 2 standard are shown. The new MPEG 4 standard is, however, mentioned only briefly since it represents a completely new form of multimedia coding. 2 Einleitung Die Entwicklung von Kompressionsverfahren reicht bis zum Erscheinen der ersten frei programmierbaren Computer zurück. Stets sind die verfügbaren Resourcen, wie Speicherplatz oder Datenübertragungswege, beschränkt gewesen bzw. erforderten entsprechende Investitionen. Dieser Umstand hat sich bis zum heutigen Tage erhalten und durch den Einsatz von immer aufwendigeren Inhalten noch weiter verstärkt. Nahezu alle multimedialen Daten, wie z.B. Bild- oder Videodaten, werden heutzutage in komprimierter Form verwendet. Begünstigt wird diese Entwicklung durch die steigende Leistungsfähigkeit der erhältlichen Hardware. Mittlerweile steht eine Vielzahl von Verfahren zur Verfügung; entwickelt mit dem Ziel, die stark voneinander abweichenden Anforderungen zu erfüllen. Die Auswahl von geeigneten Verfahren stellt einen Kompromiss dar, der sich widersprechenden Eigenschaften in Einklang zu bringen sucht. Die verschiedenen medienspezifischen Komprimierungsverfahren sind ein wesentlicher Faktor für die digitale Speicherung, Verarbeitung und Übertragung von medialen Daten und ihre integrierte Verwendung in multimedialen Systemen. Die große Bandbreite existierender Verfahren erlaubt den gezielten Einsatz für einen gegeben Anwendungsfall. Otto Liebminger 14.05.2016 Seite 3 von 49 Datenkompressionen 3 Datenkompressions-Technologien 3.1 Ausrichtung auf den Inhalt Sofern vor dem Einsatz eines Systems zur Datenkompression bekannt ist, welchen Typs der zu bearbeitende Inhalt ist, kann ein entsprechend geeignetes Verfahren eingesetzt werden. Damit lassen sich spezifische Gegebenheiten ausnutzen, die nur bei den betreffenden Inhalten auftreten. Nachstehend sind exemplarisch Beispiele aufgeführt, die in der Praxis Verwendung finden: Text Die Buchstaben des Alphabets treten in Texten mit unterschiedlicher Häufigkeit auf. Stellt man Buchstaben mit besonders hoher Auftrittswahrscheinlichkeit durch kurze Zeichen dar, so wird eine Reduktion des Datenvolumens erreicht. Bilder Die Bereiche eines Bildes unterscheiden sich hinsichtlich der Komplexität der dargestellten Inhalte. Insbesondere bei einfarbigen Flächen oder gleichmäßigen Mustern ist diese besonders gering. Derartige Bereiche können mit erheblich weniger Aufwand dargestellt werden, als Bereiche mit detaillierteren Bildinhalten. Audio Audiodaten variieren ebenfalls hinsichtlich ihrer Komplexität. Wenn sie lediglich einen gleich bleibenden Ton repräsentieren, benötigt man für die Kodierung ein sehr viel geringeres Datenvolumen, als bei einer komplexen und vielschichtigen Orchesteraufnahme. Video Der graphische Anteil von Videodaten besteht aus aufeinander folgenden Einzelbildern. Dabei ändern sich von Bild zu Bild nur ein bestimmter Anteil des Bildes, während der Rest unverändert bleibt. Bei einem Sprecher, der im Studio vor einem unveränderten Hintergrund sitzt, brauchen lediglich die sich ändernden Bereich im Gesicht übertragen zu werden. Für alle anderen Bereiche ist die einmalige Übertragung ausreichend, bis ein Umschnitt erfolgt. 3.2 Datenkompressionen In der Informationstheorie unterscheidet man zwischen zwei Arten von Datenkompression: Bei der ersten Art handelt es sich um die sogenannte verlustlose Datenkompression. Die verlustlose Datenkompression wandelt eine Eingangsdatei in eine komprimierte Datei um, welche in der Regel kleiner als die Eingangsdatei ist. Aus der komprimierten Datei wird mit Hilfe der Dekompression – auch Datenexpansion genannt – eine dekomprimierte Datei erstellt. Die dekomprimierte Datei entspricht hierbei exakt der ursprünglichen Eingangsdatei. Bei der zweiten Art von Datenkompression handelt es sich um die sogenannte verlustbehaftete Datenkompression. Bei dieser Art wird ebenfalls eine Eingangsdatei in eine komprimierte Datei transformiert. Bei der Dekompression kann sich jedoch die dekomprimierte Datei von der ursprünglichen Eingangsdatei unterscheiden und mehr oder weniger große Abweichungen aufweisen. Otto Liebminger 14.05.2016 Seite 4 von 49 Datenkompressionen Der Vorteil der Verlustbehafteten gegenüber der verlustlosen Datenkompression liegt in den deutlich besseren Kompressionsraten. Einsatz findet die verlustbehaftete Datenkompression vorwiegend bei digitalisierten Analogsignalen im Bereich von Audiound Videobearbeitung. Zum einen haben digitalisierte Analogsignale aufgrund ihrer Entstehung bereits einen Digitalisierungsfehler; zum anderen empfindet der Mensch zwei digitalisierte Audio- oder Videoaufnahmen als gleich, sofern deren Abweichungen klein genug sind. Die verlustfreie Datenkompression ist im Gegensatz hierzu universell einsetzbar, da die Datenintegrität erhalten bleibt, was in vielen Einsatzbereichen wichtig ist, wie beispielsweise im Finanzwesen oder im wissenschaftlichen Bereich. 3.2.1 Datenkompressionsrate Als Datenkompressionsrate bezeichnet man bei beiden Arten das Verhältnis der Größe der Ausgangsdatei zu der Größe der Eingangsdatei. Die beiden wichtigsten Ziele der Datenkompression sind hierbei die Minimierung der Datenkompressionsrate sowie die Maximierung der Verarbeitungsgeschwindigkeit bei der Kompression und Dekompression. Sofern es der Datentyp erlaubt, wie z.B. bei Bild- oder Audio-Daten, kann die Kompressionsrate so variiert werden, dass die komprimierte Datei einen bestimmten Umfang nicht überschreitet. Dabei muss ein entsprechender Qualitätsverlust in Kauf genommen werden, der mit steigender Kompressionsrate in der Regel expotentiell ansteigt. Darüber hinaus bietet aber auch die Auswahl des Verfahrens bzw. der eingesetzte Kodierungsaufwand die Möglichkeit das Datenvolumen zu beeinflussen. So ergeben photorealistische Bilder im jpg-Format bei gleicher Bildqualität wesentlich kleinere Dateien, als Bitmapformate mit einfacheren Algorithmen. Noch wesentlich bessere Ergebnisse lassen sich mit FIF (Fractal Image Format) der Firma Iterated Systems erreichen. Im Gegenzug steigt allerdings der Kodierungsaufwand teilweise massiv an. 3.2.2 Vorgegebene Transferraten Zur Übertragung von Videodaten über unterschiedliche Medien, wie z.B. Funk, Kabel oder Datenträger, steht normalerweise nur eine bestimmte Übertragungsrate zur Verfügung, die wesentlich kleiner ist als die unkomprimierten Originaldaten. Um dennoch eine akzeptable Qualität zu erhalten, muss das Kompressionsverfahren an diese Gegebenheiten angepasst werden. Dabei können Verfahren zum Einsatz kommen, die mit konstanter Datenübertragungsrate arbeiten (z.B. MPEG-1 Full Motion Video mit 150 KByte/s). Bei aufwendigeren Verfahren, wie der mpeg-2-Kodierung für DVD-Video, sind in einem vordefinierten Rahmen Schwankungen zugelassen. Es ist ein Mittelwert (z.B. 4 MBit/s) festgelegt, der im Fall besonders komplexer Inhalte bis auf einen zulässigen Maximalwert (z.B. 10 MBit/s) ansteigen kann. Darüber hinaus legt die Spezifikation fest, wie lange die Abweichung über den Mittelwert hinaus andauern kann, damit die Hardware dafür ausgelegt werden kann. Otto Liebminger 14.05.2016 Seite 5 von 49 Datenkompressionen 3.3 Kodierung, Enkodierung, Dekodierung Mit dem Begriff Kodierung wird allgemein die Umsetzung von Zeichen aus einem Zeichenvorrat in einen anderen bezeichnet. Dabei findet eine entsprechende Kodierungsvorschrift bzw. ein Kode Anwendung. Betrachtet man die Verarbeitungsschritte von bestimmten Ausgangsdaten, so läst sich zwischen Enkodierung und Dekodierung differenzieren. Die Enkodierung bezieht sich auf die Kodierung der Ausgangsdaten in ein bestimmtes Zielformat, z.B. die Erstellung einer JPEG-Datei aus einem Bitmap-Format heraus. Die Dekodierung bezeichnet den umgekehrten Prozess aus diesem Format heraus; im Beispiel die Umwandlung der JPEG-Daten zurück in ein geeignetes Format. En- und Dekodierung beziehen sich dabei immer auf einen gemeinsamen Nenner, in diesem Fall das JPEG-Format. Bei verlustloser Datenkompression sind die Inhalte nach En- und Dekodierung wieder identisch mit den Originalinhalten, die Kodierung ist reversibel. Bei anderen Verfahren ist dies nicht der Fall. So können beispielsweise in GIF lediglich 256 unterschiedliche Farben kodiert werden. Alle darüber hinausgehenden Farbinformationen verfallen im Zuge der Kodierung. 3.4 Basistechniken Bislang haben zumeist sequentielle Verfahren den Bereich der verlustlosen Datenkompression dominiert, unterteilt in referenzierende Verfahren, basierend auf Wiederholungen, sowie statistische Verfahren, bestehend aus einem Kodierer und einem Datenmodell. Typische Vertreter der referenzierenden Verfahren sind die Lauflängenkodierung ( Run-Length Encoding - RLE )sowie Lempel-Ziv-Methoden ( LZ )[16]. Bei statistischen Verfahren gibt ein Datenmodell die Wahrscheinlichkeiten für das jeweils nächste Zeichen an, und ein Kodierer erzeugt eine möglichst kurze Bitfolge aus diesen Wahrscheinlichkeiten. Beispiele für statistische Verfahren sind die Huffman-Kodierung und die arithmetische Kodierung [23]. Im Jahre 1994 wurde ein neues Verfahren, welches nicht sequentiell sondern auf ganzen Blöcken arbeitet, von David Wheeler und Michael Burrows eingeführt [7]. Es handelt sich um den sogenannten Burrows-Wheeler-Kompressionsalgorithmus. Das Herz dieses Algorithmus stellt hierbei die Burrows-Wheeler-Transformation dar, welche auch als Blocksortierung bezeichnet wird. Der Algorithmus wurde inzwischen von vielen Autoren aufgegriffen und verbessert. Fenwick hat in seinem BWT-Forschungsbericht aus dem Jahre 1996[10] einige Verbesserungen beschrieben einschließlich der Sortierung von mehreren Zeichen gleichzeitig anstelle eines einzelnen. Zur Berechnung der Burrows-Wheeler-Transformation wurde im Jahre 1997 von Sadakane ein schnelles Verfahren mit Hilfe eines Suffixfeldes vorgestellt [19], Otto Liebminger 14.05.2016 Seite 6 von 49 Datenkompressionen welches im Jahre 1999 von Larsson erweitert worden ist [15]. Im Jahre 1998 präsentierte Kurtz für die Burrows-Wheeler-Transformation einige Implementierungen von Suffixbäumen, die weniger Speicher brauchen als bisherige Implementierungen und einen linearen Zeitaufwand besitzen [14]. Itoh und Tanka entwickelten 1999 ein neues Verfahren – das sogenannte "Two Stage Suffix Sort" - [12], welches von Kao im Rahmen einer Dissertation aufgegriffen und speziell für Folgen von sich wiederholenden Zeichen optimiert worden ist [13]. Auch die der Burrows-Wheeler-Transformation nachgeordneten Stufen sind Gegenstand zahlreicher Untersuchungen gewesen. Hierzu zählen insbesondere die Erweiterungen von Arnavut and Magliveras aus dem Jahre 1997 [2], von Balkenhol und Shtarkov aus dem Jahre 1999 [4], von Deorowicz aus dem Jahre 2000 [8] und 2002 [9] sowie von Abel aus dem Jahre 2003 [1]. DER BURROWS-WHEELER-DATENKOMPRESSIONSALGORITHMUS Der Aufbau des Algorithmus Grundsätzlich besteht ein Burrows-Wheeler-Kompressionsalgorithmus aus drei Stufen, denen gegebenenfalls noch weitere Vorverarbeitungsstufen vorgeschaltet sein können. Bei den drei Stufen, welche in Abbildung 1 dargestellt sind, handelt es sich um einzelne Transformationen, die nacheinander durchlaufen werden. Hierbei werden die Daten in Form eines eindimensionalen Feldes - Block genannt - verarbeitet und der Block anschließend an die nächste Stufe weitergegeben. Die Blockgröße liegt im Bereich von einem oder mehreren Megabyte, wobei größere Blockgrößen in der Regel eine bessere Kompression nach sich ziehen, aber neben höherem Speicherbedarf auch eine höhere Verarbeitungsgeschwindigkeit zur Folge haben. Um die komprimierten Daten wieder zu dekomprimieren, werden die Stufen in rückwärtiger Reihenfolge durchlaufen, wobei die einzelnen Transformationen durch die entsprechenden Rücktransformationen ersetzt werden. Die erste Stufe des Algorithmus ist die Burrows-Wheeler-Transformation (BWT). Die BWT ist eine Permutation der Eingabezeichen. Die Häufigkeiten der einzelnen Zeichen werden nicht geändert. Es findet durch die BWT daher keine Kompression statt, diese erfolgt erst in späteren Stufen. Aufgabe der BWT ist es, Zeichen mit ähnlichem Kontext nahe beieinander anzuordnen, wodurch die nachfolgenden Stufen die Daten besser verarbeiten können. Die zweite Stufe des Algorithmus bildet die sogenannte Global-Structure-Transformation (GST) [1]. In dieser Stufe werden die lokalen Kontexte der BWT-Ausgabe in einen globalen Kontext überführt. Für die GST existieren eine ganze Reihe von unterschiedlichen Verfahren. Meistens wird dabei jedes Zeichen aus der BWT-Ausgabe in einen Index transformiert, wobei häufig vorkommende Zeichen in kleine Indices umgewandelt werden. Die Entropiekodierung (EC) bildet die letzte Stufe des Algorithmus und hat die Aufgabe, die Folge der Indices der GST in eine möglichst kurze Bitfolge umzuwandeln. In dieser Stufe findet die eigentliche Kompression der Daten statt, die anderen Stufen hatten die Aufgabe, die Daten so vorzubereiten, dass sie möglichst gut komprimiert werden können. Je nach Implementierung können hierzu sowohl Huffmankodierungen [7][20] als auch arithmetische Kodierungen [3][8][10] eingesetzt werden. Huffmankodierungen bieten den Vorteil einer höheren Verarbeitungsgeschwindigkeit, haben jedoch eine deutlich schlechtere Kompressionsrate. In dem vorliegenden Kompressionsschema wird daher der arithmetischen Kodierung mit einem adaptiven Modell der Vorzug gegeben. Die arithmetische Kodierung stellt die Eingabedaten als eine einzige rationale Zahl dar, dargestellt aus einer Folge von binären Nachkommastellen. Zur Erzeugung der Nachkommastellen dienen die Wahrscheinlichkeiten des adaptiven Modells. Otto Liebminger 14.05.2016 Seite 7 von 49 Datenkompressionen Abbildung 1: Schema des Burrows-Wheeler-Kompressionsalgorithmus 3.4.1 Run-Length Encoding ( RLE ) Lauflängenkodierungen gehören zu den ältesten und einfachsten Kompressionstechniken. Die Grundidee besteht in einer sequentiellen Durchsuchung der Eingabedaten nach Folgen gleicher Zeichen und dem Ersetzen dieser Folgen durch eine kürzere Folge und eine Lauflängeninformation. Da die BWT aufgrund Ihrer Sortierung eine große Anzahl von Folgen gleicher Zeichen erzeugt, kann eine RLE im Anschluss an die BWT sinnvoll eingesetzt werden. In dem hier vorgestellten Kompressionsschema dient die RLE als Unterstützung der folgenden Weighted-Frequency-Count-Stufe (WFC) [9], da sie zwei Vorteile bietet. Zum einen führt die Verkürzung der Folgen zu einer besser zu komprimierenden Indexfolge innerhalb der WFC. Zum anderen ist eine RLE wesentlich schneller als eine WFC, und trägt damit insgesamt zu einer höheren Verarbeitungsgeschwindigkeit bei [1]. Für die RLE existieren viele unterschiedliche Techniken, welche sich in der Länge der zu ersetzenden Folgen sowie in der Art und Weise unterscheiden, wie die Lauflängen kodiert werden. Im vorliegenden Fall wurde eine Technik gewählt, welche eine Folge gleicher Zeichen, die eine Länge von mehr als einem Zeichen besitzt, durch eine Folge ersetzt, deren Länge dem binären Logarithmus der ursprünglichen Länge plus Eins entspricht. Die restlichen Lauflängeninformationen werden nicht - wie bei den meisten RLE-Techniken - als Zahl hinter die verkürzte Folge geschrieben. Stattdessen werden sie als Bitfolge in einen separaten Datenstrom umgeleitet, der direkt zur Entropiekodierung (EC) geführt wird, wie in Abbildung 2 ersichtlich ist. Abbildung 2: Schema der erweiterten Variante des Burrows-Wheeler-Kompressionsalgorithmus Dadurch behindern die Lauflängeninformationen nicht die Indexbildung der WFC. In früheren Burrows-Wheeler-Kompressionsalgorithmen wurde die RLE nicht direkt nach der BWT sondern erst vor der EC eingesetzt. Hier wurde eine Technik benutzt, die speziell auf Folgen von Nullen (RLE0) abgestimmt war. Dieses Verfahren geht auf Wheeler zurück und wurde von Fenwick in seinem BWT-Forschungsbericht beschrieben [10]. Der Einsatz direkt hinter der BWT geht auf eine Idee von Gringeler zurück und wurde von Abel im Jahre 2003 erstmals erwähnt [1]. Es stellt aus den oben genannten Gründen die bessere Alternative dar. Otto Liebminger 14.05.2016 Seite 8 von 49 Datenkompressionen In Abbildung 3 ist ein Beispiel aufgeführt, bei welchem die Ausgabedaten jeder Stufe für die Eingabedaten ABRAKADABRAABRAKADABRAABRAKADABRA (a) aufgeführt sind. Wie man sehen kann, befinden sich in den Ausgabedaten der BWT (b) eine Anzahl von Folgen gleicher Zeichen. Dies ist eine charakteristische Eigenschaft der BWT. Die Folgen gleicher Zeichen werden mit Hilfe der Lauflängenkodierung der RLE auf eine kleinere Länge reduziert (c). Die Daten werden anschließend von der WFC in eine Indexfolge mit kleinen Indices umgewandelt (d). Zuletzt erfolgt die Umwandlung der Indexfolge in eine kurze Bitfolge mit Hilfe der Entropiekodierung (e). Für die BWT-Eingangsdaten ABRAKADABRAABRAKADABRAABRAKADABRA ist in Abbildung 3 (c) die Ausgabe der RLE aufgeführt. Abbildung 3: Transformierte Daten nach jeder Stufe der erweiterten Variante für die Eingabe ABRAKADABRAABRAKADABRAABRAKADABRA in hexadezimal MS-Windows .bmp RLE4 Die RLE4-Kodierung bezieht sich auf exakt das gleiche Schema, wie die RLE8Kodierung. Der einzige Unterschied besteht in der Kodierung der Farbindizes, die mit 4 Bit in einem Wertebereich von 0 bis 15 (16 Farben) dargestellt werden. Abbildung 4: Kodierungsschema RLE4 Otto Liebminger 14.05.2016 Seite 9 von 49 Datenkompressionen Innerhalb eines Runs werden immer zwei Farbindizes zusammengefasst und in einem Byte gespeichert. Sollen Wiederholungen eines Indizes kodiert werden, so müssen jeweils die niederwertigen und den höherwertigen 4 Bit des Bytes die gleichen Inhalte enthalten. Der Zähler bezieht sich dabei auf das Pixel und nicht auf das nachfolgende Byte. enkodiert 01 0F 02 0F 03 0F 04 0F 04 00 dekodiert 0 0 F 0 F 0 0 F 0 F 0 0 0 0 Wie bei der RLE8-Kodierung auch, müssen im absoluten Mode die Kodierungen ggfls. an der Wortgrenze aufgefüllt werden: enkodiert 00 03 12 00 04 12 00 05 12 00 06 12 00 07 12 00 08 12 30 34 34 34 34 34 50 56 56 56 00 00 70 78 dekodiert 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 MS-Windows .bmp RLE8 Das RLE8-Kompressionsverfahren ist ausschließlich für Bitmap-Graphiken vorgesehen, die auf Farbtabellen mit einer Farbtiefe von 8 Bit bzw. 256 Farben beruhen. Die Kodierung erfolgt entsprechend dem nachstehenden Schema: Abbildung 5: Kodierungsschema RLE8 Otto Liebminger 14.05.2016 Seite 10 von 49 Datenkompressionen Microsoft unterscheidet zwischen dem "Encoded Mode", der RL-kodierte Sequenzen enthält und dem "Absolute Mode", der unkodierte Originaldaten beinhaltet. Darüber hinaus sind drei Marker vorgesehen. 3.4.2 Lempel-Ziv-Kodierungen (LZ) Auf den grundlegenden Arbeiten von Abraham Lempel und Jacob Ziv beruht eine Vielzahl von Kodierungsverfahren, die allgemein als LZ-Verfahren bezeichnet werden. Ausgehend von den ursprünglichen Kodierungsverfahren LZ77 und LZ78 ist im Laufe der Zeit eine Vielzahl von Derivaten entstanden. Zur Bezeichnung dieser Verfahren sind die Anfangsbuchstaben der Personen verwendet worden, die die entsprechenden Erweiterungen vorgestellt haben (z.B. Terry Welch -> LZW). Lempel-Ziv-77 (LZ77) Entwicklung: Jacob Ziv und Abraham Lempel haben 1977 in der Publikation "A Universal Algorithme for Sequential Data Compression" ein einfaches, aber effizientes Verfahren zur Kompression von beliebigen Inhalten vorgestellt. Nach seinen Erfindern und dem Veröffentlichungsdatum ist dieser Algorithmus unter dem Kürzel LZ77 bekannt. Prinzip: LZ77 ist ein wörterbuchbasierendes Verfahren, dass anstelle der Originaldaten, Rückgriffe auf Sequenzen aus dem bisherigen Inhalt kodiert. Im Prinzip existiert nur eine einfache Kodierungsvorschrift. Alle Daten werden in der Form Adresse der bereits enthaltenen Sequenz, deren Sequenzlänge und das erste abweichende Zeichen kodiert. Sind die zu kodierenden Daten noch nicht in den vorangegangenen Daten enthalten, tritt also ein neues Zeichen auf, so wird die Adresse 0, die Sequenzlänge 0 und das betroffene Zeichen kodiert. Beispiel "abrakadabra": abrakadabra a brakadabra ab rakadabra abr akadabra abrak adabra abrakad abra Otto Liebminger Adr. 0 0 0 3 2 7 Länge 0 0 0 1 1 4 abw. Zeichen 'a' 'b' 'r' 'k' 'd' '' 14.05.2016 Seite 11 von 49 Datenkompressionen Bedingt durch die Ergänzung jeder Sequenz mit dem ersten abweichenden Zeichen erhöht sich der Werteumfang der kodierbaren Zeichen, ohne von dem standardisierten Format abzuweichen. Das ermöglicht eine einfache Umsetzung des Algorithmus mit minimalen Anforderungen an die Resourcen von Enkoder und Dekoder. Rahmenbedingungen: Damit Rechenzeit und Speicherbedarf für Enkoder und Dekoder in einem überschaubaren Rahmen gehalten werden können, ist die Adresse durch einen Maximalwert begrenzt. Über diesen Bereich hinausgehende Übereinstimmungen fließen nicht in die Kodierung ein und finden bei der Dimensionierung der Adressgrößen keine Berücksichtigung. Kodierungseffizienz: Bei einem linearem Wertebereich für Adresse und Sequenzlängen von 10 Zeichen und einem Zeichenvorrat von 5 Zeichen sind zur Darstellung einer Kodierung in dem vorangehenden Beispiel 11 Bit erforderlich (4+4+3Bit). Insgesamt läst sich der Beispielstext mit 66 Bit kodierten, im Vergleich zu 33 Bit bei unkodierter Darstellung (11 Zeichen a 3 Bit). Das liegt in dem nahezu leeren Wörterbuch begründet, signifikante Gewinne lassen sich mit LZ77-Kodierung erst bei größeren Datenmengen erzielen. Lempel-Ziv-Storer-Szymanski (LZSS) Das LZSS- Kodierungsverfahren ist nach den beiden Autoren James A. Storer und Thomas G. Szymanski, sowie dem LZ77-Verfahren benannt, auf dem LZSS aufsetzt. Veröffentlicht wurden theoretische und praktischen Überlegungen 1982 in dem Artikel "Data Compression via Textual Substitution". LZSS kodiert die Quelldaten als String, bestehend aus den Originaldaten und Zeigern auf ein Wörterbuch. Das Wörterbuch bilden wie bei der LZ77-Kodierung die bereits kodierten Quelldaten, auf die in der Form (Adresse + Sequenzlänge) zugegriffen wird. Beispiel: abrakadabra abrakad(1,4) Als Zeiger werden nur Sequenzen kodiert, die eine bestimmte Minimallänge überschreiten, d.h. bei der die Substitution sinnvoll ist. Darin besteht der hauptsächliche Unterschied zu LZ77, bei dem immer in der Form (Adresse + Länge + abweichendes Zeichen) kodiert werden muss, auch wenn dies mit Hinblick auf die Kompressionsleistung nicht sinnvoll ist. Zur Differenzierung zwischen Zeigern und Inhalten ist in der praktischen Umsetzung ein Flag oder Steuerzeichen erforderlich, dass seinerseits die Kompressionsleistung negativ beeinflusst. Zur Optimierung des Laufzeitverhaltens werden in der Regel binäre Suchbäume eingesetzt, die den kodierbaren Inhalt aufnehmen und eine zeitaufwendige lineare Suche ersparen. Otto Liebminger 14.05.2016 Seite 12 von 49 Datenkompressionen Lempel-Ziv-78 (LZ78) Ein Jahr nach der Veröffentlichung von LZ77 haben Jacob Ziv und Abraham Lempel ein weiteres Kodierungsverfahren vorgestellt ("Compression of Individual Sequences via Variable-Rate Coding"). Dementsprechend bezeichnet man das Verfahren als LZ78. Prinzip: Basis für LZ78 ist ein explizit geführtes Wörterbuch, das zur Laufzeit, sowohl während der Enkodierung als auch während der Dekodierung, aufgebaut wird. In dieses Wörterbuch werden alle bereits kodierten Zeichenketten eingetragen. Kodiert wird der Inhalt in der Form: Index auf den Eintrag im Wörterbuch erstes abweichendes Zeichen Im Gegensatz zu LZ77 wird hier keine Kombination aus Adresse und Länge der Zeichenkette, sondern lediglich der Index auf eine Tabelle gespeichert. Die Architektur mit dem ersten Zeichen, für das keine Übereinstimmung im Wörterbuch gefunden wurde, bleibt erhalten. Beispiel "abrakadabra": abrakadabra a brakadabra ab rakadabra abr akadabra abrak adabra abrakad abra abrakadab ra Index 0 0 0 1 1 1 3 abweichendes Zeichen 'a' 'b' 'r' 'k' 'd' 'b' 'a' neuer Eintrag Wörterbuch 1 "a" 2 "b" 3 "r" 4 "ak" 5 "ad" 6 "ab" 7 "ra" Der Aufbau des Wörterbuchs vollzieht sich verhältnismäßig langsam, relevante Kompressionsleistungen werden erst bei größeren Datenmengen erreicht. Darüber hinaus ist die Kompressionsleistung unmittelbar von der Größe des Wörterbuchs abhängig. Allerdings steigt damit der Aufwand für die Administration, die zur Laufzeit aufgeführt werden muss. Für die praktische Implementation wird das Wörterbuch in einer Baumstruktur ausgeführt, um den Aufwand für das Durchsuchen der Einträge zu minimieren. Beginnend mit dem aktuellen Zeichen durchläuft der Algorithmus den Baum bis zum Erreichen eines Endknotens. Der Index, der dem betroffenen Knoten zugeordnet ist, wird dann ausgegeben. Weil dekoderseitig keine Suchfunktion erforderlich ist, läst sich der Dekoder mit einer indizierten Tabelle realisieren. Im Zuge der Kodierung wächst das Wörterbuch immer weiter an, so dass die Adresslänge für die Indizierung, der Speicherplatz- und der Laufzeitbedarf permanent zunimmt. Deshalb muss eine Begrenzung des Wörterbuchs erfolgen. Ist dieses gefüllt, so sind Mechanismen zur Aktualisierung erforderlich. Auf LZ78 setzen verschiedene Verfahren auf, u.a. auch das weit verbreitete LZWVerfahren. Otto Liebminger 14.05.2016 Seite 13 von 49 Datenkompressionen Lempel-Ziv-Welch (LZW) Das LZW-Kodierungsverfahren stellt eine Abwandlung der von Jacob Ziv und Abraham Lempel vorgestellten Kompressionsmethode LZ78 dar. Publiziert wurde das Verfahren 1984 von Terry A. Welch in dem Artikel "A Technique for High-Performance Data Compression". LZW ist wesentlicher Bestandteil von mehreren Datenformaten, die von großer praktischer Bedeutung sind. So setzen z.B. die Graphikformate gif, tif (optional) und Postscript (optional) LZW zur verlustlosen Datenkompression ein. Prinzip: LZW entwickelt während der Kodierung ein Wörterbuch, das die bereits kodierten Zeichen aufnimmt. In den kodierten Daten sind lediglich die Indizes der Einträge in diesem Wörterbuch enthalten. Die ersten 256 Einträge werden mit den einzelnen Zeichen vorbesetzt. Alle nachfolgenden Einträge repräsentieren längere Zeichenketten. Der von Terry A. Welch vorgestellte Algorithmus definiert den Aufbau des Wörterbuchs und beinhaltet Mechanismen, die sicherstellen, dass die Wörterbücher sowohl bei der Enkodierung als auch bei der Dekodierung identisch sind. 3.4.3 Huffman-Kodierung Als letzter Schritt der Komprimierung erfolgt beim Layer III eine Huffman-Kodierung. Dieser Algorithmus kommt beispielsweise auch bei Packprogrammen wie ZIP zum Einsatz. Bei Huffman ist die Häufigkeit bestimmter Werte entscheidend. Häufig auftauchende Werte erhalten eine kurze Bitfolge, selten auftretende Werte hingegen eine Lange. Daher ermittelt der Algorithmus zunächst die Verteilung der Werte innerhalb der zu komprimierenden Daten. Der Nachteil der Huffman-Kodierung ist, dass eine Statistik der Daten vorliegen muss, was beispielsweise bei sich dynamisch ändernden Daten oder dynamisch erzeugten Daten (wie Bildern oder Video) in der Regel nicht der Fall ist. Außerdem kann dieses Verfahren sehr viel Overhead erzeugen, beispielsweise wenn Zeichenkombinationen (qu) betrachtet werden, da dann die Tabellen sehr groß werden. Daher wird eine adaptive Huffman-Kodierung verwendet, bei der sich der Codebaum während des Durchlaufs durch die Daten aufbaut und sogar verändert werden kann, was gegebenenfalls bedeutet, dass gleiche Daten verschieden kodiert werden können, weil sich zwischenzeitlich der Codebaum verändert hat. Die Idee ist, dass bei Kodierung und Dekodierung jeweils der gleiche Codebaumgenerator verwendet wird. Bei der adaptiven Huffman-Kodierung werden jeweils zwei Zeichen, die noch nicht vorhanden sind, zusammengefasst und ihre Zähler verändert; ist ein Zeichen bereits im Codebaum vorhanden, so wird nur sein Zähler inkrementiert. Wird der Zählerwert größer als ein bereits vorhandener Wert, so wird dieser Knoten mit dem größten Knoten mit dem Zählerwert Z vertauscht. Auf diese Weise wandert ein in einem gewissen Kontext häufiger auftretendes Zeichen immer höher im Codebaum und wird somit mit immer kürzerer Bitfolge kodiert. Dieses Konzept wird bei verschiedenen adaptiven Techniken angewendet. Otto Liebminger 14.05.2016 Seite 14 von 49 Datenkompressionen Die einfache Huffman-Kodierung stellt eine algorithmische Umsetzung der informationstheoretischen Regel dar, möglichst gleichwahrscheinliche Teilmengen der zu kodierenden Werte zu verwenden, um eine (sub-) optimale Kodierung zu erhalten. Sie erzeugt einen binären Baum, dessen Blätter den Zeichen entsprechen, und der zu jedem Knoten zwei Nachfolger (0, 1) besitzt. Eine Kodierung verwendet jeweils ein entsprechendes Anfangsstück. Um einen sogenannten Huffman-Baum zu ermitteln, beginnt man mit den beiden seltensten Werten. Ihnen wird eine "0" beziehungsweise eine "1" zugewiesen. Es erfolgt eine Zusammenfassung der beiden Werte, in der Reihenfolge sind sie nun durch die Summe ihrer Häufigkeit repräsentiert. Das gleiche geschieht mit den nächsten beiden seltensten Werten. Dieser Vorgang ist beendet, wenn nur noch ein Wert übrig ist. Das Ergebnis dieser Vorgehensweise ist eine Baumstruktur. Anhand dieser Struktur erfolgt die Kodierung. Jede Verzweigung nach links erhält eine 0, jede Rechtsverzweigung ist durch eine "1" gekennzeichnet. In unserem kleinen Beispiel wäre der weniger häufige Wert 4 durch die Bitfolge 010 repräsentiert. Der häufigste Wert 6 bekommt dagegen eine schlichte 1 zugeordnet. Abbildung 6: Eine lange Bitfolge kennzeichnet einen selten auftretenden Wert, häufige Werte sind durch eine kurze Bitfolge dargestellt. Noch ein Beispiel zum Algorithmus einer Huffman-Kodierung: 1. Initialisierung: Alle Zeichen werden Knoten zugeordnet und nach ihrer Häufigkeit in einer Liste sortiert. 2. Solange die Liste der Knoten noch mehr als ein Element enthält: a.) b.) c.) Entnehme die beiden Elemente mit der geringsten Häufigkeit der Liste und erzeuge einen Elternknoten hierfür. Weise die Summe der Häufigkeiten der Kinder dem Elternknoten zu und füge diesen Knoten der Liste zu. Den Zeigern des Elternknoten wird der Code 0, 1 zugeordnet (Reihenfolge im Prinzip beliebig). Otto Liebminger 14.05.2016 Seite 15 von 49 Datenkompressionen Abbildung 7: Beispiel eines Hufman-Baums ( ALLER ANFANG IST SCHWER ) ALLER ANFANG IST SCHWER Anzahl der Bits für h*Code-Bits h/*log2(h/) Häufigkeit h -log2(h/) Code 3 2,93859946 111 3 0,38329558 9 A 3 2,93859946 110 3 0,38329558 9 E 2 3,52356196 101 3 0,30639669 6 L 2 3,52356196 1001 4 0,30639669 8 N 2 3,52356196 1000 4 0,30639669 8 R 2 3,52356196 011 3 0,30639669 6 S 2 3,52356196 0101 4 0,30639669 8 C 1 4,52356196 0100 4 0,19667661 4 F 1 4,52356196 0011 4 0,19667661 4 G 1 4,52356196 00101 5 0,19667661 5 H 1 4,52356196 00100 5 0,19667661 5 I 1 4,52356196 0001 4 0,19667661 4 T 1 4,52356196 00001 5 0,19667661 5 W 1 4,52356196 00000 5 0,19667661 5 = 23 56 3,67531087 86 Zeichen Kodierung Im obigen Beispiel werden 86 Bits zur Kodierung des Textes "ALLER ANFANG IST SCHWER" benutzt, während eine Kodierung der 14 verschiedenen Zeichen mit jeweils während die wahre Entropie in diesem Beispiel 86/23 = 3,739 ist, also nahe an der ideellen Entropie liegt. Otto Liebminger 14.05.2016 Seite 16 von 49 Datenkompressionen Grundsätzlich stellt sich die Frage, ob die Huffman-Kodierung jeweils eine bessere Kodierung ergibt als eine Kodierung mit Hilfe gleichlanger Wörter. Die Antwort ist überraschenderweise ja, solange die absolute Häufigkeit der einzelnen Zeichen bekannt ist. Man kann sich das etwa so plausibel machen, dass man von einem ausgeglichenen Baum ausgeht. Dieses entspricht der Kodierung von 2N Wörtern mit gleichlangen Wörtern. Habe jetzt das Zeichen i eine Häufigkeit hi, die größer ist als die Summe der Häufigkeiten zweier anderer Zeichen j und k: hi>hj+hk, so lässt sich das erste Zeichen mit N-1 Bits kodieren, es rückt im Baum eine Ebene nach oben, während sich die anderen mit jeweils N+1 Bits kodieren lassen; sie sacken eine Ebene tiefer. Die Kodierung wird sich für das Zeichen i um hi Bits verringern, während sie sich für die Zeichen j und k um hj+hk Bits vergrößern wird; der Gewinn beträgt also hi-hj-hk Bits und ist somit positiv. Abbildung 8: Einordnung nach Häufigkeit in der Baumstruktur Dieses Verfahren lässt sich jetzt verallgemeinert fortsetzen, und man kommt offenbar zu der Huffman-Kodierung, da die Zeichen mit der geringsten Häufigkeit immer tiefer sacken, solange die Summe ihrer Häufigkeiten noch kleiner ist als die eines einzelnen anderen Zeichens. Daraus folgt also, dass eine Huffman-Kodierung niemals schlechter ist als eine Kodierung mit gleichlangen Wörtern. Ein weiterer Vorteil ist, dass die Anzahl verschiedener Zeichen nicht länger von der Wortlänge abhängt, sondern beliebig gewählt werden kann. Man könnte also zu jeder Anwendung eine Kodierung konstruieren, die genau die von der jeweiligen Anwendung benötigten Zeichen festlegt. Huffman-Kodierung bei MP3-Dateien Vor der Huffman-Kodierung steht die Anordnung der Subbänder. Die Frequenz gibt die Reihenfolge der Bänder vor. Die Subbänder mit niedrigeren Frequenzen enthalten üblicherweise deutlich mehr Werte, als diejenigen der hohen Frequenzen, wo in der Regel 0 oder Werte in der Nähe von 0 erscheinen. Der Encoder unterteilt die Subbänder in drei Bereiche. Jeder Bereich erhält einen eigenen Huffman-Baum, um den optimalen Otto Liebminger 14.05.2016 Seite 17 von 49 Datenkompressionen Kompressionsfaktor zu erreichen. Zunächst klammert der Encoder die Frequenzbänder mit den hohen Frequenzen aus, eine Kodierung ist hier nicht notwendig, da sich ihre Größe aus denen der anderen zwei Regionen ableiten lässt. Die zweite Region enthält Frequenzbänder, in denen die Werte von -1 bis 1 häufig auftauchen. Der dritte Bereich enthält alle verbleibenden Werte und wird ein weiteres Mal in drei Regionen unterteilt, von denen jede einen eigenen Huffman-Baum zugewiesen bekommt. Welcher Huffman-Baum zum Einsatz kommt, wird innerhalb der MP3-Datei abgelegt. 3.4.4 arithmetische Kodierung Die arithmetische Kodierung stellt eines der effizientesten Verfahren dar, um die Kodierung von Zeichen mit unterschiedlicher Auftrittswahrscheinlichkeit umzusetzen. Die Zeichenverteilung spiegelt sich dabei exakt in den Kodelängen wieder, es gibt keine Abweichungen, die z.B. auf Bit-Grenzen zurückzuführen sind. Damit ist die arithmetische Kodierung anderen Verfahren, wie der klassischen Huffman-Kodierung überlegen. Als Bestandteil des jpeg-Kompressionsverfahrens findet die arithmetische Kodierung Anwendung. Alternativ sieht die jpeg-Spezifikation die Huffman-Kodierung vor, die, soweit bekannt, ohne Lizenzen anwendbar ist. arithmetische Kodierung (AC) Ziel der arithmetischen Kodierung (AC - Arithmetic Coding) ist es, ein Verfahren zu definieren, das bei Kenntnis der relativen Wahrscheinlichkeit für das Auftreten eines Zeichens einen Kode idealer Länge zur Verfügung stellt. Die AC ordnet dazu jedem Zeichen ein Intervall zu, dessen Größe die Wahrscheinlichkeit für das Auftreten dieses Zeichens wiederspiegelt. Die Kodierung erfolgt durch Auswahl einer rationalen Zahl, die innerhalb dieses Intervalls liegt. Das gesamte Datenvolumen wird durch eine rationale Zahl dargestellt, die für jedes Zeichen immer innerhalb von dessen Intervall liegt. Mit zunehmendem Datenbestand wird die Länge, bzw. die Anzahl von signifikanten Nachkommastellen, der Zahl immer größer. Obwohl die AC in der Regel ein besseres Ergebnis liefert, als die klassische HuffmanKodierung, ist sie nur verhältnismäßig selten eingesetzt worden. Dies lag zunächst in den Anforderungen an die Rechenleistung begründet. Später kamen jedoch patentrechtliche Erwägungen primär zum Tragen. Die Firmen IBM, AT&T und Mitsubishi sollen gültige Patente besitzen. Prinzip der arithmetischen Kodierung Die gesamte zu kodierende Datenmenge wird durch eine rationale Zahl dargestellt, die in einem Bereich von 0 bis 1 liegt. Dieser Bereich wird in Teilintervalle gegliedert, die ihrerseits einzelne Zeichen repräsentieren. Die Anzahl der Teilintervalle ist identisch mit der Anzahl der Zeichen im aktuellen Zeichenvorrat und die Größe ist proportional zur Otto Liebminger 14.05.2016 Seite 18 von 49 Datenkompressionen deren Auftrittswahrscheinlichkeit. Für jedes Zeichen in den Ausgangsdaten erfolgt eine neue Intervallteilung, ausgehend von dem letzten Teilintervall. Beispiel Teilintervalle Start 'b' 'a' a [0,0; 0,5) [0,50; 0,65) --> [0,500; 0,575) b [0,5; 0,8) --> [0,65; 0,74) [0,575; 0,620) c [0,8; 1,0) [0,74; 0,80) [0,620; 0,650) Ausgehend von der initialen Intervallteilung wird das Zeichen 'b' mit einer Zahl kodiert, die größer oder gleich 0,5 und kleiner als 0,8 ist. Würde das Zeichen 'b' für sich allein stehen, könnte eine beliebige Zahl aus diesem Intervall ausgewählt werden. Für das folgende Zeichen geht man von dem aktuellen Intervall [0,5; 0,8) aus und gliedert dieses wieder in Teilintervalle. Ist das zweite Zeichen ein 'a', so wird eine beliebige Zahl aus dem Intervall [0,50; 0,65) kodiert. Mit jedem weiteren Zeichen wird das zuletzt aktuelle Intervall weiter geteilt, die Anzahl von signifikanten Nachkommanstellen der zu kodierenden Zahl wächst immer weiter an. Auch wenn die Genauigkeit der zu kodierenden Zahl immer größer wird, so braucht diese nicht vollständig bearbeitet zu werden. Mit Hilfe geeigneter Algorithmen lassen sich nicht mehr relevante Anteile eliminieren. Aufteilung in Intervalle Ausgehend von einem bekannten Alphabet, werden die Auftrittswahrscheinlichkeit aller Zeichen ermittelt und in Intervalle ungesetzt. Die Intervallgröße ist linear abhängig von der Wahrscheinlichkeit für das Auftreten eines Zeichens. Liegt diese beispielsweise bei 50%, so umfasst das zugehörige Teilintervall die Hälfte des aktuellen Intervalls. Für das erste Zeichen wird das Gesamtintervall in den Grenzen von [0; 1) zugrunde gelegt: Beispiel Intervallteilung [0,0; 1,0) Zeichen a b c d e Häufigkeit 4 2 2 1 1 Wahrscheinlichkeit Teilintervall 0,4 [0,0; 0,4) 0,2 [0,4; 0,6) 0,2 [0,6; 0,8) 0,1 [0,8; 0,9) 0,1 [0,9; 1,0) Beispiel Intervallteilung [0,9; 1,0) Zeichen a b c d Häufigkeit 4 2 2 1 Otto Liebminger Wahrscheinlichkeit Teilintervall 0,4 [0,90; 0,94) 0,2 [0,94; 0,96) 0,2 [0,96; 0,98) 0,1 [0,98; 0,99) 14.05.2016 Seite 19 von 49 Datenkompressionen e 1 0,1 [0,99; 1,00) Beispiel Intervallteilung [0,99; 1,00) Zeichen a b c d e Häufigkeit 4 2 2 1 1 Wahrscheinlichkeit Teilintervall 0,4 [0,990; 0,994) 0,2 [0,994; 0,996) 0,2 [0,996; 0,998) 0,1 [0,998; 0,999) 0,1 [0,999; 1,000) Eine Zahl im Bereich von 0,999 bis < 1,000 repräsentiert demnach die Zeichenkette "eee". Zuordnung von Intervallen und Kodes Die Zeichen werden durch eine beliebige Zahl identifiziert, die innerhalb des betreffenden Intervalls liegen muss. So werden alle Werte, die größer oder gleich 0,0 und kleiner als 0,4 sind als Zeichen "a" interpretiert. Beispiel: Zeichenzuordnung Zahl 0,1 0,2 0,4 0,55 0,99 Intervall [0,0; 0,4) [0,0; 0,4) [0,4; 0,6) [0,4; 0,6) [0,9; 1,0) Zeichen a a b c e Alle Intervalle weisen eine abgeschlossene Untergrenze (symbolisiert durch) und eine offene Obergrenze (symbolisiert durch) auf. Der untere Grenzwert ist immer Bestandteil des jeweiligen Intervalls, während der obere Grenzwert außerhalb des Intervalls liegt. D.h. der Wert 1 dürfte in diesem Kontext niemals kodiert werden. nachfolgende Intervalle Für alle weiteren Zeichen wird jetzt nicht mehr das Basisintervall [0; 1), sondern das jeweils letzte Teilintervall zugrunde gelegt. Sofern das erste Zeichen im Beispiel ein "a" gewesen ist, ergibt sich für das nächste Zeichen ein Intervall von [0; 0,4), bei einem "b" entsprechend [0,4; 0,6). Bei konstanter Wahrscheinlichkeit würden, nach einem "a" als vorhergehendes Zeichen, für das aktuelle Zeichen die folgenden Grenzen gelten: Beispiel: Intervallteilung "a" ges.: [0,0; 1,0) Z. a b c d e P(x) 0,4 0,2 0,2 0,1 0,1 Teilintervalle [0,0; 0,4) ----[0,4; 0,6) | [0,6; 0,8) | [0,8; 0,9) | [0,9; 1,0) -- Otto Liebminger ges.: [0,0; 0,4) 0,16 0,08 0,08 0,04 0,04 Teilintervalle [0,00; 0,16) [0,16; 0,24) [0,24; 0,32) [0,32; 0,36) [0,36; 0,40) 14.05.2016 Seite 20 von 49 Datenkompressionen ----Sum. 1,0 -----0,40 Für die reale Umsetzung einer AC sei nochmals ausdrücklich darauf hingewiesen, dass die arithmetische Kodierung patentrechtlichen Einschränkungen unterliegt und der Erwerb von Lizenzen für den praktischen Einsatz zwingend erforderlich ist. Flussdiagramm: AC-Enkodierung Otto Liebminger 14.05.2016 Seite 21 von 49 Datenkompressionen Flussdiagramm: AC-Dekodierung Der Algorithmus für die Dekodierung weicht nur geringfügig von dem für die Enkodierung ab. Im Prinzip wird lediglich überprüft, innerhalb wessen Teilintervall sich der kodierte Wert gerade befindet. Sowohl bei der En- als auch bei der Dekodierung liegt die Schwierigkeit bei der Umsetzung der Operationen für das Aus- bzw. Eingliedern neuer signifikanter Stellen, ohne durch Rundungsfehler falsche Intervalle zu identifizieren. Die dafür erforderlichen Algorithmen sind in den Flussdiagrammen nicht enthalten. Otto Liebminger 14.05.2016 Seite 22 von 49 Datenkompressionen Vergleich arithmetische mit Huffman Kodierung Die arithmetische Kodierung versucht äquivalent der Huffman-Kodierung die Wahrscheinlichkeit, mit der bestimmte Zeichen auftreten, auszuwerten und danach die Länge der erforderlichen Kodierung zu optimieren. Bedingt durch die Struktur der klassischen Huffman-Kodierung, die nur ganzzahlige Kodelängen kennt, ist die arithmetische Kodierung in punkto erzielbarer Kompressionsrate immer überlegen. Der primäre Nachteil der arithmetischen Kodierung liegt in dem hohen Rechenaufwand begründet, der sich insbesondere bei älteren Systemen drastisch ausgewirkt hat. Außerdem spielt die Patentproblematik eine entscheidende Rolle. Daten mit hoher Redundanz Besondere Aspekte bietet die arithmetische Kodierung, wenn die zu komprimierenden Daten ein besonders hohes Maß von Redundanz aufweisen. Als Extrembeispiel mag hier eine Datei dienen, die 10.000 Byte umfasst und lediglich den Wert Null (0h) enthält. Bei der arithmetischen Kodierung reicht es aus, einen beliebigen Wert aus dem resultierenden Intervall zu speichern, in diesem Fall idealerweise 0. In Verbindung mit einer Kennung für das Dateiende oder die Angabe der Dateigröße resultiert daraus eine Größe der enkodierten Daten von 3 Byte. Im Vergleich dazu kann die Huffman-Kodierung lediglich eine Reduktion auf 1.250 Byte (10.000 mal 1 Bit) erzielen, sofern man nur die Kodierung einzelner Zeichen betrachtet. Implementationen Im Rahmen des jpeg-Kompressionsverfahrens kann die arithmetische Kodierung, entsprechende Lizenzen vorausgesetzt, zur abschließenden Entropiekodierung der DCund AC-Koeffizienten eingesetzt werden. Üblicherweise wird jedoch die HuffmanKodierung angewendet. 3.4.5 Shannon-Fano-Kodierung Die Kodierung nach Claude Shannon (MIT) und R.M. Fano (Bell Laboratories) wurde in etwa 1960 entwickelt. Sie sieht eine Kodierung mit unterschiedlichen Zeichenlängen entsprechend der Häufigkeit ihres Auftretens vor. Das Prinzip der Shannon-Fano-Kodierung ist verhältnismäßig einfach aufgebaut, hat aber vornehmlich akademischen Hintergrund. Eine praktische Bedeutung kommt dem Verfahren selber nicht zu. Die Begründung dafür liegt in der geringen Effizienz, wie sich im Vergleich mit der Huffman-Kodierung zeigt. Otto Liebminger 14.05.2016 Seite 23 von 49 Datenkompressionen Beispiel Shannon-Fano-Kodierung Um einen Kodebaum nach Shannon und Fano zu definieren wird eine nach Häufigkeit geordnete Tabelle aller auftretenden Zeichen ausgewertet. Diese wird solange geteilt, bis jedem Zeichen ein Blatt des Baums zugeordnet ist. Die Teilung erfolgt immer so, dass die Summe der Häufigkeiten im oberen und unteren Teil möglichst gleich groß ist. Zeichen Häufig- Kode- Kode Gesamtkeit länge länge -----------------------------------------A 24 2 00 48 B 12 2 01 24 C 10 2 10 20 D 8 3 110 24 E 8 3 111 24 -----------------------------------------ges. 62 Zeichen SF-kodiert: 140 Bit linear (3 Bit/Zeichen): 186 Bit Mit Hilfe des Shannon-Fano-Kodes lassen sich die zugrunde gelegten Originaldaten mit 2,26 Bit kodieren. Für eine lineare Kodierung sind bei 5 Zeichen 3 Bit pro Zeichen erforderlich. Allerdings muss die Tabelle vorher bekannt oder aus den vorhergehenden Daten heraus entwickelt werden. Interpretation von Kodebäumen Ein Kode ergibt sich aus einem binären Baum indem man ihn, beginnend mit der Wurzel, solange durchschreitet, bis der Knoten mit dem gewünschten Inhalt erreicht ist. Jede linksseitige Verknüpfung entspricht einer binären 0, jede rechtsseitige Verknüpfung entspricht einer binären 1. In dem oben aufgezeigten Beispiel ergibt sich die nachfolgende Kodierung für die drei kodierten Zeichen "a", "b" und "c": 0 -- a 10 -- b Otto Liebminger 14.05.2016 Seite 24 von 49 Datenkompressionen 11 -- c 3.5 Übersichten Übersicht: gängige Formate und Verfahren Datentyp Format Dateien zip Kompression Anmerkungen gängiger Standard unter Windows lz gängiger Standard unter MacOS sit Text zip lz - Bilder gif lzw Standard Internet JPEG dct Standard Internet Audio mp3 subband, mdct eigentlich: MPEG-1 Audio Layer III Video MPEG dct avi - - pdf zip, jpg - hybride Daten Übersicht: Dateien beliebigen Inhalts Format Kompression Anmerkungen zip lz gängiger Standard unter Windows sit - gängiger Standard unter MacOS arj - - rar - - tar - - ace - - uc2 - - Otto Liebminger 14.05.2016 Seite 25 von 49 Datenkompressionen Übersicht: Graphik Format Kompression Anmerkungen gif lzw Standard Internet, max. 256 Farben jpeg dct Standard Internet tiff opt. jpeg, opt. lzw - bmp opt. RLE RLE4 RLE8 pict - Apple eps - - fif - - png - - wi - - Übersicht: Audio Format Kompression Anmerkungen mp3 subband, mdct eigentlich: MPEG-1 Audio Layer III mpeg-1 subband, mdct - mpeg-2 subband, mdct - mpeg-4 - - AAC - Advanced Audio Coding AC-3 - Dolby - - Real Audio - - Apple QuickTime dpcm - Difference Pulse Code Modulation adpcm - Adaptive Difference Pulse Code Modulation Otto Liebminger 14.05.2016 Seite 26 von 49 Datenkompressionen Übersicht: Video Format Kompression Anmerkungen MPEG-1 dct - MPEG-2 dct - MPEG-4 - - avi - - motion jpeg - - flc - Animationen, "flics" animated gif - - - - Apple QuickTime - - Real Video h.261 - - Übersicht: Text Format Kompression Anmerkungen zip lzw - rar - deutlich bessere Kompression als bei zip Übersicht: hybride Formate Format Kompression Anmerkungen pdf zip, jpg Adobe - - - - - - Otto Liebminger 14.05.2016 Seite 27 von 49 Datenkompressionen 4 Methoden der Grafikkodierung Hier sollen einige Grundbegriffe über Graphik, Auflösung und Farbtiefe kurz beschrieben werden. Graphik ist eine Ansammlung von Daten, die diese Beschreiben. Abbildung 9: Prinzip der Graphikentstehung Wichtig ist es diese Daten zu strukturieren und zu organisieren. 4.1 Es gibt zwei grundsätzliche Arten von Graphiken: 4.1.1 Rastergraphik Bei der Rastergraphik wird das Bild in eine Pixelmatrix zerlegt. Es entstehen M Zeilen und N Spalten. (M x N – Pixelmatrix). Jedes der einzelnen Pixel enthält Farbwerte. Abbildung 10: Rastergraphik Bei der Rastergraphik ist die Speicherung der Bildinformation formatabhängig. Auflösung: Je mehr Bildpunkte vorhanden sind, desto höher ist die Auflösung und desto besser ist die Qualität des Bildes. Jedoch gilt auch, je höher die Auflösung, desto größer ist der Speicherbedarf. In den folgenden Bildern ist der Begriff der Auflösung bzw. der Qualität sehr gut Erkennbar. Otto Liebminger 14.05.2016 Seite 28 von 49 Datenkompressionen Das linke Bild hat eine Auflösung von 72 dpi und das rechte Bild eine Auflösung von nur 10 dpi. Abbildung 11: Auflösung Farbtiefe: Hier gilt, je größer die Farbzahl, desto höher ist die Farbtiefe. Jedoch gilt auch hier, je höher die Farbtiefe, desto größer ist der Speicherplatzbedarf. Abbildung 12: Farbtiefe Störungen durch geringe Rasterung oder Quantisierung Periodische Störungen „Aliasing“ Abtasttheorem von Shannon Das Abtasttheorem von Shannon sagt aus, dass die Abtastfrequenz mehr als doppelt so groß sein muss, als die maximal auftretende Frequenz. Ein zu großer Abtastintervall hätte zur folge, dass die falschen Werte abgetastet werden würden und somit Abtastwerte mit längerer Wellenlänge entstehen. Dies würde einer falschen und somit unbrauchbaren Information entsprechen. Otto Liebminger 14.05.2016 Seite 29 von 49 Datenkompressionen Abbildung 13: Abtastheorem von Shannon Störungen im Punktraster „Moiree Effekt“ Zu digitalisierende Objekte werden durch ein Gitter betrachtet. Durch die Abtastung kommt es nun zu Veränderung der Gitterkonstanten und der Richtung. Es entsteht der sogenannte Moiree Effekt, der einer Störung entspricht. Abbildung 14: Moiree Effekt 4.1.2 Vektorgraphik Vektorgraphiken sind nur für einfache Darstellungen geeignet. Sie sind nicht für komplexe Graphiken, wie Fotos oder vielfarbige Darstellungen geeignet. In Vektorgraphiken kann man beliebig hineinzoomen, ohne einen Rastereffekt bzw. Qualitätsverlust zu erhalten. Es werden Objektbezugspunkte für geometrische Figuren gespeichert. Die darzustellende Figur wird daraus rekonstruiert. Es werden zusätzlich Attribute, wie Farben, Linienstärken und Füllung gespeichert. Otto Liebminger 14.05.2016 Seite 30 von 49 Datenkompressionen Diese Graphiken sind auch Animationsfähig und werden daher oft für Comics verwendet. Abbildung 15: Vektorgrahiken-Beispiele 5 JPEG – Graphikformat für Einzelbilder JPEG ist eines der gängigsten Verfahren zur Kompression von Bilddaten, speziell von Photographien oder photorealistischen Darstellungen. Der Name JPEG (zumeist JayPeg ausgesprochen) ist der allgemein gebräuchlichen Bezeichnung für die Arbeitsgruppe entlehnt, die die Entwicklung dieses Datenformats betrieben hat: die Joint Photographic Experts Group. Entwicklung, Beurteilung und Standardisierung haben sich über einen Zeitraum von 1982 bis 1987 erstreckt; seit 1992 ist JPEG als internationaler Standard festgeschrieben (ISO/IEC IS 10918). 5.1 Eigenschaften von JPEG Ausgehend von einer Basisimplementierung weist JPEG folgende Eigenschaften auf: Das Datenformat ist unabhängig von der Auflösung, dem Seitenverhältnis und dem Bildinhalt. Die Qualität der Abbildung läst sich individuell bestimmen. Ein Absenken der qualitativen Anforderungen resultiert in einer geringeren Dateigröße. Bildinhalte mit einfacher Struktur (gleichfarbige Flächen, regelmäßige Muster, geringer Farbumfang, etc.) führen automatisch zu kleineren Dateien. Die Reduzierung der Bildqualität macht sich durch Kompressionsartefakte in Form einer "Rasterung" bemerkbar. Die Größe dieser Strukturen beträgt 8 x 8 Pixel und tritt zunächst in Bereichen mit hohem Komplexitätsgrad auf. Eine zuverlässige Übertragung von Farben, z.B. bei Hintergrundfarben, ist bei größeren Kompressionsraten nicht gewährleistet. Bei der Kompression von monochromen Graphiken (z.B. s/w-Graphiken, technischen Zeichnungen, etc.) ergeben sich mitunter deutlich wahrnehmbare Kompressionsartefakte. Es ist eine bis zu 24 Bit Farbtiefe möglich Otto Liebminger 14.05.2016 Seite 31 von 49 Datenkompressionen 5.2 Einsatzbereiche Das hauptsächliche Einsatzgebiet von JPEG liegt in der Kodierung von Photos oder von photorealistischen Darstellungen, bei der effiziente Kapazitätsauslastung (Speicher, Datentransferraten, etc.) im Mittelpunkt steht. Es wir darum auch in der digitalen Fotographie als Standardformat verwendet. Darüber hinaus ist die weite Verbreitung, auch im www, eines der charakteristischen Stärke von JPEG. Zeichnungen und monochromen Graphiken lassen sich in der Regel besser in anderen Formaten, wie z.B. gif, kodieren. Gleiches gilt, wenn einfache Graphiken oder kleinere Bilder in eine Umgebung mit Hintergrundfarben bzw. -graphiken eingepasst werden soll. In der Basiskonfiguration ist JPEG nur begrenzt für den professionellen Bereich in der Drucktechnik geeignet. Häufig treten Probleme mit Kompressionsartefakten, den limitierten Farbsystemen oder der Farbverbindlichkeit auf. Professionelle Lösungen sind verfügbar, aber zumeist nicht kompatibel mit den Basislösungen. 5.3 Kodierungschritte Das Ziel des gebräuchlichsten Modus von JPEG ist es, bei der gewünschten Kompressionsleistung ein Optimum an Qualität zur Verfügung zu stellen. Dazu müssen die Ausgangsdaten in eine Form gebracht werden, die es erlaubt, zwischen wichtigen (relevanten) und weniger wichtigen (irrelevanten) Inhalten zu unterscheiden. Diese Vorgaben werden mit einem mehrstufigen Prozess umgesetzt: 1. Bildaufbereitung (Zerlegung in Bildkomponenten) Das Bild wird in Komponenten gegliedert, die den unterschiedlichen Qualitätsanforderungen angepasst sind. 2. Transformation (DCT: Diskrete Kosinustransformation) Jede einzelne Komponente wird in ein Format übertragen, das Rückschlüsse über die Struktur der Bildinhalte erlaubt. Damit ergibt sich die Möglichkeit zwischen grundlegenden und komplexeren Inhalten zu unterscheiden. 3. Quantisierung (Gewichtung der Inhalte) Die transformierten Daten werden quantisiert, also entsprechend ihrer Bedeutung für den Bildinhalt gewichtet. 4. Entropiekodierung (Huffman-Kodierung) Entfernung von redundanten Informationen. Bei dem skizzierten Verfahren handelt es sich um eine gebräuchliche Betriebsart. Darüber hinaus sind in großem Umfang weitere Betriebsmodi vorgesehen, u.a. Optionen, die eine verlustfreie Datenkompression erlauben. Otto Liebminger 14.05.2016 Seite 32 von 49 Datenkompressionen Die vier Stufen anhand eines Blockschaltbildes dargestellt: Abbildung 16: Blockschaltbild des Codierprozesses Das Bild wird in lauter 8 mal 8 Blöcke Zerlegt. 5.3.1 Bildaufbereitung (Farbkonversion und Sampling) Eine JPEG-Datei nimmt die Bildinhalte getrennt in einzelne Komponenten auf, die voneinander unabhängig weiterverarbeitet werden. In Inhalt und Auflösung können die Komponenten dabei je nach Anwendung und qualitativen Anforderung differieren. Es erfolgt eine Transformation der RGB- Information in Y(Helligkeit), Cb (Blaukomponente) und Cr (Rotkomponente). YCbCr- Farbmodell Dieses Farbmodell wird auch YUV- Farbmodell genannt. Es werden die Farbkomponenten anteilig in Luminanz und Chrominanz zerlegt. Dies kommt daher, dass die Cb und Cr- Komponenten noch in ihrem Pegel reduziert werden. Der Vorteil des YUV-Farbmodells ist es, dass man die Farbwerte U und V eines Pixels mit niedrigerer Auflösung kodieren kann als den Helligkeitswert Y. Je nach gewünschter Bildqualität kann die Auflösung der Farbkomponenten beispielsweise um den Faktor 2 oder 4 reduziert werden; d.h. auf vier Helligkeitsinformationen kommen nur zwei bzw. eine Farbinformation. Diese Vorgehensweise resultiert aus der unterschiedlichen Empfindlichkeit des menschlichen Auges für die Wahrnehmung von Helligkeits- und Farbunterschieden. Der Helligkeit kommt in der Gesamtwahrnehmung eine erheblich größere Bedeutung zu. Demzufolge bietet es sich an, einen größeren Anteil des Datenumfangs dafür zur Verfügung zu stellen. Man bezeichnet diese Kodierungsform als 4:2:2- oder 4:1:1Kodierung. Otto Liebminger 14.05.2016 Seite 33 von 49 Datenkompressionen Dieses Verfahren wird Sub-Sampling genannt. Bei JPEG verwendet man dieses Verfahren, indem man für jeweils vier Helligkeitswerte Y nur je ein Chroma-Wert U und V kodiert. Abbildung 17: YUV-Codierung Die vier Y-Blöcke der Größe 8x8 mit einem zugehörigen U-Block der Größe 8x8 und einem V-Block der Größe 8x8 bezeichnet man als Macroblock Abbildung 18: Macroblock-Darstellung Otto Liebminger 14.05.2016 Seite 34 von 49 Datenkompressionen 5.3.2 Transformation (DCT: Diskrete Kosinustransformation) Die Anforderungen an ein ideales Format für die Bilddatenkompression lassen sich wie folgt skizzieren: Die Bildinformationen lassen sich nach ihrer Bedeutung für den qualitativen Gesamteindruck unterscheiden. Es gibt die Möglichkeit zu unterscheiden, in welchem Maße ein Wegfallen der Information Einfluss auf die Bildqualität hat. Nur für relevante Bildinformationen wird auch Datenkapazität aufgewendet. Enthält ein Bildabschnitt keine Informationen (z.B. bei einer einfarbigen Fläche), so sollte sich dies unmittelbar in dem Aufbau der Daten niederschlagen. Die punktweise Darstellung, mit der die konventionellen Datenformate arbeiten, erfüllen die vorstehend genannten Anforderungen nicht. Deshalb werden die Ausgangsdaten mit Hilfe der sogenannten diskreten Kosinus-Transformation (DCT: Discrete Cosine Transformation) umgewandelt. Damit ergeben sich in Abhängigkeit von den Bildinhalten folgende Eigenschaften: Einfache Strukturen spiegeln sich in niedrigen Werten wieder; komplexe, detailreiche Strukturen in hohen Werten. Die aus der DCT resultierenden Werte spiegeln den geometrischen Aufbau der Bildinhalte wieder. Details (z.B. horizontale oder vertikale Zeichnungen), die nicht im Bild enthalten sind, werden durch den Wert Null dargestellt. Im Extremfall wird eine gleichfarbige Fläche durch einen einzelnen Wert repräsentiert. Alle anderen Werte ergeben Null. Normalerweise werden jeweils 8 x 8 Punkte einer jeden Komponente mit Hilfe der nachfolgenden Formel umgesetzt: Bei diesem Verfahren handelt es sich um eine Transforamtion vom Teitbereich in den Frequenzbereich. Transformation von Intensitätsdaten in Frequenzdaten. Es besteht große Ähnlichkeit mit der Fourier-Transformation. Otto Liebminger 14.05.2016 Seite 35 von 49 Datenkompressionen Der Grundgedanke der DCT ist es, durch Projektion auf eine geeignete Orthonormalbasis neue Koordinaten eines Datenvektors zu bestimmen. Durch geschickte Wahl der Orthonormalbasis sind dann manche Koordinaten „relevanter“ als andere. Die Datenkompremierung wird dadurch erreicht, dass die „nicht relevanten“ Koordinaten durch 0 ersetzt werden. Ein einzelner Bildpunkt(x,y) des 8x8 Blocks hat die Bildinformation f(x,y). 8 mal 8 bedeutet 64 mal anwenden und ergibt daher 64 Koeffizienten in der Frequenzdomäne. Um ein Bild mit der DCT zu komprimieren, müssen somit die Koordinaten jede 8x8 Blocks des Bildes bezüglich dieser Matrizen-Basis von 64 berechnet werden. Darstellung von Bildern mit Basisbildern Für die Erklärung soll ein Bild in ein 2x2 Bild zerlegt werden.Es wird ein Grauwertbild in eine Linearkombination aus Basisbildern und Koeffizienten zerlegt. Neben der oben dargestellten Basis 2x2 Basisbildern, kann man beliebige andere Basen konstruieren.Um einen Bildblock der Größe 8x8 abzudecken, braucht man daher 64 Basisbilder. Abbildung 19: Bildblock 8x8 Otto Liebminger 14.05.2016 Seite 36 von 49 Datenkompressionen Große, regelmäßig gefärbte Flächen Ergeben niedrige Frequenzen. Feine Details sowie hohe Kontrastunterschiede ergeben sehr hohe Frequenzen DC (Direct Current) = F(0,0) enthällt die Durchschnittswerte der 8x8 Matrix. AC (Alternating Current) = F(0,1)…F(7,7) speichern die Veränderungen zum DC-Wert. Abbildung 20: Matrix-Tabellen 5.3.3 Quantisierung(Gewichtung der Inhalte) Als Ergebnis der DCT stehen Werte zur Verfügung, die den Bildinhalt beschreiben. Allerdings haben sie nicht im gleichen Maße Einfluss auf die Bildqualität. Der Grund dafür liegt in der subjektiven Wahrnehmung von unterschiedlichen Details begründet. Mit Hilfe der Quantisierung werden relevantere Bildanteile mit einer höheren Genauigkeit dargestellt. Anteile, die subjektiv zu einer geringeren Beeinflussung der Bildwahrnehmung führen, werden abgewertet und mit niedrigerem Wertebereich abgebildet. Die Quantisierung ist nicht mehr umkehrbar und beeinflusst maßgeblich die dargestellte Bildqualität. Dafür werden Quantisierungstabellen angewendet, die in der JPEG-Datei hinterlegt sind. Sie sind für eine Dekodierung unerlässlich. Die von der DCT erhaltenen Werte F(U,V) werden dann durch die Werte Q(U,V) aus der Quantisierungstabelle dividiert und dann noch ganzzahlig aufgerundet. Die Daten etwa die der Ortsfrequenzen liegen bereits digital vor, jedoch in einer hohen Genauigkeit, die der Bit-Zahl entspricht. Otto Liebminger 14.05.2016 Seite 37 von 49 Datenkompressionen Die Anzahl der Quantisierungsstufen variiert mit der Ortsfrequenz was, die genaue Kodierung der zuverlässigeren tiefen Ortsfrequenzen erlaubt. Auch der Abstand der Quantisierungsstufen einer Ortsfrequenz braucht nicht gleichmäßig zu sein, sondern kann etwa mit zunehmender Amplitude zunehmen, um auf bestimmte Eigenschaften der menschlichen Wahrnehmung (Farb- und Helligkeitsempfinden des Auges) zu reagieren. Abbildung 21: DCT-Werte vor und nach der Quantisierung 5.3.4 Entropiekodierung (Huffman-Kodierung) Die Daten, die aus den vorangegangenen Schritten resultieren, sind mit einer unterschiedlichen Menge von Redundanz versehen, die keinerlei Beitrag zur Qualität der Bilddarstellung liefert. Diese Redundanz wird z.B. mit Hilfe einer Huffman-Kodierung reduziert. Die Basis für diese Kodierung bildet ein Kodebaum nach Huffman, der häufig auftretende Symbole mit kurzen Kodes und selten auftretende Symbole mit langen Kodes versieht. Neben der Huffman-Kodierung ist ein weiteres Kodierungsverfahren spezifiziert, das allerdings wegen der Patentlage keine praktische Bedeutung hat (arithmetische Kodierung). Bei der Entropie-Kodierung, auch Serialisierung, handelt es sich um die eigentliche Komprimierung bei JPEG. Otto Liebminger 14.05.2016 Seite 38 von 49 Datenkompressionen Bei der Serialisierung spielen die DC-Koeffizienten eine wichtige Rolle. Die Codierung erfolgt, indem die Differenzwerte der 8x8 Matrizen zum nächsten Block gespeichert werden. Die DC-Werte geben den Grundfarbton an und sind deshalb von großer Bedeutung. Die restlichen Blöcke (F1,0 … F7,7) beinhalten die AC-Koeffizienten. Diese Werden in einem „Zick-Zack“-Muster abgearbeitet. Das „Zick-Zack“-Auslesen der Koeffizienten ist besser als ein zeilenweises Auslesen, denn nach der Quantisierung kommen in der rechten unteren Matrix viele gleiche Werte nacheinander vor, darunter viele Nullen. Die Zickzack-Anordnung maximiert die Lauflängen für die Anschließende EntropieKodierung. Der Lauflängen-Kodierung folgt dann die Huffman-Kodierung. Das folgende Bild zeigt die „Zick-Zack“-Abarbeitung der AC-Werte. Abbildung 22: Zick-Zack Abarbeitung der AC-Werte Bei der Huffmann-Kodierung tritt das Problem auf, dass die Daten nur dann wieder dekodiert werden können, wenn der Suchbaum mit abgespeichert wurde. Es würde die Daten extrem aufblähen, wenn man dies für jeden Block einzeln tun würde. Daher teilen sich mehrere Bilder den gleichen Suchbaum. Dies reduziert zwar die Effizienz der Kodierung, weil potentiell ein größeres Wertespektrum auftreten kann und die statistische Verteilung der Werte mit zunehmender Datenmenge ungünstiger wird, aber der Vorteil ist dennoch vorhanden. 5.4 JPEG2000 Bei JPEG2000 handelt es sich um eine verbesserte JPEG-Version. Die DCT wird durch die Wavelets-Transformation ersetzt. Damit erreicht man in der Regel eine um 30% bessere Komprimierungsrate als bei JPEG. Ein Nachteil ist, dass die mathematische Komplexität jedoch 10 mal höher ist als bei DCT. Bei JPEG2000 erzielt man geringere Datenmengen, bei gleicher Qualität zu JPEG. Es stehen 256 Informationskanäle für diverse Bildbeschreibungen zur Verfügung. Weiters sind sehr komplexe Farbräume verarbeitbar und speicherbar. Die Bilder sind nach Größe, nach Auflösung oder nach Qualität skaliert darstellbar. “Level Of Interest“ –Zugriff ! Die Datei endet mit *.jp2 . Otto Liebminger 14.05.2016 Seite 39 von 49 Datenkompressionen 6 MPEG – Datenformat für Videosignale 6.1 MPEG - Übersicht MPEG steht für Motion Picture Expert Group, der allgemeinen Bezeichnung für die Arbeitsgruppe, in der die MPEG-Spezifikationen entwickelt worden sind. Zu den MPEGFormaten gehören die Versionen 1, 2 und 4, die sich mit der Kodierung von Audio/Videoinformationen befassen. MPEG ist ein Datenreduktionsverfahren für bewegte Bilder und ist eine Weiterentwicklung des JPEG- Verfahrens. wogegen JPEG ein Kompressionsverfahren für Einzelbilder ist. Durch den Erfolg von JPEG beschloss das internationale Normierungsgremium ISO, auch ein Normierungsprojekt für bewegte Bilder und Audiokompression zu starten. So wurde die Motion Picture Expert Group ins Leben gerufen, nach der auch die Standards für die Videokompression benannt sind. Mit MPEG werden Videobilder und die dazugehörigen Audiosignale komprimiert. 1991 wurde der Videokompressionsstandard MPEG-1 eingeführt, der ca. VHS-Qualität hat. 1995 wurde der Standard für MPEG-2 eingeführt. 1999 kam dann der MPEG-4 Standard, der viele neue Möglichkeiten bietet. Derzeit wird bereits an den neuen Standards wie MPEG-7 und MPEG-21 gearbeitet. MPEG-21 soll Planmäßig 2009 eingeführt werden. 6.2 MPEG - Formate MPEG-1 Audio/Video-Kodierung, Bitrate bis 1.5 Mbps Video-CD (Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s [ISO/IEC 11172-1 bis -5] ) MPEG-2 Audio/Video-Kodierung, Bitrate bis 15Mbps, diverse Profile Digitales Fernsehen, DVD (Generic coding of moving pictures and associated audio information [ISO/IEC 13818-1 bis -11] ) MPEG-4 Audio/Video-Kodierung für mobile Systeme, objektbasierte Kodierung, extrem geringe Bitraten, vielfältige Optionen Coding of audio-visual objects [ISO/IEC 14496-1 bis -21] ) MPEG-7 Meta-Kodierung, Medienbeschreibung und suche MPEG-21 geplantes universelles Multimedia Framework Otto Liebminger 14.05.2016 Seite 40 von 49 Datenkompressionen Die ursprünglich in der Nomenklatur vorgesehene Version MPEG-3, die speziell für die Kodierung von hochauflösenden Videosignalen (z.B. für HDTV und DVD) ausgelegt werden sollte, ist bereits Bestandteil von MPEG-2. Eine eigenständige Fassung taucht deshalb nicht mehr auf. MPEG-3 ist im Übrigen in diesem Kontext nicht identisch mit der Audiokodierung MP3, deren korrekte Bezeichnung eigentlich MPEG-1 Audio Layer 3 lauten müsste. Über die dargestellten Formate hinaus gibt es unter den Bezeichnungen MPEG-7, -21 und -A noch weitere Projekte, die sich jedoch nicht unmittelbar mit der Kompression von Audio- und Videodaten beschäftigen. 6.3 Aufbau vom MPEG Der MPEG-Videostrom ist in sechs Schichten aufgebaut. Diese Schichten werden auch als Layer bezeichnet. - Sequenz Layer: GOP Layer: Picture Layer: Slice Layer: dieser steuert die Zwischenspeicherung der Bilddaten hier werden die Frames übertragen enthält jeweils ein Einzelbild hier werden die Makroblöcke mit passender Skalierung gespeichert Makroblock Layer: enthält die Makroblöcke bestehend aus unterschiedlich vielen Einzelblöcken. Block Layer: beinhaltet die 8x8, also 64-Pixel großen Einzelblöcke Abbildung 23: Aufbau von MPEG Der 8x8-Pixel Block ist die Eingabe in die diskrete Cosinus-Transformation (sowie bei JPEG), wobei vier Blöcke jeweils zu einem Makroblock zusammengefasst wird, der die Ergebnisse der DCT in drei Matrizen speichert. Otto Liebminger 14.05.2016 Seite 41 von 49 Datenkompressionen Eine Matrize für Helligkeit und zwei für die Farben. Wie man erkennt, wird auch bei MPEG das RGB-Farbmodell auf die YUV-Darstellung reduziert. Dieser besagte Makroblock bildet dann als kleinste Einheit im MPEG-Strom die Grundlage für die Bewegungscodierung. Abbildung 24: 8x8 Pixel Codierung Der nun so entstandene Videostrom wird, zusammen mit dem Audiodatenstrom, Elementarstrom genannt. Die zwei Elementarströme werden dann über ein Multiplexverfahren zum fertigen MPEG-Strom zusammengefasst. Abbildung 25: MPEG-Codierung - Blockschaltbild Otto Liebminger 14.05.2016 Seite 42 von 49 Datenkompressionen So komprimiert MPEG Zwischen aufeinanderfolgenden Bildern eines Filmes besteht eine sehr hohe Ähnlichkeit, auch Korrelation genannt. Daher kann man bei Videodaten eine deutlich höhere Kompression als bei JPEG erzielen. Weiters kann noch die Tatsache, dass bei einem Film oft Bildpunkte durch gemeinsame Bewegungen oder Kameraschwenks korrelieren, zur Komprimierung genützt werden. Der MPEG-Algorithmus basiert im wesentlichen auf den gleichen Grundtechniken wie bei JPEG mit YCrCb-Farbraum, 8x8 DCT und Quantisierung. Jedoch wird bei MPEG nur der Huffman-Algorithmus mit fester Codeworttabelle verwendet und nicht wie bei JPEG dem arithmetischen Coder (Seriellisierung). Weiters ist es bei MPEG möglich, pro 8x8 Block zwischen mehreren Quantisierungsstufen zu wählen. Diese variable Quantisierung wird „adaptive Quantisation „ genannt. Durch diese variable Quantisierung ist eine deutlich höhere Komprimierung als bei JPEG möglich. Der Nachteil ist jedoch, dass der Encoder für die adaptive Quantisierung deutlich komplexer ist. 6.3.1 Es gibt 3 Arten von Bildern Um das oben beschriebene Verfahren realisieren zu können, müssen die einzelnen Bilder der Videosequenz in bestimmte Typen von Einzelbildern (Frames) zerlegt werden. Normalerweise werden die einzelnen Szenen in 9 bis 15 Frames zerlegt. Das Anfangs und Ende einer Szene ist immer ein I-Frame. Die Bildfolge zwischen Anfangs- und Endframe wird Group of Picture (GOP) genannt, wobei die verschiedenen Frametypen unterschiedliche Aufgaben und Eigenschaften haben. Abbildung 26: Zusammensetzung der Frames Otto Liebminger 14.05.2016 Seite 43 von 49 Datenkompressionen 6.3.2 Aufgaben und Eigenschaften der unterschiedlichen Frame-Typen I-Frame: steht für Intra Coded Picture I-Frames sind Einzelbilder, die völlig eigenständig codiert sind. Als Kompressionsverfahren wird hier im Normalfall die JPEG-Kompression verwendet, welches den Speicherplatz im Vergleich zum unkomprimierten Bild schon deutlich verringert. Bei den I_Frames wird allerdings die Eigenschaft der ähnlichen Bilder nicht genutzt, sondern sie bilden vielmehr die Grundlage um bei den anderen Frames die Ähnlichkeit ausnutzen zu können. Deshalb brauchen die I-Frames den meisten Speicherplatz. Sie dienen der Aktualisierung des Ausgabepuffers. P-Frame: steht für Predictted Coded Picture Der P-Frame wird aus Vorhersagen, die bezüglich des vorangegangenen I- oder PFrame gemacht werden erstellt. Dabei werden nur die Unterschiede zur Vorlage codiert. Somit wird der Speicherplatzbedarf der P-Frames auf ca. ein Drittel reduziert. Wird ein Fehler bei der Vorhersage gemacht, setzt sich dieser Fehler bis zum nächsten I-Frame fort und somit entstehen Bildstörungen. B-Frame: steht für Bidirectionally Predictted Coded Picture B-Frames sind die Erweiterungen zu den P-Frames. Bei den B-Frames wird auf den vorhergegangenen und den nachfolgenden I- oder PFrames referenziert. So wird also eine Zwischenbild erzeugt, das noch weniger Speicherplatz benötigt, allerdings auch so wenig Bildinformation beinhaltet, dass BFrames niemals als Referenzbilder für irgendein anderes Frame benutzt werden können. Zusätzlich gibt es noch bei MPEG-1 die sogenannten D-Frames. Diese D-Frames enthalten nur niederfrequente Bildanteile und werden für schnellen Vor- und Rücklauf benötigt. Diese Frames haben aber für die eigentliche Videosequenz keine Bedeutung und treten daher auch in keiner GOP auf. Die Länge der GOP hängt allein von der Codierung ab. Die Standardeinstellung liegt bei 15 Frames pro GOP, allerdings ist für bessere Videoqualität auch die Möglichkeit vorhanden, die GOP auf 9 oder weniger Einzelframes zu reduzieren. Dies fordert jedoch mehr Speicherplatz, da mehr I-Frames notwendig sind. Ebenso wird die erforderliche Rechenleistung erhöht. hoch <------------------------------------------------- niedrig Informationsgehalt | I - Bilder | | P - Bilder | | B - Bilder | Kompressionsgrad niedrig -------------------------------------------------> hoch Otto Liebminger 14.05.2016 Seite 44 von 49 Datenkompressionen 6.4 MPEG-1 Titel: Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s Die Entwicklung von MPEG-1 hat 1988 begonnen und ist seit Anfang der 90er-Jahre in einer ersten Generation von Produkten zur Anwendung gekommen. Schwerpunkt von MPEG-1 ist die Kodierung bei Datentransferraten, die durch die damals gebräuchlichen Parameter für die CD-ROM (Video) und ISDN (Audio) vorgegeben waren. Mit Ausnahme der MP3-Audio-Kodierung ist MPEG-1 mittlerweile von untergeordneter Bedeutung, da die zugrunde liegenden Annahmen über maximale Datentransferrate, Speichervolumen der Datenträger und Zwischenspeicherkapazität überholt sind. Mittlerweile lassen sich auch die wesentlich anspruchsvolleren MPEG-2-Datenströme softwareseitig auf Standard-PCs dekodieren. Das Datenformat wurde so ausgelegt, dass die normale TV-Auflösung von 720x576 auf ein Viertel der Bildpunkte, also 352x288 Pixel reduziert wird. Es wurde die gleiche Datenrate wie bei Audio-CD’s, also 1,5MBit/s festgelegt. Bei MPEG-1 ist daher keine variable Bitrate möglich.Dadurch können maximal 396 Makroblöcke gespeichert werden. Beim Audiostrom gibt es die Möglichkeit den MPEG-1 Layer III, kurz MP3, also mono oder stereo, mit einer Frequenz von 32-48kHz und einee Datenrate zwischen 64 bis 192 Kbit/s zu speichern. Ein Problem bei MPEG-1 ist die extreme Komprimierung, durch die die Bildqualität sichtlich leidet. Besonders bei schnellen Bewegungsabläufen, wie zum Beispiel bei Aktionsszenen , fällt auf, dass die Bewegungsvoraussage bei der Erstellung der PFrames oft nicht zutrifft und so der Bildfehler bis zum nächsten I-Frame mitgeschleppt wird. Eine weitere Fehlerquelle ist die Aufteilung der Bilder in 8x8 Pixel Blöcke und deren Umrechnung mit Hilfe der DCT. Das Bild wirkt auf der einen Seite oft eckig und auf der anderen Seite wieder verwaschen. Dadurch sind die Kanten oft nicht klar und es können Artefakte im Bild auftreten. Ein weiterer Nachteil ist, dass dunkle Bilder auf Grund der Helligkeitsanpassung oft zu dunkel werden und nichts mehr erkennbar ist. Ebenso werden sehr hell Bilder oft Überbelichtet. Ebenso fehlt durch die fest vorgegebene Auflösung und Datenrate die Möglichkeit professioneller Videobearbeitung. Aufgrund dieser Nachteile wurde der MPEG-2 Standard entwickelt, welcher eine weitaus bessere Qualität liefert. Anwendungen MPEG-1: MP3-Player (MPEG-1 Audio Layer 3) Die reine Layer-3-Audio-Kodierung von MPEG-1 stellt die bis heute erfolgreichste Anwendung dar. Mittlerweile greifen auch hier Erweiterungen und Weiterentwicklungen (z.B. AAC). Audio On Demand (MPEG-1 Audio Layer 3) Otto Liebminger 14.05.2016 Seite 45 von 49 Datenkompressionen Die ersten Projekte für Audio-On-Demand-Services haben mit zwei parallelen ISDNLeitungen gearbeitet. Dadurch ließ sich eine Versorgung der Kunden in Echtzeit realisieren. Diese Rahmenparameter lieferten u.a. die maßgeblichen Grenzwerte bei der Dimensionierung des dritten Audio-Layers. DCC (Digital Compact Cassette; MPEG-1 Audio Layer 2) Die DCC sollte als digitales Nachfolgesystem zur analogen Kassette dienen. Das lineare Bandsystem arbeitete mit Audio Layer 2 und war bei geeigneter Enkodierung in der Lage CD-ähnliche Qualität zu erreichen. Im Gegensatz zu dem damaligen Konkurrenzsystem MiniDisc (Sony), das anstelle von MPEG-1 ein ATRAC-Format einsetzt, konnte sich die DCC nicht am Markt durchsetzen. CD-I FMV (CD-Interactive Full Motion Video) Die CD-I, ein für Heimanwendungen vorgesehener interaktiver CD-Player mit multimedialen Funktionen, ist eine der ersten direkten Anwendungen von MPEG-1Video gewesen. Das CD-I-System basierte auf der einfachen Standardgeschwindigkeit für die Audio-Wiedergabe (75 Frames/s * 2048 Byte/Frame = 153.600 KByte/s bzw. 2324 Byte/Frame = 174.300 Byte/s) und hat damit die Rahmenbedingungen für die maximale Überertragungsrate von MPEG-1 gesetzt. Das CD-I-System konnte sich nicht am Markt etablieren. CD-ROM-XA-Video Um eine ausreichende Rechenkapazität mit der geforderten Echtzeitfähigkeit zur Verfügung zu stellen sind spezielle Lösungen mit separaten Hardware-Dekodern erschienen. Aufgrund des Preises und der begrenzten Qualität von MPEG-1 erreichten diese Produkte keine größere Verbreitung. Für die Vorgaben bezüglich der Datentransferrate gelten die gleichen Aussage wie bei der CD-I erwähnt. 6.5 MPEG-2 Titel: Generic coding of moving pictures and associated audio information MPEG-2 orientiert sich an einer qualitativ besseren Ausnutzung der Ressourcen und führt Mehrkanal-Verfahren für die Audio-Kodierung ein. Es sind im Vergleich zu MPEG-1 wesentlich größere Datentransferraten und damit verbunden eine erheblich bessere Bildqualität möglich. Außerdem sind weiterreichende Funktionen für die Skalierung von Auflösung, Bildwiederholungsrate und Quantisierung spezifiziert. Die technische Grundlage wurde beim Übergang von MPEG-1 auf MPEG-2 im Prinzip nicht verändert. Als einzige Neuigkeit in diesem Bereich wurde die Möglichkeit „Szenen“ auch als Halbbildfolge zu codieren eingeführt. Die größte Verbesserung bei MPEG-2 lag schlicht und einfach an der um längen größeren Flexibilität. Statt der fest vorgegebenen Bitrate von 1,5MBit/s ist hier eine variable Bitrate von 4Mbit/s bis maximal 100Mbit/s möglich. Was einer Auflösung zwischen 352x288 und 1920x1152 Pixel erlaubt, welche bei der Codierung frei skalierbar ist. Otto Liebminger 14.05.2016 Seite 46 von 49 Datenkompressionen Durch die variable Bitrate ist eine zusätzliche Kompression möglich, da sie den Anforderungen des Bildes angepasst werden kann. Das folgende Bild veranschaulicht sehr gut die Anforderungen des Bildes und dazu den Unterschied zwischen konstanter und variabler Bitrate. Abbildung 27: Feste und variable Bitrate Somit kann also bei einfachen Bildern die Datenmenge verringert werden. Der dadurch gewonnene Speicherplatz kann für komplexere Bilder verwendet werden. Zusätzlich kann der Audiostrom Fünf-Kanal-Surround-Informationen sowie verschiedene Datenraten und Kompressionsformate wie MPEG Audio Layer I oder III mit zusätzlicher AC3-Codierung enthalten. MPEG-2 kommt für die S-Video CD, Video-DVD, digitale Videobroadcasting und Videoservern von Fernsehanstalten zur Anwendung. Die bekannteste Applikation ist die DVD-Video, die in allen Versionen mit MPEG-2 kodierten Videodaten arbeitet. Bei der Audio-Kodierung ist, zumindest von der Spezifikation her, sowohl MPEG, als auch das AC-3-Format der Firma Dolby vorgesehen. 6.6 MPEG-4 Titel: Coding of audio-visual objects Mit dem neuen Format MPEG-4 wurden ganz neue Ziele gesetzt. Während bei MPEG-1 und MPEG-2 das Ziel der Entwicklung allein bei der effektiven Kompression und Speicherung von Videodaten lag, betritt MPEG-4 ein völlig neues Aufgabengebiet. Mit MPEG-4 sind unzählige neue Anwendungsgebiet abgedeckt, wie zum Beispiel Internet Multimedia, interaktive Videospiele, Videokonferenzen, Videotelefonie, netzwerkbasierende Datendienste oder drahtloses Multimedia. MPEG-4 fokussiert vornehmlich auf komplexen Verfahren, die zur Erlangung von besonders niedrigen Kompressionsraten erforderlich ist. Damit werden insbesondere Echtzeitbedingungen bei reduzierten Systemressourcen angesprochen. Otto Liebminger 14.05.2016 Seite 47 von 49 Datenkompressionen 7 Literaturverzeichnis /1/ http://www.fh-jena.de/contrib/fb/et/personal/ansorg/ftp/kodierung/sld019.htm /2/ http://www-ra.informatik.uni-tuebingen.de/lehre/ws03/pro_internet_ausarbeitung/07_MPEG_Datenformate_fuer_Videosignal e.pdf /3/ http://www.unibw-muenchen.de/campus/RZ/RZN/AS/mm/Benutzeranleitungen/mm-mpeg.pdf /4/ http://www.minet.uni-jena.de/~sack/WS0304/seminar/arbeiten/heimann/pres.pdf /5/ http://www.medizin.uni-tuebingen.de/medienabteilung/downloads/Wof%FCr%20steht%20MPEG.pdf /6/ http://www.informatik.uni-mannheim.de/pi4/lectures/ws0102/multimedia/mm2b-1.pdf /7/ http://www6.in.tum.de/lehre/seminare/ps_ws0203/dzugan.pdf /8/ http://tech-www.informatik.uni-hamburg.de/lehre/ss2004/vorlesungen/medientechnik/09-mpeg.pdf [1] Abel, J. "Improvements to the Burrows-Wheeler Compression Algorithm: After BWT Stages"; Vorabdruck, eingereicht an das ACM im März 2003, http://www.datacompression.info/JuergenAbel/Preprints/Preprint_After_BWT_Stages.pdf; 2003. [2] Arnavut, Z., Magliveras, S.S.; "Block sorting and compression"; Proceedings of the IEEE Data Compression Conference; 1997. [3] Balkenhol, B., Kurtz, S.; "Universal Data Compression Based on the Burrows-Wheeler Transformation: Theory and Practice"; IEEE Transactions on Computers; 49(10); 2000. [4] Balkenhol, B., Shtarkov, Y.M.; "One attempt of a compression algorithm using the BWT"; Discrete Structures in Mathematics, Mathematische Fakultät, Universität Bielefeld; 1999. [5] Bell, T.C., Witten, I.H., Cleary, J.G.; Calgary Corpus: "Modeling for text compression"; Computing Surveys 21(4): 557-591; 1989. [6] Bodden, E., Clasen, M., Kneis J.; "Arithmetische Kodierung"; Lehrstuhl für Informatik IV der RWTH Aachen, 2001. [7] Burrows, M., Wheeler, D.J.; "A block-sorting lossless data compression algorithm"; Technical report, Digital Equipment Corporation, Palo Alto, California; 1994. [8] Deorowicz, S.; "Improvements to Burrows-Wheeler compression algorithm"; Software Practice and Experience, 30(13), 1465-1483;2000. [9] Deorowicz, S.; "Second step algorithms in the Burrows-Wheeler compression algorithm", Software Practice and Experience, 32(4),99-111, 2002. [10] Fenwick, P.M.; "Block-Sorting Text Compression - Final Report"; The University of Auckland, New Zealand, Technical Report130; 1996. [11] Gailly, J.L., Adler, M.; "The GZIP program", Version 1.2.4; 1993. [12] Itoh, H., Tanaka, H.; "An Efficient Method for Construction of Suffix Arrays"; IPSJ Transactions on Databases, Abstract Vol.41,No. SIG01 - 004; 1999. [13] Kao, T.-H; "Improving Suffix-Array Construction Algorithms with Applications". Master's thesis, Department of Computer Science,Gunma University, Japan; 2001. [14] Kurtz, S.; "Reducing the Space Requirement of Suffix Trees"; Report 98-03, Technische Fakultät, Universität Bielefeld; 1998. [15] Larsson, N.J. "Structures of String Matching and Data Compression". PhD thesis, Department of Computer Science, Lund University, Schweden; 1999. [16] Lempel, A., Ziv, J.; "A Universal Algorithm for Sequential Data Compression"; IEEE Transactions on Information Theory,23(3):337-343, 1977. Otto Liebminger 14.05.2016 Seite 48 von 49 Datenkompressionen [17] Moffat, A.; "Implementing the PPM data compression scheme"; IEEE Transactions on Communications, 38,1917-1921; 1990. [18] Nelson, M.; "Data compression with the Burrows-Wheeler transform"; Dr. Dobbs' Journal; September 1996. [19] Sadakane, K.; "Improvements of Speed and Performance of Data Compression Based on Dictionary and Context Similarity"; Master's thesis, Department of Information Science, Faculty of Science, University of Tokyo, Japan; 1997. [20] Seward, J.; "The BZIP2 program 1.0.2"; http://sources.redhat.com/bzip2; 2001. [21] Shkarin, D; "PPM: One step to practicality"; Proceedings of the IEEE Data Compression Conference 2002, Snowbird, Utah, Storer, J.A. and Cohn, M. Eds. 202-211; 2002. [22] Willems, F.M.J., Shtarkov, Y.M., Tjalkens, T.J.; "The Context Tree Weighting Method: Basic Properties"; IEEE Transactions on Information Theory, Vol. IT-41 (3), 653-664; 1995. [23] Witten, I., Neal, R., Cleary, J.; "Arithmetic Coding for Data Compression", Communication of the ACM, 30(6) 520 -540; 1987. Unterlagen von Prof. Dr. Keller – Labor 2004 TGM Wien Otto Liebminger 14.05.2016 Seite 49 von 49