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
Line 3: Line 3:
 
}}
 
}}
  
[[File:P_ID2474__Inf_A_2_13_neu.png|right|Tabelle zu Run–Length Coding]]
+
[[File:P_ID2474__Inf_A_2_13_neu.png|right|frame|Tabelle zu Run–Length Coding]]
Wir betrachten eine Binärquelle mit dem Symbolvorrat <b>A</b> und <b>B</b>, wobei <b>B</b> allerdings nur sehr selten auftritt.
+
Wir betrachten eine Binärquelle mit dem Symbolvorrat $\rm A$ und $\rm B$, wobei $\rm 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 Codebit folge folge ebenfalls NBit=Ngelten.
+
* 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 (Zusammenfassen mehrerer Symbole zu einem Tupel) wegen der ungünstigen Symbolwahrscheinlichkeiten wenig Sinn.
 
* Entropiecodierung macht hier ohne weitere Maßnahme (Zusammenfassen mehrerer Symbole zu einem Tupel) wegen der ungünstigen Symbolwahrscheinlichkeiten wenig Sinn.
* Abhilfe schafft [[Informationstheorie/Weitere_Quellencodierverfahren#Laufl.C3.A4ngencodierung_.E2.80.93_Run.E2.80.93Length_Coding|Run-Length Coding]] (RLC), das unter dem genannten Link im Theorieteil beschrieben ist. Zum Beispiel ergibt sich für die Quellensymbolfolge: '''ABAABAAAABBAAB''' ... die entsprechende Ausgabe von ''Run&ndash;Lenght Coding'': &nbsp;&nbsp;''' 2; 3; 5; 1; 3;''' ...
+
* Abhilfe schafft [[Informationstheorie/Weitere_Quellencodierverfahren#Laufl.C3.A4ngencodierung_.E2.80.93_Run.E2.80.93Length_Coding|Run-Length Coding]] (RLC), das unter dem genannten Link im Theorieteil beschrieben ist. Zum Beispiel ergibt sich für die Quellensymbolfolge &nbsp;
* Natürlich muss man die Längen L1=2, L2=3, ... der einzelnen, jeweils durch <b>B</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&ndash;Binärfolge '''010&prime;011&prime;101&prime;001&prime;011&prime;'''...
+
:$$\rm ABAABAAAABBAAB\text{...}$$
 +
die entsprechende Ausgabe von ''Run&ndash;Lenght Coding'':  
 +
:$$ 2; \ 3; \ 5; \ 1; \ 3; \text{...}$$
 +
* Natürlich muss man die Längen L1=2, L2=3, ... der einzelnen, jeweils durch $\rm 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&ndash;Binärfolge
 +
:$$010\hspace{0.05cm}\text{'}\hspace{0.05cm}011\hspace{0.05cm}\text{'}\hspace{0.05cm}101\hspace{0.05cm}\text{'}\hspace{0.05cm}001\hspace{0.05cm}\text{'}\hspace{0.05cm}011\hspace{0.05cm}\text{'}\hspace{0.05cm}\text{...}$$
  
 
Die Grafik zeigt das  das zu analysierende RLC&ndash;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).
 
Die Grafik zeigt das  das zu analysierende RLC&ndash;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).

Revision as of 15:01, 2 October 2018

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 (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 Quellensymbolfolge  
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 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 2:  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?

ohne Codierung: 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) entsprechend der angegebenen Tabelle mit 8 Bit–Codeworten ?

RLC mit D=8: NBit = 

4

Ist hier Run–Length Coding mit 7 Bit–Codeworten möglich?

Ja.
Nein.

5

Wie viele Bit benötigt man mit Run–Length Limited Coding (RLLC) mit 7 Bit pro Codewort?

RLLC mit D=7: NBit = 

6

Wie viele Bit benötigt man mit Run–Length Limited Coding (RLLC) mit 6 Bit pro Codewort?

RLLC mit D=6: NBit = 


Musterlösung

(1)  Die Binärfolge besteht aus insgesamt 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.
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 8 Bit dargestellt wird (D = 8). Damit ergibt sich mit NB = 25:

NBit=NB8=200_.

(4)  Run–Length Coding mit D = 7 erlaubt für Li nur Werte zwischen 1 und 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 zwischen 1 und 27 – 1 = 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 7 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 6 Bit:

NBit=346=204_,

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