Bildcodierung mit Header
Interaktive Visualisierung der Grafikcodierung
🎯 Worum geht's? Klasse 6–9 · 2–3 Unterrichtsstunden
Nach dieser Seite kannst du …
- Pixelbilder mit Binärzahlen codieren und decodieren
- die Angaben im Header (Breite, Höhe, Farbtiefe) lesen und selbst festlegen
- berechnen, wie Auflösung und Farbtiefe die Dateigröße bestimmen
Vorwissen: Binärzahlen
📋 Codierungsvorschrift
📦 Datagramm
🖼️ Pixelbild
📋 Codierungsvorschrift – Graustufen
📦 Datagramm
🖼️ Pixelbild
🎨 Graustufenpalette:
📋 Codierungsvorschrift – RGB-Farbbild
📦 Datagramm
🖼️ Pixelbild
🎨 Farbpalette:
📚 Grundlagen der Grafikcodierung
🌟 Was ist Grafikcodierung?
Jedes digitale Bild besteht aus Pixeln (Bildpunkten). Damit ein Computer ein Bild speichern oder übertragen kann, müssen diese Pixel in Binärcode (Nullen und Einsen) umgewandelt werden. Das nennt man Grafikcodierung.
Ein Bild ist also für den Computer nur eine lange Folge von Nullen und Einsen – genau wie Text oder Zahlen. Der Computer muss wissen, wie er diese Bits interpretieren soll.
| Bildtyp | Bits pro Pixel | Farben/Stufen | Beispiel |
|---|---|---|---|
| Schwarz-Weiß | 1 Bit | 2 | QR-Code, Strichcode |
| Graustufen | 1–8 Bit | 2–256 | Röntgenbild, alte Fotos |
| Farbbild (RGB) | 24 Bit | 16 777 216 | Foto, Website, Video |
🔢 Binärzahlen – Kurzwiederholung
Computer arbeiten nur mit 0 und 1 (Bits). Mehrere Bits zusammen ergeben eine Binärzahl:
| Binär | Dezimal | Bedeutung (Beispiel) |
|---|---|---|
| 00000000 | 0 | schwarz / kein Anteil |
| 00001000 | 8 | Breite oder Höhe = 8 Pixel |
| 10000000 | 128 | mittelgrau |
| 11111111 | 255 | weiß / voller Anteil |
Stellenwerte eines Bytes (von links nach rechts):
Wert: 128 64 32 16 8 4 2 1
Bsp: 1 0 1 0 0 0 0 0 = 128+32 = 160
📦 Der Header – die „Bedienungsanleitung" des Bildes
Jedes codierte Bild beginnt mit einem Header. Der Header enthält Metadaten – also Informationen über das Bild, nicht das Bild selbst:
| Byte | Inhalt | Beispiel (8×6-Bild) | Binär |
|---|---|---|---|
| Byte 1 | Breite (Pixel) | 8 | 00001000 |
| Byte 2 | Höhe (Pixel) | 6 | 00000110 |
| Byte 3+ | Optional: Bits/Pixel, Farbtiefe … | – | – |
Warum braucht man den Header?
Ohne Header weiß der Computer nicht, wo eine Zeile endet und die
nächste beginnt. Bei einem 8×6-Bild und einem 4×12-Bild wären die
Nutzdaten identisch – erst der Header verrät die richtige Aufteilung.
←── Header ──────→ ←── Nutzlast (Pixel) ──→
⬛ Schwarz-Weiß-Bilder – 1 Bit pro Pixel
Bei Schwarz-Weiß-Bildern hat jedes Pixel nur zwei mögliche Zustände: schwarz oder weiß. Dafür reicht genau 1 Bit pro Pixel.
| Bit | Farbe (Standard) | Farbe (Invertiert) |
|---|---|---|
| 1 | ⬛ schwarz | ⬜ weiß |
| 0 | ⬜ weiß | ⬛ schwarz |
Vollständiges Beispiel – Buchstabe „L" (4×4):
Zeile 1: 1000 → ■□□□
Zeile 2: 1000 → ■□□□
Zeile 3: 1000 → ■□□□
Zeile 4: 1111 → ■■■■
Nutzlast als Bytes: 10001000 10001111 (je 8 Bit = 1 Byte)
Speicherbedarf berechnen:
Nutzlast-Bytes = ⌈ Pixel ÷ 8 ⌉ (aufrunden!)
Gesamt = 2 Header-Bytes + Nutzlast-Bytes
Beispiel 8×8-Bild:
→ 8×8 = 64 Pixel
→ 64 ÷ 8 = 8 Nutzlast-Bytes
→ 2 + 8 = 10 Bytes gesamt
🔲 Graustufenbilder – mehr Bits, mehr Stufen
Graustufenbilder können verschiedene Helligkeitsstufen darstellen. Je mehr Bits pro Pixel, desto mehr Graustufen – und desto realistischer wirkt das Bild.
| Bits/Pixel | Graustufen | Werte | Formel |
|---|---|---|---|
| 1 Bit | 2 | 0, 1 | 2¹ = 2 |
| 2 Bit | 4 | 0, 1, 2, 3 | 2² = 4 |
| 4 Bit | 16 | 0–15 | 2⁴ = 16 |
| 8 Bit | 256 | 0–255 | 2⁸ = 256 |
Vollständiges Beispiel – 2×2-Bild mit 8 Bit/Pixel:
Pixel 1 (schwarz): 00000000 = 0
Pixel 2 (dunkelgrau): 01000000 = 64
Pixel 3 (hellgrau): 10000000 = 128
Pixel 4 (weiß): 11111111 = 255
Gesamt: 2 + 4 = 6 Bytes
Speicherbedarf berechnen:
Nutzlast-Bytes = ⌈ Nutzlast-Bits ÷ 8 ⌉
Beispiel 4×4, 4 Bit/Pixel:
→ 4×4×4 = 64 Bits
→ 64 ÷ 8 = 8 Nutzlast-Bytes
→ 2 + 8 = 10 Bytes gesamt
🌈 Farbbilder – das RGB-Modell
Farbbilder werden mit dem RGB-Modell codiert. Jeder Pixel besteht aus drei Farbkanälen:
| Kanal | Bedeutung | Wert 0 | Wert 255 | Bits |
|---|---|---|---|---|
| R | Rotanteil | kein Rot | maximales Rot | 8 |
| G | Grünanteil | kein Grün | maximales Grün | 8 |
| B | Blauanteil | kein Blau | maximales Blau | 8 |
Farbmischung – wichtige Kombinationen:
| Farbe | R | G | B | Binär (R G B) | Vorschau |
|---|---|---|---|---|---|
| Schwarz | 0 | 0 | 0 | 00000000 00000000 00000000 | |
| Weiß | 255 | 255 | 255 | 11111111 11111111 11111111 | |
| Rot | 255 | 0 | 0 | 11111111 00000000 00000000 | |
| Grün | 0 | 255 | 0 | 00000000 11111111 00000000 | |
| Blau | 0 | 0 | 255 | 00000000 00000000 11111111 | |
| Gelb | 255 | 255 | 0 | 11111111 11111111 00000000 | |
| Cyan | 0 | 255 | 255 | 00000000 11111111 11111111 | |
| Magenta | 255 | 0 | 255 | 11111111 00000000 11111111 |
Vollständiges Beispiel – 2×1-Bild (Rot + Blau):
Pixel 1 – R: 11111111 = 255
Pixel 1 – G: 00000000 = 0
Pixel 1 – B: 00000000 = 0
Pixel 2 – R: 00000000 = 0
Pixel 2 – G: 00000000 = 0
Pixel 2 – B: 11111111 = 255
Gesamt: 2 + 6 = 8 Bytes
💾 Speicherbedarf vergleichen
Wie viel Speicher braucht dasselbe Bild in verschiedenen Formaten? Beispiel: ein 10×10-Bild:
| Format | Bits/Pixel | Nutzlast-Bits | Nutzlast-Bytes | Gesamt |
|---|---|---|---|---|
| SW (1 Bit) | 1 | 100 | 13 | 15 Bytes |
| Grau 2 Bit | 2 | 200 | 25 | 27 Bytes |
| Grau 8 Bit | 8 | 800 | 100 | 102 Bytes |
| RGB 24 Bit | 24 | 2400 | 300 | 302 Bytes |
🗜️ Komprimierung mit Run-Length Encoding (RLE)
Run-Length Encoding (RLE) ist eine einfache Methode, um Bilder platzsparender zu speichern. Die Idee: Statt jeden Pixel einzeln zu speichern, wird wie oft ein Pixel vorkommt + welche Farbe er hat gespeichert.
Beispiel ohne RLE (16 Bit):
Bits: 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0
Gesamt: 16 Bit = 2 Byte
Dasselbe mit RLE (12 Bit):
Run 2: Anzahl=8, Farbe=1 (schwarz) → 00001000 11111111
Run 3: Anzahl=3, Farbe=0 (weiß) → 00000011 00000000
Gesamt: 3 Paare × 2 Byte = 6 Byte statt 2 Byte – hier noch kein Vorteil!
Wann lohnt sich RLE?
| Bild | Ohne RLE | Mit RLE | Ersparnis |
|---|---|---|---|
| Schachbrett 8×8 | 8 Byte | 128 Byte | ❌ schlechter |
| Weißes Bild 8×8 | 8 Byte | 2 Byte | ✅ 75 % gespart |
| Logo mit großen Flächen | viel | wenig | ✅ sehr gut |
| Foto mit vielen Details | wenig | mehr | ❌ schlechter |
📝 Zusammenfassung – alles auf einen Blick
| Begriff | Bedeutung | Merksatz |
|---|---|---|
| Pixel | Kleinster Bildpunkt | „Picture Element" |
| Bit | Kleinste Informationseinheit (0 oder 1) | „Binary Digit" |
| Byte | 8 Bit zusammen → Werte 0–255 | „8 Bits = 1 Byte" |
| Header | Metadaten am Anfang (Breite, Höhe, …) | „Etikett der Bilddose" |
| Nutzlast | Die eigentlichen Pixeldaten | „Inhalt der Dose" |
| RGB | Rot + Grün + Blau, je 0–255 | „3 × 8 Bit = 24 Bit pro Pixel" |
| RLE | Komprimierung: Anzahl + Farbe | „Gut bei langen gleichen Folgen" |
❓ Teste dein Wissen!
1. Ein Bild ist 5 Pixel breit und 3 Pixel hoch. Wie viele Pixel hat es insgesamt? → 5 × 3 = 15 Pixel
2. Wie viele Bytes braucht ein SW-Bild mit 20 Pixeln? → ⌈20 ÷ 8⌉ = 3 Bytes Nutzlast + 2 Header = 5 Bytes
3. Wie viele Graustufen hat ein 4-Bit-Grauwertbild? → 2⁴ = 16 Graustufen
4. Was ergibt R=255, G=255, B=0? → Gelb 🟡
5. Welcher Dezimalwert steckt in
00001010?
→ 8 + 2 = 10
6. Ein RGB-Bild ist 3×3 Pixel groß. Wie viele Nutzlast-Bytes braucht es? → 3 × 3 × 3 = 27 Bytes
7. Wann lohnt sich RLE? → Bei langen Folgen gleicher Pixel (einfache Grafiken, Logos)