Difference between revisions of "Exercise 2.12: Run–Length Coding and Run–Length Limited Coding"
m (Text replacement - "„" to """) |
m (Guenter moved page Aufgabe 2.12: Run–Length Coding und RLLC to Exercise 2.12: Run–Length Coding und Run–Length Limited Coding) |
(No difference)
|
Revision as of 16:45, 5 July 2021
Wir betrachten eine Binärquelle mit dem Symbolvorrat A und B, wobei B allerdings nur sehr selten auftritt.
- Ohne Quellencodierung würde man pro Quellensymbol genau ein Bit benötigen, und dementsprechend würde bei einer Quellensymbolfolge der Länge N für die Codebitfolge ebenfalls NBit=N gelten.
- Entropiecodierung macht hier ohne weitere Maßnahme (Beispiel: Zusammenfassen mehrerer Symbole zu einem Tupel) wegen der ungünstigen Symbolwahrscheinlichkeiten wenig Sinn.
- Abhilfe schafft Run-Length Coding (RLC), das unter dem genannten Link im Theorieteil beschrieben ist. Zum Beispiel ergibt sich für die Symbolfolge ABAABAAAABBAAB... die entsprechende Ausgabe von Run–Lenght Coding: 2; 3; 5; 1; 3;...
- Natürlich muss man die Längen L1=2, L2=3, ... der einzelnen, jeweils durch B getrennten Substrings vor der Übertragung binär darstellen. Verwendet man für alle Li jeweils D=3 (Bit), so erhält man die RLC–Binärfolge
- 010'011'101'001'011'...
Die Grafik zeigt das das zu analysierende RLC–Ergebnis. In Spalte 2 und 3 sind die Substringlängen Li binär bzw. dezimal angegeben und in Spalte 4 in kumulierter Form (Werte von Spalte 3 aufsummiert).
- Ein Problem von Run-Length Coding (RLC) ist der unbegrenzte Wertebereich der Größen Li. Mit D=3 kann kein Wert Li>7 dargestellt werden und mit D=2 lautet die Beschränkung 1≤Li≤3.
- Das Problem umgeht man mit Run–Length Limited Coding (RLLC). Ist ein Wert Li≥2D, so ersetzt man Li durch ein Sonderzeichen S und die Differenz Li−2D+1. Beim RLLC–Decoder wird dieses Sonderzeichen S wieder expandiert.
Hinweise:
- Die Aufgabe gehört zum Kapitel Weitere Quellencodierverfahren.
- Insbesondere wird Bezug genommen auf die Seite Lauflängencodierung – Run-Length Coding.
RLLC-Beispiel: Wir gehen wieder von obiger Folge und dem Parameter D=2 aus:
- Quellensymbolfolge: ABAABAAAABBAAB...
- RLC–Dezimalfolge: 2; 3; 5; 1; 3; ...
- RLLC–Dezimalfolge: 2; 3; S; 2; 1; 3; ...
- RLLC–Binärfolge: 01′11′ 00′10′01′11′...
Man erkennt:
- Das Sonderzeichen S ist hier als 00 binär–codiert. Dies ist nur ein Beispiel – es muss nicht so sein.
- Da mit D=2 für alle echten RLC–Werte 1≤Li≤3 gilt, erkennt der Decoder das Sonderzeichen 00.
- Er ersetzt dieses wieder durch 2D−1 (im Beispiel drei) A–Symbole.
Fragebogen
Musterlösung
- NBit=1250_.
(2) Die gesamte Symbolfolge der Länge N=1250 beinhaltet NB=25 Symbole B und somit NA=1225 Symbole A.
- Die Anzahl NB der Symbole B ist dabei gleich der Zeilenzahl in der vorne angegebenen Tabelle.
- Damit gilt für die relative Häufigkeit von B:
- hB=NBN=251250=0.02_=2%.
(3) Wir betrachten nun Run–Length Coding (RLC), wobei jeder Abstand zwischen zwei B–Symbolen mit acht Bit dargestellt wird (D=8).
- Damit ergibt sich mit NB=25:
- NBit=NB⋅8=200_.
(4) RLC mit D=7 erlaubt für Li nur Werte zwischen 1 und 27−1=127.
- Der Eintrag "226" in Zeile 19 ist aber größer ⇒ NEIN.
(5) Auch bei Run–Length Limited Coding (RLLC) sind für die "echten" Abstände Li mit D=7 nur Werte bis 127 zulässig.
- Der Eintrag "226" in Zeile 19 wird bei RLLC ersetzt durch
- Zeile 19a: S = 0000000 ⇒ Sonderzeichen, steht für "+ 127",
- Zeile 19b: 1100011 ⇒ Dezimal 99.
- Damit erhält man insgesamt 26 Worte zu je sieben Bit:
- NBit=26⋅7=182_.
(6) Nun müssen bei RLLC gegenüber RLC (siehe Tabelle) folgende Änderungen vorgenommen werden:
- Zeile 1: 122=1·63+59 (ein Wort mehr),
- Zeile 6: 70=1·63+7 (ein Wort mehr),
- Zeile 7: 80=1·63+17 (ein Wort mehr),
- Zeile 12: 79=1·63+18 (ein Wort mehr),
- Zeile 13: 93=1·63+30 (ein Wort mehr),
- Zeile 19: 226=3·63+37 (drei Worte mehr),
- Zeile 25: 97=1·63+34 (ein Wort mehr).
Damit erhält man insgesamt 34 Worte zu je sechs Bit:
- NBit=34⋅6=204_,
also ein schlechteres Ergebnis als mit sieben Bit gemäß Teilaufgabe (5).