Aufgabe 2.12: Run–Length Coding und RLLC: Unterschied zwischen den Versionen
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 4: | Zeile 4: | ||
[[Datei:P_ID2474__Inf_A_2_13_neu.png|right|frame|Tabelle zu Run–Length Coding]] | [[Datei:P_ID2474__Inf_A_2_13_neu.png|right|frame|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. | + | 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. | + | * 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 (Beispiel: 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]] ( | + | * Abhilfe schafft [[Informationstheorie/Weitere_Quellencodierverfahren#Laufl.C3.A4ngencodierung_.E2.80.93_Run.E2.80.93Length_Coding|Run-Length Coding]] $(\rm RLC)$, das unter dem genannten Link im Theorieteil beschrieben ist. Zum Beispiel ergibt sich für die Symbolfolge $\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 | |
− | die entsprechende Ausgabe von | ||
− | |||
− | * 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{...}$$ | :$$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). | + | 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" $\rm (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" $\rm (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–Decoder wird dieses Sonderzeichen <b>S</b> wieder expandiert. | ||
+ | |||
− | |||
− | |||
Zeile 32: | Zeile 32: | ||
{{GraueBox| | {{GraueBox| | ||
− | TEXT= | + | TEXT=$\text{RLLC-Beispiel}$: Wir gehen wieder von obiger Folge und dem Parameter $D = 2$ aus: |
− | * Quellensymbolfolge: | + | * Quellensymbolfolge: $\rm ABAABAAAABBAAB$... |
* RLC–Dezimalfolge: '''2; 3; 5; 1; 3;''' ... | * RLC–Dezimalfolge: '''2; 3; 5; 1; 3;''' ... | ||
− | * RLLC–Dezimalfolge: '''2; 3;'''<font color="#cc0000"><span style="font-weight: bold;"> S;</span></font>'''2; 1; 3;''' ... | + | * RLLC–Dezimalfolge: '''2; 3; '''<font color="#cc0000"><span style="font-weight: bold;"> S;</span></font>''' 2; 1; 3;''' ... |
− | * RLLC–Binärfolge: ''' | + | * RLLC–Binärfolge: '''10′11′''' <font color="#cc0000"><span style="font-weight: bold;">00′</span></font>'''10′01′11′'''... |
+ | |||
Man erkennt: | Man erkennt: | ||
− | *Das Sonderzeichen <b>S</b> ist hier als <b>00</b> binär–codiert. Dies ist nur ein Beispiel – es muss nicht so sein. | + | *Das Sonderzeichen <b>S</b> ist hier als <b>00</b> 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'''. | + | *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) | + | *Er ersetzt dieses wieder durch $2^D -1$ (im Beispiel drei) $\rm A$–Symbole.}} |
Zeile 48: | Zeile 49: | ||
<quiz display=simple> | <quiz display=simple> | ||
− | {Wieviele Bit würde man <u>ohne Quellencodierung</u> benötigen, also mit der Zuordnung $\rm A$ → <b>0</b> und $\rm B$ → <b>1</b>? | + | {Wieviele Bit würde man <u>ohne Quellencodierung</u> benötigen, also mit der Zuordnung $\rm A$ → <b>0</b> und $\rm B$ → <b>1</b>? |
|type="{}"} | |type="{}"} | ||
$N_\text{Bit} \ = \ $ { 1250 } | $N_\text{Bit} \ = \ $ { 1250 } | ||
− | {Wie groß ist die relative Häufigkeit des Symbols $\rm 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 <u>Run–Length Coding</U> (RLC) nach der angegebenen Tabelle mit | + | {Wie viele Bit benötigt man für <u>Run–Length Coding</U> $\rm (RLC)$ nach der angegebenen Tabelle mit acht Bit pro Codewort $(D = 8)$? |
|type="{}"} | |type="{}"} | ||
$N_\text{Bit} \ = \ $ { 200 } | $N_\text{Bit} \ = \ $ { 200 } | ||
− | {Ist hier <u>Run–Length Coding</u> mit | + | {Ist hier <u>Run–Length Coding</u> mit sieben Bit–Codeworten $(D = 7)$ möglich? |
|type="()"} | |type="()"} | ||
- Ja. | - Ja. | ||
Zeile 69: | Zeile 70: | ||
− | {Wie viele Bit benötigt man | + | {Wie viele Bit benötigt man für <u>Run–Length Limited Coding</U> $\rm (RLLC)$ mit sieben Bit pro Codewort $(D = 7)$? |
|type="{}"} | |type="{}"} | ||
$N_\text{Bit} \ = \ $ { 182 } | $N_\text{Bit} \ = \ $ { 182 } | ||
− | {Wie viele Bit benötigt man | + | {Wie viele Bit benötigt man für <u>Run–Length Limited Coding</u> $\rm (RLLC)$ mit sechs Bit pro Codewort $(D = 6)$? |
|type="{}"} | |type="{}"} | ||
$N_\text{Bit} \ = \ ${ 204 } | $N_\text{Bit} \ = \ ${ 204 } | ||
Zeile 84: | Zeile 85: | ||
===Musterlösung=== | ===Musterlösung=== | ||
{{ML-Kopf}} | {{ML-Kopf}} | ||
− | '''(1)''' Die Binärfolge besteht aus | + | '''(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: |
+ | :$$N_\text{Bit}\hspace{0.15cm}\underline{= 1250}.$$ | ||
− | '''(2)''' Die gesamte Symbolfolge der Länge | + | |
+ | '''(2)''' Die gesamte Symbolfolge der Länge $N = 1250$ beinhaltet $N_{\rm B} = 25$ Symbole ${\rm B}$ und somit $N_{\rm A} = 1225$ Symbole ${\rm A}$. | ||
+ | *Die Anzahl $N_{\rm B}$ der Symbole ${\rm B}$ ist dabei gleich der Zeilenzahl in der vorne angegebenen Tabelle. | ||
+ | *Damit gilt für die relative Häufigkeit von ${\rm B}$: | ||
:$$h_{\rm B} = \frac{N_{\rm B}}{N} = \frac{25}{1250} \hspace{0.15cm}\underline{= 0.02} = 2\%\hspace{0.05cm}. $$ | :$$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 | + | |
+ | '''(3)''' Wir betrachten nun "Run–Length Coding" $\rm (RLC)$, wobei jeder Abstand zwischen zwei ${\rm B}$–Symbolen mit acht Bit dargestellt wird $(D = 8)$. | ||
+ | *Damit ergibt sich mit $N_{\rm B} = 25$: | ||
:$$N_{\rm Bit} = N_{\rm B} \cdot 8 \hspace{0.15cm}\underline{= 200} \hspace{0.05cm}.$$ | :$$N_{\rm Bit} = N_{\rm B} \cdot 8 \hspace{0.15cm}\underline{= 200} \hspace{0.05cm}.$$ | ||
− | |||
− | '''( | + | '''(4)''' $\rm RLC$ mit $D = 7$ erlaubt für $L_i$ nur Werte zwischen $1$ und $2^7-1 =127$. |
+ | *Der Eintrag „226” in Zeile 19 ist aber größer ⇒ <u>NEIN</u>. | ||
+ | |||
+ | |||
− | + | '''(5)''' Auch bei Run–Length Limited Coding $\rm (RLLC)$ sind für die „echten” Abstände $L_i$ mit $D = 7$ nur Werte bis $127$ zulässig. | |
+ | *Der Eintrag „226” in Zeile 19 wird bei $\rm RLLC$ ersetzt durch | ||
− | * Zeile | + | :* Zeile 19a: <b>S</b> = <b>0000000</b> ⇒ Sonderzeichen, steht für „+ 127”, |
+ | :* Zeile 19b: <b>1100011</b> ⇒ Dezimal 99. | ||
− | Damit erhält man insgesamt 26 Worte zu je | + | *Damit erhält man insgesamt $26$ Worte zu je sieben Bit: |
:$$N_{\rm Bit} = 26 \cdot 7 \hspace{0.15cm}\underline{= 182} \hspace{0.05cm}.$$ | :$$N_{\rm Bit} = 26 \cdot 7 \hspace{0.15cm}\underline{= 182} \hspace{0.05cm}.$$ | ||
− | |||
− | * Zeile 1: 122 = 1 · 63 + 59 (ein Wort mehr), | + | '''(6)''' Nun müssen bei $\rm RLLC$ gegenüber $\rm 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 6: $70 = 1 · 63 + 7$ (ein Wort mehr), |
− | * Zeile 7: 80 = 1 · 63 + 17 (ein Wort mehr), | + | * Zeile 7: $80 = 1 · 63 + 17$ (ein Wort mehr), |
− | * Zeile 12: 79 = 1 · 63 + | + | * Zeile 12: $79 = 1 · 63 + 16$ (ein Wort mehr), |
− | * Zeile 13: 93 = 1 · 63 + 30 (ein Wort mehr), | + | * Zeile 13: $93 = 1 · 63 + 30$ (ein Wort mehr), |
− | * Zeile 19: 226 = 3 · 63 + 37 (drei Worte mehr), | + | * Zeile 19: $226 = 3 · 63 + 37$ (drei Worte mehr), |
− | * Zeile 25: 97 = 1 · 63 + 34 (ein Wort mehr). | + | * Zeile 25: $97 = 1 · 63 + 34$ (ein Wort mehr). |
− | Damit erhält man insgesamt 34 Worte zu je | + | Damit erhält man insgesamt $25 + 9 =34$ Worte zu je sechs Bit: |
:$$N_{\rm Bit} = 34 \cdot 6 \hspace{0.15cm}\underline{= 204} \hspace{0.05cm},$$ | :$$N_{\rm Bit} = 34 \cdot 6 \hspace{0.15cm}\underline{= 204} \hspace{0.05cm},$$ | ||
− | also ein schlechteres Ergebnis als mit | + | also ein schlechteres Ergebnis als mit sieben Bit gemäß Teilaufgabe '''(5)'''. |
{{ML-Fuß}} | {{ML-Fuß}} | ||
Aktuelle Version vom 12. August 2021, 16:55 Uhr
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 (Beispiel: Zusammenfassen mehrerer Symbole zu einem Tupel) wegen der ungünstigen Symbolwahrscheinlichkeiten wenig Sinn.
- Abhilfe schafft Run-Length Coding $(\rm RLC)$, das unter dem genannten Link im Theorieteil beschrieben ist. Zum Beispiel ergibt sich für die Symbolfolge $\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" $\rm (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" $\rm (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:
- Die Aufgabe gehört zum Kapitel Weitere Quellencodierverfahren.
- Insbesondere wird Bezug genommen auf die Seite Lauflängencodierung – Run-Length Coding.
$\text{RLLC-Beispiel}$: Wir gehen wieder von obiger Folge und dem Parameter $D = 2$ aus:
- Quellensymbolfolge: $\rm ABAABAAAABBAAB$...
- RLC–Dezimalfolge: 2; 3; 5; 1; 3; ...
- RLLC–Dezimalfolge: 2; 3; S; 2; 1; 3; ...
- RLLC–Binärfolge: 10′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) $\rm A$–Symbole.
Fragebogen
Musterlösung
- $$N_\text{Bit}\hspace{0.15cm}\underline{= 1250}.$$
(2) Die gesamte Symbolfolge der Länge $N = 1250$ beinhaltet $N_{\rm B} = 25$ Symbole ${\rm B}$ und somit $N_{\rm A} = 1225$ Symbole ${\rm A}$.
- Die Anzahl $N_{\rm B}$ der Symbole ${\rm B}$ ist dabei gleich der Zeilenzahl in der vorne angegebenen Tabelle.
- Damit gilt für die relative Häufigkeit von ${\rm 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" $\rm (RLC)$, wobei jeder Abstand zwischen zwei ${\rm B}$–Symbolen mit acht Bit dargestellt wird $(D = 8)$.
- Damit ergibt sich mit $N_{\rm B} = 25$:
- $$N_{\rm Bit} = N_{\rm B} \cdot 8 \hspace{0.15cm}\underline{= 200} \hspace{0.05cm}.$$
(4) $\rm RLC$ mit $D = 7$ erlaubt für $L_i$ nur Werte zwischen $1$ und $2^7-1 =127$.
- Der Eintrag „226” in Zeile 19 ist aber größer ⇒ NEIN.
(5) Auch bei Run–Length Limited Coding $\rm (RLLC)$ sind für die „echten” Abstände $L_i$ mit $D = 7$ nur Werte bis $127$ zulässig.
- Der Eintrag „226” in Zeile 19 wird bei $\rm 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:
- $$N_{\rm Bit} = 26 \cdot 7 \hspace{0.15cm}\underline{= 182} \hspace{0.05cm}.$$
(6) Nun müssen bei $\rm RLLC$ gegenüber $\rm 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 + 16$ (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 $25 + 9 =34$ Worte zu je sechs Bit:
- $$N_{\rm Bit} = 34 \cdot 6 \hspace{0.15cm}\underline{= 204} \hspace{0.05cm},$$
also ein schlechteres Ergebnis als mit sieben Bit gemäß Teilaufgabe (5).