// Sprichst du computerisch? / Tipps zur Lösung

Bildcodierung

Eine Möglichkeit, wie Computer Bilder speichern und übertragen können funktioniert folgendermassen: Über das Bild wird ein rechteckiges Raster gelegt und danach wird für jedes Teilquadrat festgehalten, welche Farbe in diesem Teil des Bildes vorherrscht. In der codierten Nachricht wird jedes Teilquadrat als ein farbiger Punkt, genannt Pixel repräsentiert. Darum heissen so codierte Bilder auch Rastergrafiken oder Pixelgrafiken (siehe Wikipedia). Als Beispiel das Bild des Roboters bit mit verschiedenen Rastergrössen:

Für die Codierung der Farben wird wie bei allen Codierungen eine Codetabelle benötigt. Sie weist allen Farben einen Binärcode zu. Die entsprechende Codetabelle im Mobiltelefon der drei Roboter ist nicht sehr gross, denn das Mobiltelefon der Roboter kann nur Bilder mit höchstens acht Farben darstellen:

weiss0000
schwarz0001
rot0010
grün0011
gelb0100
braun0101
orange0110
blau0111

Somit entsprechen jeweils vier bits der codierten Nachricht einem Pixel im decodierten Bild.

Bildkompression

Das Codieren von Bildern kann recht viel Platz erfordern, wenn das Raster sehr gross ist und somit viele Pixel codiert werden müssen. Hier wäre es ganz praktisch, wenn sich das Bild komprimieren liesse. Das Kompressionsverfahren des Mobiltelefons der drei Roboter macht sich die Eigenschaft vieler Bilder zu Nutze, dass sie oft grosse, gleichfarbige Bereiche erhalten. Das Codieren solcher Bereiche ist relativ eintönig: Ein gleichfarbiges Pixel folgt auf das nächste. Müssten Menschen sich ein solches Bild übermitteln, so würden sie nicht stur sagen "grün, grün, grün, grün..." sondern sie würden das vermutlich abkürzen mit "jetzt kommen 5 grüne Pixel, dann 20 gelbe, danach... ".

Diesen Trick beherrscht auch das Mobiltelefon der drei Roboter. Folgen in einem Bild mehrere gleichfarbige Pixel aufeinander, so kann dies entsprechend codiert werden. Zusätzlich zu den 8 Farbwerten gibt es in der Codetabelle auch 8 Wiederholungsanweisungen:

weiss0000 2 Pixel1000
schwarz0001 3 Pixel1001
rot0010 4 Pixel1010
grün0010 5 Pixel1011
gelb0100 6 Pixel1100
braun0101 7 Pixel1101
orange0110 8 Pixel1110
blau0111 9 Pixel1111

Acht gelbe Pixel können somit folgendermassen platzsparend codiert werden:

1110 0100

Beispiel

Im Folgenden wird an einem Beispiel schrittweise gezeigt, wie komprimierte Bilder decodiert werden können. Das komprimierte Bild sieht so aus:

111000101001001010000000100100101001001010000000100100
100010110000000010001011000000001010010010100000001001
001010010010100000001001001011100010

Da das Bild komprimiert vorliegt, ist nicht auf den ersten Blick erkennbar, wie gross das Bild ist. In einem ersten Schritt muss die Nachricht daher dekomprimiert werden:

111000108 Pixel rot
100100103 Pixel rot
100000002 Pixel weiss
100100103 Pixel rot
100100103 Pixel rot
100000002 Pixel weiss
100100103 Pixel rot
00101 Pixel rot
110000006 Pixel weiss
00101 Pixel rot
00101 Pixel rot
110000006 Pixel weiss
00101 Pixel rot
100100103 Pixel rot
100000002 Pixel weiss
100100103 Pixel rot
100100103 Pixel rot
100000002 Pixel weiss
100100103 Pixel rot
111000108 Pixel rot

Das Bild besteht also aus 64 Pixeln. Da es quadratisch sein muss, das Bild nun in einem Raster von 8x8 Pixeln aufgezeichnet werden:

Schweizer Kreuz

Weiter zur Musik-Decodierung...

Hast du schon eine Lösung gefunden, dann kannst du sie hier überprüfen:

Lösung überprüfen