Varianten

Zur Erstellung des Codebaums benötigt man eine bestimmte statistische Zeichenverteilung. Aus der Frage nach der Ermittlung dieser Verteilung ergeben sich die folgenden Varianten:

  • Statische Verteilung
  • Dynamische Verteilung
  • Adaptive Verteilung
Um die Zeichenverteilung korrekt zu ermitteln, benötigt man Einsicht in die gesamten Daten, da die Verteilung zu Beginn des Kodiervorganges noch nicht bekannt ist und im Normalfall auch nicht über den gesamten Datenbestand hinweg gleich bleibt.

Statische Kodierung
Bei dieser Art wird ein fest vorgegebener Baum verwendet, der nicht auf die Besonderheiten der vorliegenden Daten eingeht, sondern völlig unabhängig davon auf einer Standardanalyse beruht (z.B. Häufigkeitsverteilung von Buchstaben in einer bestimmten Sprache). Es gibt also vordefinierte Bäume für verschiedene Einsatzbereiche wie z.B. englischsprachige Texte. (Hier kennt man die Buchstaben als Buchstaben, was beim Fax nicht der Fall ist).
Wenn die Daten der vom Baum angenommenen Häufigkeitsverteilung in etwa entsprechen, wird relativ gute Effizienz erreicht, der Kodierbaum wird im Encoder und Decoder gespeichert und muss nicht mit den Daten mitgeliefert werden. Weiters ist keine Laufzeitgenerierung des Baumes nötig. Allerdings sinkt die Kodiereffizienz stark, wenn die Daten nicht der angenommenen Häufigkeitsverteilung entsprechen.

Dynamische Kodierung
Hier wird nicht, wie bei der statischen Kodierung, ein fest vorgegebener Baum verwendet, sondern vor Beginn der Kodierung eine Häufigkeitsanalyse durchgeführt, aus der sich die Codes ergeben. Der Kodierbaum ist daher wesentlich besser an die vorliegenden Daten angepasst als eine standardisierte Tabelle, allerdings muss die Tabelle mit den Daten mitgeliefert werden, da sonst keine Dekodierung erfolgen kann. Weiters kann es sein, dass, wenn die dynamische Kodierung über die gesamten Quelldaten hinweg angewendet wird, und die Häufigkeiten nicht über alle Daten hinweg annähernd gleich bleibend sind, der Codebaum in späteren Segmenten nicht mehr der realen Häufigkeitsverteilung entspricht. Entgegenwirken kann man diesem Problem mit Hilfe einer Segmentierung der Daten, was aber wiederum mehr Aufwand in der Header-Bildung bedeutet.

Adaptive Kodierung
Diese Form der Kodierung verändert den Codebaum entsprechend der bereits encodierten Daten. Ausgegangen wird entweder von einem Standard- oder einem leeren Baum, wobei immer das letzte Zeichen in die Datengrundlage für die Weiterverarbeitung mit einbezogen wird. So wird die Kodierung kontinuierlich an die gegebenen Daten angepasst. Das Verfahren eignet sich allerdings nicht für kleinere Datenmengen, da hier, wie auch am Beginn der Kodierung die erreichte Effizienz sehr gering ist.

Nähere Informationen zu Grafikdateiformaten findet man unter folgenden Links:

Ergänzende und vertiefende Module