Loading [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js

Difference between revisions of "Exercise 2.12: Run–Length Coding and Run–Length Limited Coding"

From LNTwww
m (Text replacement - "[File:" to "[File:")
(No difference)

Revision as of 16:10, 26 May 2020

Tabelle zu Run–Length Coding

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=2L2=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  1Li3.
  • Das Problem umgeht man mit Run–Length Limited Coding  (RLLC).  Ist ein Wert  Li2D, so ersetzt man  Li  durch ein Sonderzeichen  S  und die Differenz  Li2D+1.  Beim RLLC–Decoder wird dieses Sonderzeichen  S  wieder expandiert.





Hinweise:


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  1Li3  gilt, erkennt der Decoder das Sonderzeichen  00.
  • Er ersetzt dieses wieder durch  2D1  (im Beispiel drei)  A–Symbole.


Fragebogen

1

Wieviele Bit würde man  ohne Quellencodierung  benötigen, also mit der Zuordnung  A   →  0  und  B   →  1?

NBit = 

2

Wie groß ist die relative Häufigkeit des Symbols  B?

hB = 

 %

3

Wie viele Bit benötigt man für  Run–Length Coding  (RLC)  nach der angegebenen Tabelle mit acht Bit pro Codewort  (D=8)?

NBit = 

4

Ist hier  Run–Length Coding  mit sieben Bit–Codeworten  (D=7)  möglich?

Ja.
Nein.

5

Wie viele Bit benötigt man für  Run–Length Limited Coding  (RLLC)  mit sieben Bit pro Codewort  (D=7)?

NBit = 

6

Wie viele Bit benötigt man für  Run–Length Limited Coding  (RLLC)  mit sechs Bit pro Codewort  (D=6)?

NBit = 


Musterlösung

(1)  Die Binärfolge besteht aus  N=1250  Binärsymbolen (ablesbar aus der letzten Spalte in der Tabelle).  Damit benötigt man ohne Codierung ebenso viele Bit:

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=NB8=200_.


(4)  RLC  mit  D=7  erlaubt für  Li  nur Werte zwischen  1  und  271=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=267=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=346=204_,

also ein schlechteres Ergebnis als mit sieben Bit gemäß Teilaufgabe (5).