Optimalcodierung Ziele Diese rechnerischen und experimentellen Übungen dienen der Vertiefung der Kenntnisse im Bereich der Optimalcodierung, mit der die Zeichen diskreter Quellen codiert werden können. Dabei wird zunächst die Codierung der Buchstaben eines Textes betrachtet. Anschließend wird eine Möglichkeit zur Codierung der in einem Bild enthaltenen Information vorgestellt. Dabei wird ein Schwarz-/Weißbild mit Hilfe einer modifizierten Lauflängencodierung codiert. Den Abschluss bildet eine Übungsaufgabe, die die Möglichkeit der effizienten Codierung eines S-/W-Bildes aufzeigt, wenn statistische Abhängigkeiten bei der Aufeinanderfolge von Bildpunkten vorhanden sind. Übungsaufgabe 1 Der nachstehende Satz soll mit Hilfe einer Optimalcodierung der einzelnen Zeichen codiert werden. FISCHERS FRITZE FISCHT FRISCHE FISCHE Dabei werden Leerstellen ignoriert und nicht codiert. SCH wird als ein Zeichen codiert. a) Wie viele Bits werden zur Codierung des Satzes benötigt, wenn jedes Zeichen (ähnlich wie beim ASCII Code) mit 7 Bit codiert wird? b) Ermitteln Sie die Häufigkeiten, mit denen die Zeichen in diesem Satz auftreten. Geben Sie, ausgehend von den ermittelten Häufigkeiten, die Wahrscheinlichkeiten an, mit denen die Zeichen in diesem Text auftreten. c) Bestimmen Sie unter Berücksichtigung der Auftrittswahrscheinlichkeiten der Zeichen in diesem Satz einen Optimalcode nach Fano zur Codierung der Zeichen. d) Wie viele Bits werden zur Codierung des Satzes mit Hilfe des Fano Codes benötigt? e) Bestimmen Sie alternativ einen Huffman Code zur Codierung der Zeichen. f) Wie viele Bits werden zur Codierung des Satzes mit Hilfe des Huffman Codes benötigt? Experimentelle Aufgabe 1 Zur Überprüfung der in der vorherigen Aufgabe von Ihnen bestimmten Codes steht eine graphische Oberfläche zur Codierung von Texten zur Verfügung, die Sie unter dem Auswahlmenü zur Optimalcodierung finden. H. Günter Hirsch Version: pa1 Seite 1 (6)
Geben Sie den zu codierenden Satz in dem Feld zur Texteingabe ein. Anschließend können Sie sich die Auftrittswahrscheinlichkeiten der einzelnen Zeichen durch Anklicken des zugehörigen Felds bestimmen lassen. Um die Codierung von SCH als ein Zeichen zu erreichen, gibt es ein Kombinations -Feld, in das Sie die als ein Zeichen zu codierende Zeichenfolge eingeben können. Aktualisieren Sie die Auftrittswahrscheinlichkeiten! In der rechten Spalte der Tabelle können Sie nacheinander die in der vorherigen Aufgabe bestimmten Codes eingeben. Nach der Eingabe aller Codewörter erfolgt eine Überprüfung, ob es sich um einen eindeutig decodierbaren Code handelt. Sollte der Code nicht eindeutig decodierbar sein, werden die fehlerhaften Codewörter mit roten Schriftzeichen dargestellt. Des Weiteren wird Ihnen die Bitanzahl angezeigt, die bei Einsatz Ihres Codes benötigt wird. Sie können diese mit den Angaben einer rechnerbasierten Bestimmung eines Fano und eines Huffmann Codes vergleichen. Experimentelle Aufgabe 2 Es wird die Codierung eines Schwarz-/Weißbildes mit einer Lauflängencodierung betrachtet. Dazu steht die graphische Oberfläche Codierung von Bildern zur Verfügung, die Sie unter dem Auswahlmenü zur Optimalcodierung finden. Über die Menüleiste ( Bild und laden ) kann ein Bildsignal geladen werden, das in Fenster 1 dargestellt wird. Dabei können Bilder geladen werden, die im JPEG (joint photographic experts group) oder im BMP (bitmap) Format zur Verfügung stehen. Laden Sie das Bild mit der Bezeichnung text.bmp, das einen kleinen Ausschnitt einer eingescannten Textvorlage beinhaltet. Aus wie vielen Zeilen besteht das Bild: Aus wie vielen Spalten besteht das Bild: Wie viele Bits werden zur Codierung des Bildes benötigt, wenn für jeden Bildpunkt nur eine Schwarz-/Weißcodierung vorgenommen wird und am Ende jeder Zeile ein 10 Bit Synchronisationscode angefügt wird: Bits Nach dem Laden des Bilds wählen Sie als Modus der Codierung über das zugehörige Auswahlmenü die Lauflängencodierung aus. Die Lauflängencodierung kann nur auf Schwarz-/Weiß codierte Bildvorlagen angewendet werden, wie es beispielsweise bei Faksimile Diensten der Fall ist. Wenden Sie die Lauflängencodierung auf ein Farbbild oder ein grauwert-skaliertes Bild an, so wird dieses zuvor in ein Schwarz-/Weißbild konvertiert. H. Günter Hirsch Version: pa1 Seite 2 (6)
Nach Auswahl des Codiermodus erscheint in Fenster 2 bei Auswahl der Lauflängencodierung das Schwarz-/Weißbild, so dass die Bilder in den Fenstern 1 und 2 identisch sind, wenn sie zuvor ein Schwarz-/Weißbild geladen haben. Sollten Sie kein Schwarz-/Weißbild geladen haben, so sehen Sie in Fenster 1 weiterhin das Originalbild und in Fenster 2 das daraus ermittelte Schwarz-/Weißbild. Nach Auswahl des Codiermodus erscheint weiterhin eine Tabelle mit 8 Lauflängen. Die aus der jeweiligen Bildvorlage ermittelten Auftrittshäufigkeiten der Lauflängen werden Ihnen in der mittleren Spalte der Tabelle angezeigt. Bestimmen Sie aus den absoluten Auftrittshäufigkeiten die relativen Auftrittswahrscheinlichkeiten der einzelnen Lauflängen in dieser Bildvorlage. Lauflänge 1 2 3 4 5 6 7 8 Häufigkeit Wahrscheinlichkeit Berechnen Sie die aus den Auftrittswahrscheinlichkeiten der Lauflängen resultierende Entropie: H(X) = Bit/Lauflänge Bestimmen Sie einen Optimalcode nach Fano für die 8 Lauflängen. Dazu können Sie die nachstehende Tabelle verwenden. Tragen Sie die Lauflängen, sortiert nach ihren Auftrittswahrscheinlichkeiten (gemäß der Vorschrift zur Bestimmung des Fano Codes), in die Tabelle ein. Lauflänge p(x i ) p(x i ) Codewort Wortlänge w i p(x i )w i H. Günter Hirsch Version: pa1 Seite 3 (6)
Zeichnen Sie nachstehend den vollständigen Entscheidungsbaum, mit dem Sie feststellen können, ob der Code eindeutig decodierbar ist: Die von Ihnen bestimmten Codes können Sie nun in der graphischen Oberfläche in der rechten Spalte der Tabelle eingegeben. Nach Eingabe aller Codewörter wird das rechts neben der Tabelle vorhandene Feld zur Codierung aktiv. Zudem erscheint darunter ein freundlicher oder ein böser Smiley, der Sie darauf hinweist, ob der von Ihnen eingegebene Code eindeutig decodierbar ist oder nicht. Damit erhalten Sie allerdings keine Information, ob der Code wirklich optimal ist. Durch Anklicken des Codierungs -Feldes kann die eigentliche Codierung vorgenommen werden. Bei Auswahl der Lauflängencodierung erscheint in Fenster 1 das Schwarz-/Weißbild und in Fenster 2 das codierte Bild, was im Falle eines eindeutig decodierbaren Codes mit dem Bild in Fenster 1 identisch sein sollte. Berechnen Sie für den von Ihnen bestimmten Code die daraus resultierende mittlere Wortlänge: L = Bit/Lauflänge Welche Code-Redundanz folgt daraus: c r = % Zur praktischen Realisierung der Codierung wird die übliche Lauflängencodierung etwas modifiziert. Eigentlich müssten Lauflängen von einem Bildpunkt bis zur entsprechenden H. Günter Hirsch Version: pa1 Seite 4 (6)
maximalen Anzahl von Bildpunkten je Zeile codiert werden. Dabei würde allerdings eine große Anzahl von Lauflängen und Codewörtern auftreten. Daher wird in dieser Oberfläche die Betrachtung auf Lauflängen zwischen 1 und 8 Bildpunkten beschränkt. Ein Problem tritt auf, wenn 8 oder mehr gleichfarbige Bildpunkte auftreten. Üblicherweise wechselt von einer Lauflänge zur nächsten die Farbe von weiß auf schwarz oder umgekehrt. Im Fall von genau 8 gleichfarbigen Bildpunkten wäre dies auch der Fall. Sind es jedoch mehr als 8 gleichfarbige Bildpunkte, so sollte sich die Farbe der nächsten Lauflänge nicht ändern. Daher wird im Fall einer Lauflänge der Länge 8 nach dem Codewort der Lauflänge 8 ein weiteres Bit übertragen oder gespeichert, mit dem die Farbe der darauffolgenden Lauflänge festgelegt wird. Dies wird im nachstehenden Bild veranschaulicht, in dem die Codierung der Lauflängen einer Zeile veranschaulicht wird. Zu Beginn jeder Zeile wird ein Bit benötigt, mit dem festgelegt wird, ob die erste Lauflänge einen Block von weißen oder einen Block von schwarzen Bildpunkten definiert. Am Ende jeder Zeile werden 10 Bit zur Zeilensynchronisation übertragen. w/s 1. Bit 1.Lauflängencode Code der Lauflänge 8 w/s 10 Bit Zeilensynch. zusätzliches Bit Berechnen Sie die Anzahl der Bits, die zur modifizierten Lauflängencodierung dieser Bildvorlage gemäß dem von Ihnen festgelegtem Code unter Berücksichtigung der zur Festlegung der Farbe der ersten Lauflänge einer jeden Zeile und der zur Zeilensynchronisation am Ende jeder Zeile und der zur Festlegung der Farbe der nachfolgenden Lauflänge im Fall des Auftretens eines Blocks mit mindestens 8 gleichfarbigen Bildpunkten erforderlichen Bits insgesamt benötigt werden: Bits Wie viele Bits lassen sich bei Einsatz dieser Form der Codierung im Vergleich zur Codierung der einzelnen Bildpunkte, für die die Bitanzahl zu Beginn berechnet wurde, einsparen: Bits Untersuchen Sie abschließend die Auswirkungen eines nicht eindeutig decodierbaren Codes, in dem Sie kontrolliert Fehler bei der Codierung einbringen. Dabei kann die Codierung und Decodierung in diesem Fall einiges an Rechenzeit in Anspruch nehmen. Seien Sie daher in diesem Fall etwas geduldig und klicken Sie das Codierungsfeld nicht mehrfach an! Am Aussehen des Codierungsfelds können Sie erkennen, ob der Rechner noch mit der Codierung beschäftigt ist oder nicht. H. Günter Hirsch Version: pa1 Seite 5 (6)
Übungsaufgabe 2 Ein Schwarz/Weißbild besteht aus 640 mal 480 Bildpunkten. a) Wie groß ist der Entscheidungsgehalt H 0 zur Codierung eines einzelnen Bildpunkts? b) Wie viele Bits werden zur Codierung des Bildes benötigt? Welchen Speicherbedarf (in Byte) benötigt man zur Speicherung des Bildes auf einem PC? Bei einer statistischen Analyse des Bildes ermittelt man die Auftrittswahrscheinlichkeit p(s) der schwarzen Bildpunkte zu p(s) = 0,2. c) Mit welcher Wahrscheinlichkeit p(w) treten die weißen Bildpunkte auf? d) Wie groß ist die Entropie H ( X )? Wie groß ist die daraus resultierende relative Redundanz? Wie viele Bytes könnte man theoretisch bei der Speicherung des Bildes einsparen? Im Folgenden wird die Codierung von Bildpunktpaaren betrachtet. Dabei wird zunächst eine statistische Unabhängigkeit aufeinanderfolgender Bildpunkte angenommen. e) Berechnen Sie die Matrix der Auftrittswahrscheinlichkeiten der Bildpunktpaare. f) Bestimmen Sie einen Optimalcode nach Huffmann zur Codierung der Bildpunktpaare. Welche mittlere Wortlänge je Bildpunkt stellt sich dabei ein? Berechnen Sie die Code-Redundanz. Bei einer statistischen Analyse aufeinanderfolgender Bildpunkte wird die nachstehende, unvollständige Matrix der Übergangswahrscheinlichkeiten ermittelt: [ p( y x )] j i = x i y j w s w 0,9 0,4 s...... g) Bestimmen Sie die fehlenden Übergangswahrscheinlichkeiten. h) Berechnen Sie die Auftrittswahrscheinlichkeiten der Bildpunktpaare. i) Berechnen Sie die bedingte Entropie H ( Y X )? j) Berechnen Sie zur Codierung von Blöcken, die drei aufeinanderfolgende Bildpunkte beinhalten, die Wahrscheinlichkeiten des Auftretens aller möglichen Blöcke. k) Bestimmen Sie einen Huffman Code zur Codierung der Blöcke. Welche mittlere Wortlänge je Bildpunkt ergibt sich dabei? Wie viele Bytes werden bei Verwendung des Huffman Codes zur Speicherung des Bildes benötigt? H. Günter Hirsch Version: pa1 Seite 6 (6)