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

From LNTwww
Line 8: Line 8:
 
* 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 $N_\text{Bit} = N$ gelten.
 
* 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 $N_\text{Bit} = 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    
+
* 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    
 
:$$\rm ABAABAAAABBAAB\text{...}$$
 
:$$\rm ABAABAAAABBAAB\text{...}$$
 
die entsprechende Ausgabe von ''Run–Lenght Coding'':  
 
die entsprechende Ausgabe von ''Run–Lenght Coding'':  
Line 19: Line 19:
 
Ein Problem von ''Run-Length Coding'' (RLC) ist der  unbegrenzte Wertebereich der Größen $L_i$. Mit $D = 3$ kann kein Wert $L_i > 7$ dargestellt werden und mit $D = 2$ lautet die Beschränkung $1 \le L_i \le 3$.
 
Ein Problem von ''Run-Length Coding'' (RLC) ist der  unbegrenzte Wertebereich der Größen $L_i$. Mit $D = 3$ kann kein Wert $L_i > 7$ dargestellt werden und mit $D = 2$ lautet die Beschränkung $1 \le L_i \le 3$.
  
Das Problem umgeht man mit <i>Run&ndash;Length Limited Coding</i> (RLLC). Ist ein Wert $L_i \ge 2^D$, so ersetzt man $L_i$ durch ein Sonderzeichen <b>S</b> und die Differenz $L_i - 2^D +1$. Beim RLLC&ndash;Decoder wird dieses Sonderzeichen <b>S</b> wieder expandiert.
+
Das Problem umgeht man mit <i>Run&ndash;Length Limited Coding</i> ('''RLLC'''). Ist ein Wert $L_i \ge 2^D$, so ersetzt man $L_i$ durch ein Sonderzeichen <b>S</b> und die Differenz $L_i - 2^D +1$. Beim RLLC&ndash;Decoder wird dieses Sonderzeichen <b>S</b> wieder expandiert.
 +
 
 +
 
 +
 
  
  
 
''Hinweise:''  
 
''Hinweise:''  
*Die Aufgabe gehört zum  Kapitel [[Informationstheorie/Weitere_Quellencodierverfahren|Weitere Quellencodierverfahren]].
+
*Die Aufgabe gehört zum  Kapitel&nbsp; [[Informationstheorie/Weitere_Quellencodierverfahren|Weitere Quellencodierverfahren]].
*Insbesondere wird  Bezug genommen auf die Seite [[Informationstheorie/Weitere_Quellencodierverfahren#Laufl.C3.A4ngencodierung_.E2.80.93_Run.E2.80.93Length_Coding|Lauflängencodierung &ndash; Run-Length Coding]].
+
*Insbesondere wird  Bezug genommen auf die Seite&nbsp; [[Informationstheorie/Weitere_Quellencodierverfahren#Laufl.C3.A4ngencodierung_.E2.80.93_Run.E2.80.93Length_Coding|Lauflängencodierung &ndash; Run-Length Coding]].
 
   
 
   
  
Line 45: Line 48:
  
 
<quiz display=simple>
 
<quiz display=simple>
{Wieviele Bit würde man <i>ohne Quellencodierung</i> benötigen, also mit der Zuordnung <b>A</b>&nbsp;&#8594;&nbsp;<b>0</b> und <b>B</b>&nbsp;&#8594;&nbsp;<b>1</b>?
+
{Wieviele Bit würde man <u>ohne Quellencodierung</u> benötigen, also mit der Zuordnung $\rm A$ &nbsp; &#8594; &nbsp;<b>0</b> und $\rm B$ &nbsp; &#8594; &nbsp;<b>1</b>?
 
|type="{}"}
 
|type="{}"}
$\text{ohne Codierung:} \ N_\text{Bit} \ = \ $  { 1250 3% }
+
$N_\text{Bit} \ = \ $  { 1250 }
  
  
{Wie groß ist die relative Häufigkeit des Symbols <b>B</b>?
+
{Wie groß ist die relative Häufigkeit des Symbols $\rm B$?
 
|type="{}"}
 
|type="{}"}
 
$h_{\rm B}\ = \ $ { 2 3% } $\ \%$
 
$h_{\rm B}\ = \ $ { 2 3% } $\ \%$
  
  
{Wie viele Bit benötigt man für <i>Run&ndash;Length Coding</i> (RLC) entsprechend der angegebenen Tabelle mit 8 Bit&ndash;Codeworten ?
+
{Wie viele Bit benötigt man für <u>Run&ndash;Length Coding</U> (RLC) nach der angegebenen Tabelle mit 8 Bit&ndash;Codeworten $($D = 8)$?
 
|type="{}"}
 
|type="{}"}
$\text{RLC mit } D = 8\text{:} \ N_\text{Bit} \ = \ $ { 200 3% }  
+
$N_\text{Bit} \ = \ $ { 200 }  
  
  
{Ist hier <i>Run&ndash;Length Coding</i> mit 7 Bit&ndash;Codeworten möglich?
+
{Ist hier <u>Run&ndash;Length Coding</u> mit 7 Bit&ndash;Codeworten $(D = 8)$ möglich?
|type="[]"}
+
|type="()"}
 
- Ja.
 
- Ja.
 
+ Nein.
 
+ Nein.
  
  
{Wie viele Bit benötigt man mit <i>Run&ndash;Length Limited Coding</i> (RLLC) mit 7 Bit pro Codewort?
+
{Wie viele Bit benötigt man mit <u>Run&ndash;Length Limited Coding</U> (RLLC) mit 7 Bit pro Codewort $(D = 7)$?
 
|type="{}"}
 
|type="{}"}
$\text{RLLC mit } D = 7\text{:} \ N_\text{Bit} \ = \ $ { 182 3% }
+
$N_\text{Bit} \ = \ $ { 182 }
  
  
{Wie viele Bit benötigt man mit <i>Run&ndash;Length Limited Coding</i> (RLLC) mit 6 Bit pro Codewort?
+
{Wie viele Bit benötigt man mit <u>Run&ndash;Length Limited Coding</u> (RLLC) mit 6 Bit pro Codewort $(D = 6)$?
 
|type="{}"}
 
|type="{}"}
$\text{RLLC mit } D = 6\text{:} \ N_\text{Bit} \ = \ ${ 204 3% }
+
$N_\text{Bit} \ = \ ${ 204 }
  
  

Revision as of 15:45, 2 October 2018

Tabelle zu Run–Length Coding

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 Codebitfolge ebenfalls $N_\text{Bit} = 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  
$$\rm ABAABAAAABBAAB\text{...}$$

die entsprechende Ausgabe von Run–Lenght Coding:

$$ 2; \ 3; \ 5; \ 1; \ 3; \text{...}$$
  • Natürlich muss man die Längen $L_1 = 2$, $L_2 = 3$, ... der einzelnen, jeweils durch $\rm B$ getrennten Substrings vor der Übertragung binär darstellen. Verwendet man für alle $L_i$ jeweils $D = 3$ (Bit), so erhält man die RLC–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–Ergebnis. In Spalte 2 und 3 sind die Substringlängen $L_i$ 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 $L_i$. Mit $D = 3$ kann kein Wert $L_i > 7$ dargestellt werden und mit $D = 2$ lautet die Beschränkung $1 \le L_i \le 3$.

Das Problem umgeht man mit Run–Length Limited Coding (RLLC). Ist ein Wert $L_i \ge 2^D$, so ersetzt man $L_i$ durch ein Sonderzeichen S und die Differenz $L_i - 2^D +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 $1 \le L_i \le 3$ gilt, erkennt der Decoder das Sonderzeichen 00.
  • Er ersetzt dieses wieder durch $2^D -1$ (im Beispiel drei) A–Symbole.


Fragebogen

1

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

$N_\text{Bit} \ = \ $

2

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

$h_{\rm B}\ = \ $

$\ \%$

3

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

$N_\text{Bit} \ = \ $

4

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

Ja.
Nein.

5

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

$N_\text{Bit} \ = \ $

6

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

$N_\text{Bit} \ = \ $


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:

$$h_{\rm B} = \frac{N_{\rm B}}{N} = \frac{25}{1250} \hspace{0.15cm}\underline{= 0.02} = 2\%\hspace{0.05cm}. $$

(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:

$$N_{\rm Bit} = N_{\rm B} \cdot 8 \hspace{0.15cm}\underline{= 200} \hspace{0.05cm}.$$

(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:

$$N_{\rm Bit} = 26 \cdot 7 \hspace{0.15cm}\underline{= 182} \hspace{0.05cm}.$$

(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:

$$N_{\rm Bit} = 34 \cdot 6 \hspace{0.15cm}\underline{= 204} \hspace{0.05cm},$$

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