https://informatik.mygymer.chef2021005.codierung-kompression/005.kompression.html#kompression
Am Beispiel der Codierung des Textes «MISSISSIPPI» soll der Huffman-Algorithmus erläutert werden.
Zuerst zählt man, wie oft jedes Zeichen im Text vorkommt und erstellt eine Häufigkeitstabelle.
Zeichen
M
P
I
S
Häuffigkeit
1
Nun geht es darum, einen Codierungsbaum zu erstellen. Die Häufigkeiten der Buchstaben bilden je einen Knoten. Die Häufigkeit steht im Knoten, der Buchstaben darunter. Die Knoten werden nach aufsteigender Häufigkeit sortiert:
Knotenmit Zeichenhäufigkeit
Nun werden die zwei Knoten mit den kleinsten Häufigkeiten an einen neuen Knoten angehängt. Der neue Knoten enthält die summierte Häufigkeit der ursprünglichen Knoten:
Das wird wiederholt, bis alle Knoten miteinander verbunden sind. Wenn zwei Knoten die gleiche Häufigkeit haben, spielt es keine Rolle, welcher gewählt wird:
Wichtig ist, dass nach jedem Schritt die Knoten wieder neu sortiert werden.
Wenn der Baum fertig ist, werden alle Äste, welche nach links zeigen, mit einer «0» markiert, alle die nach rechts zeigen mit einer «1».
Nun kann eine Codierungstabelle erstellt werden, indem der Code für jedes Zeichen vom Baum abgelesen wird:
Bei der Kompression wird versucht, Daten effizienter abzuspeichern, so dass weniger Speicherplatz belegt wird. Gerade beim Übertragen von Daten – z.B. Streamen eines Films, oder grosser Dateien– ist dies enorm wichtig. Wir unterscheiden zwei grundsätzlich unterschiedliche Arten von Kompression:
Bei der verlustfreien Kompression, können die Daten vollständig rekonstruiert werden. D.h. es handelt sich – wie bei der Codierung – um eine eindeutige und umkehrbare Abbildung.
Anwendung
Überall dort, wo kein Verlust passieren darf – ein Programm läuft nicht mehr, wenn Befehle fehlen!Bilder, Audio und Video während der Produktion und Bearbeitung – sonst würde bei jedem Speichern (also Codieren) die Qualität abnehmen.
Beispiele
flac – Sound
zip, rar – Dateien
gif, png, raw, psd, xcf – Grafik
Hier werden beim Speichern Daten entfernt. Dadurch kann entsprechend viel Speicher gewonnen werden, allerdings lassen sich die Original-Daten nur noch teilweise rekonstruieren. Es wird versucht vor allem nicht wichtige Daten wegzulassen.
Anwendung
beim Fertigstellen von Medien, also wenn diese nicht mehr weiter bearbeitet werden sollen
Beispiele
mp3 – Sound
jpg – Grafik
mp4, avi, mov – Video
David Huffman hat 1952 ein Verfahren entwickelt, mit welchem Zeichen platzsparender codiert werden können. Seine Idee ist, dass Zeichen, welche häufig im Text vorkommen, einen kürzeren Code erhalten, als Zeichen, welche selten im Text vorkommen.
Codebaum
Ein Codebaum ist eine Struktur mit einem Startknoten. Von diesem aus geht es entweder nach links oder rechts unten weiter. Eine 0 im Code bedeutet nach links gehen, eine 1 nach rechts gehen. Wenn ein Knoten mit einem Buchstaben erreicht wird, hat man ein Zeichen decodiert, man beginnt wieder von vorne.
Wie wir bereits gelernt haben, können Bilder als Raster bestehend aus einzelnen Pixel gespeichert werden. Das Bild unten besteht aus 195 Pixel in 13 Zeilen und 15 Spalten. Dieses Bild besitzt zwei Farbwerte, hell oder dunkel. Ein Pixel kann in diesem Fall mit einem Bit, einer Eins oder einer Null gespeichert werden. Das Bild kann durch das folgende Bitmuster beschrieben werden:
15,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,
1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,
1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,
1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,
1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,
1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,
1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,
1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,
1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,
1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,
1,1,1,0,0,0,0,0,0,0,0,1,1,1,1
Eine kompaktere Art der Codierung ist die Lauflängen-Methode. Dabei wird gezählt wie viele
Pixel der gleichen Farbe aufeinander folgen. Das obere Bild beginnt mit 16 dunklen Pixel, dann folgen 12 helle, danach wieder 4 dunkle, usw. Eine Lauflängen Codierung des obigen Bildes sieht wie folgt aus:
15,0,16,12,4,10,6,8,7,8,8,6,10,4,12,2,13,2,13,2,13,2,13,2,10,8,4
Zur Decodierung des Codes und für das Zeichnen des Bildes wird die Anzahl Spalten benötigt, welche das Bild hat. Dies ist der erste Wert der hier gewählten Lauflängen Codierung danach folgen abwechslungsweise die Anzahl heller und dunkler Pixel. In diesem Fall beginnt es mit 0 hellen Pixel, dann 16 dunklen Pixel, dann 12 hellen, u.s.w.
Decodierenund überprüfe dein Bild.
David Huffman hat 1952 ein Verfahren entwickelt, mit welchem Zeichen platzsparender codiert werden können. Seine Idee ist, dass Zeichen, welche häufig im Text vorkommen, einen kürzeren Code erhalten, als Zeichen, welche selten im Text vorkommen.
Ein Codebaum ist eine Struktur mit einem Startknoten. Von diesem aus geht es entweder nach links oder rechts unten weiter. Eine 0 im Code bedeutet nach links gehen, eine 1 nach rechts gehen. Wenn ein Knoten mit einem Buchstaben erreicht wird, hat man ein Zeichen decodiert, man beginnt wieder von vorne.
Anna
0111101011000110110101
Sie nutzen einen Browser mit dem tutory.de nicht einwandfrei funktioniert. Bitte aktualisieren Sie Ihren Browser.
Sie verwenden eine ältere Version Ihres Browsers. Es ist möglich, dass tutory.de mit dieser Version nicht einwandfrei funktioniert. Um tutory.de optimal nutzen zu können, aktualisieren Sie bitte Ihren Browser oder installieren Sie einen dieser kostenlosen Browser: