Run-length encoding

Run-length encoding

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 encoding — Saltar a navegación, búsqueda La compresión RLE o Run length encoding es una forma muy simple de compresión de datos en la que secuencias de datos con el mismo valor consecutivas son almacenadas como un único valor más su recuento. Esto es más… …   Wikipedia Español

  • Run-length encoding — Le run length encoding, appelé en français le codage par plages, est un algorithme de compression de données en informatique. Le système s applique essentiellement à des documents scannés en noir et blanc : au lieu de coder un bit par point …   Wikipédia en Français

  • Run-length encoding — La compresión RLE o Run lenght enconding es una forma muy simple de compresión de datos en la que secuencias de datos con el mismo valor son almacenadas como un único valor más su recuento. Esto es más útil en datos que contienen muchas de estas… …   Enciclopedia Universal

  • run-length encoding — noun A simple data compression scheme in which sequences of the same item are replaced by one such item and a count (so for example the text BBBBB is stored as a single B with count of 5) …   Wiktionary

  • Run-length encoding —   Refer instead to Data compression …   International financial encyclopaedia

  • 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

  • Run-length-kodierung — 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 …   Deutsch Wikipedia

  • 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 …   Deutsch Wikipedia

  • advanced run-length limited encoding —    Abbreviated ARLL. A technique used to store information on a hard disk that increases the capacity of runlength limited (RLL) storage by more than 25 percent and increases the data transfer rate to 9Mbps.    See also RLL encoding …   Dictionary of networking

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”