Run Length Encoded


Run Length Encoded

Die Lauflängenkodierung (engl. Run-length encoding, kurz RLE) ist ein sehr einfacher verlustfreier Kompressionsalgorithmus für digitale Daten. Sie ist besonders gut geeignet, Wiederholungen oder Sequenzen von gleichen Werten verkürzt darzustellen. Liegt eine Wiederholung vor, wird die Anzahl der Wiederholungen sowie der wiederholte Wert gespeichert.

Um den Beginn einer Wiederholung zu kennzeichnen, werden sogenannte Marker-Bytes eingesetzt. Das sind Bytes, die nicht im Datenstrom vorkommen. Der Offset ist die Mindestwiederholrate, ab der kodiert wird. Bei einem Offset von 4 wird ab einer Wiederholung von 4 lauflängenkodiert. Dabei ergibt sich der Wert folgendermaßen: AnzahlderWiederholungenOffset = Wert. FF FF FF FF FF wird also zu AA 1 FF.

Beispiel

Als Beispiel sei ein Schwarz-Weiß-Bildschirm angenommen, auf dem sich schwarzer Text auf weißem Hintergrund befindet. Hier sind lange Folgen von weißen Punkten bzw. Pixeln nur selten durch einzelne schwarze Punkte unterbrochen. Bezeichnet man weiße Punkte mit "W" und schwarze mit "S", so ergibt sich z.B. in einer einzelnen Bildzeile die folgende Information:

WWWWWWWWWWSWWWWWWWWWWSSS

Nach Anwendung der Lauflängenkodierung erhält man:

10W1S10W3S

Dieses Beispiel dient lediglich der Veranschaulichung der Arbeitsweise des Algorithmus. In der Realität arbeitet man aber nicht mit Zeichen, sondern mit Bytes. Diese können durch zweistellige Hexadezimalzahlen beschrieben werden.
Wählt man für Weiß 00 und für Schwarz FF, so ergibt sich folgendes Bitmuster:

00000000000000000000FF00000000000000000000FFFFFF

Dies muss interpretiert werden als eine Folge von zehn weißen, einem schwarzen, gefolgt von weiteren zehn weißen und drei schwarzen Punkten. Die ursprünglich verwendeten 24 Buchstaben wurden somit in acht Buchstaben komprimiert, was einer Kompression auf ca. 33% der ursprünglichen Größe entspricht.

Als Marker-Byte kann man das nicht im Datenstrom enthaltene Byte AA verwenden. Lauflängenkodiert und mit einem Offset von 4, sieht er dann folgendermaßen aus:

AA600FFAA600FFFFFF

Bei einer ungünstigen Verteilung der Werte kann allerdings auch eine Vergrößerung der Datenmenge vorkommen. Dies ist bspw. bei folgenden Zahlenwerten der Fall:

5656

Da man hier nicht mehr zwischen den ursprünglichen Daten und dem Multiplikator unterscheiden kann, muss man selbst einzeln vorkommende Werte kodieren. Ansonsten würde der Algorithmus 56 zu 66666 expandieren. Die Kodierung der obigen Folge wird also wie folgt vorgenommen:

15161516

Vor jede ursprüngliche Zahl wird die Anzahl *1* ergänzt. Der längenkodierte Wert ist somit doppelt so lang wie der ursprüngliche.

Dieses Problem lässt sich vermeiden, indem bei Multiplikatoren größer 3 ein Kontrollzeichen eingefügt wird:

WSWSWWWWWWWWWSSSSSSWSWWW
WSWSX9WX6SWSWWW

Hier kommt es aber zum Konflikt, wenn im Datensatz das Kontrollzeichen als Inhalt auftaucht. Lösen kann man das, wenn man ein einzelnes X als XX komprimiert. Das Kontrollzeichen-X ist hervorgehoben.

WSSSSSWWWWWWXWWSWSSSSSSSSSXXXXXWSSW
WX5SX6WXXWWSWX9SX5XWSSW

Es gibt weitere Möglichkeiten, ein solches Aufblähen der Daten zu verringern, ganz vermeiden lässt sich dieser Effekt jedoch nicht.

Praktische Anwendung

Die unterschiedlichen Kompressionsprogramme speichern die komprimierte Datenfolge im Gegensatz zum obigen Beispiel in binärer Form ab, die teilweise sehr unterschiedlich sein kann. Einige Anwendungen speichern auch zusätzlich Folgen von mehreren Datenwerten, machen also aus -ABC-ABC-ABC-ABC- die gekürzte Darstellung 4[-ABC]-.

Geeignet ist die Lauflängenkodierung also da, wo es lange Folgen des gleichen Wertes gibt. Dies ist sehr häufig bei älteren Icons oder Clip-Art-Bildern der Fall, die meist nur mit wenigen Farben gezeichnet sind.

Bekannte Dateiformate, die die Lauflängenkodierung anwenden, sind daher viele ältere Grafikformate wie beispielsweise Windows Bitmap, GEM Image, Targa oder PCX.

Unter Microsoft Windows wird die Dateiendung .RLE üblicherweise für RLE-komprimierte BMP-Bilder verwendet, die Dateiendung .BMP meist für unkomprimierte Bilder.

Siehe auch


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Run-length encoding — (RLE) is a very simple form of data compression in which runs of data (that is, sequences in which the same data value occurs in many consecutive data elements) are stored as a single data value and count, rather than as the original run. This is …   Wikipedia

  • Run length limited — or RLL coding is a technique that is used to store data on recordable media. Specifically, RLL prevents long stretches of repeated bits from causing the signal recorded on media to not change for an excessive period, by modulating the data. RLL… …   Wikipedia

  • Minimum message length — (MML) is a formal information theory restatement of Occam s Razor: even when models are not equal in goodness of fit accuracy to the observed data, the one generating the shortest overall message is more likely to be correct (where the message… …   Wikipedia

  • Minimum description length — The minimum description length (MDL) principle is a formalization of Occam s Razor in which the best hypothesis for a given set of data is the one that leads to the best compression of the data. MDL was introduced by Jorma Rissanen in 1978. It is …   Wikipedia

  • RLE — Run Length Encoding (Computing » Networking) Run Length Encoding (Computing » General) * Research Laboratory of Electronics at MIT (Academic & Science » Electronics) * Research Laboratory of Electronics at MIT (Academic & Science » Universities)… …   Abbreviations dictionary

  • List of file formats — This is an incomplete list, which may never be able to satisfy particular standards for completeness. You can help by expanding it with reliably sourced entries. See also: List of file formats (alphabetical) This is a list of file formats… …   Wikipedia

  • Liste der Dateiendungen/R — In dieser Liste sind übliche Dateinamenserweiterungen aufgelistet, die in einigen Betriebssystemen (wie zum Beispiel Microsoft Windows) zur Unterscheidung von Dateiformaten verwendet werden. In anderen Betriebssystemen erfolgt die… …   Deutsch Wikipedia

  • RLE — abbr. Run Length Encoded comp. abbr. Run Length Encoded …   United dictionary of abbreviations and acronyms

  • Wavelet transform — An example of the 2D discrete wavelet transform that is used in JPEG2000. In mathematics, a wavelet series is a representation of a square integrable (real or complex valued) function by a certain orthonormal series generated by a wavelet …   Wikipedia

  • Liste De Sigles — {{{image}}} Sigles d une seule lettre Sigles de deux lettres Sigles de trois lettres AAA à DZZ EAA à HZZ IAA à LZZ MAA à PZZ QAA à TZZ UAA à XZZ YAA à ZZZ …   Wikipédia en Français