add quantization visual to termin-2, restructure jpeg section

This commit is contained in:
2026-01-23 11:32:34 +01:00
parent 93e8ced463
commit 7e878c27ef
2 changed files with 110 additions and 25 deletions

View File

@@ -106,7 +106,7 @@ Hochschule der Medien Stuttgart
**Ein Dateiformat definiert:**
- Ob und wie Daten komprimiert werden
- Welche Metadaten enthalten sind
- Wie Daten *codiert* und *decodiert* (*Co·dec*)
- Wie Daten *»codiert«"* und *»decodiert«* (*Co·dec*)
| Ziel | Bild | Audio | Dokument |
|------|------|-------|----------|
@@ -354,9 +354,9 @@ Banding: Zu wenig Bits für feine Farbabstufungen.
| 30 | ~50 KB | Deutlich sichtbar |
**Sweet Spot: 85-90**
~10× Kompression, für Menschen kaum unterscheidbar.
~10× Kompression ist für den Menschen kaum unterscheidbar.
<small>¹ je nach Programm seine eigene Bedeutung von bspw. f80%</small>
<small>¹ je nach Programm unterschiedliche Kompression</small>
<!--
Quality 100 ist nicht "unkomprimiert".
@@ -377,9 +377,15 @@ Für Archivierung: 90-100 oder gleich PNG/RAW.
---
<!-- _class: klausur -->
<!-- _header: '' -->
<!-- _footer: '' -->
<!-- _backgroundColor: #e3f2fd -->
![bg right:20%](./assets/Barn-yuv.png)
# JPEG: Schritt 1 Farbraum wechseln
# JPEG: Schritt 1 Farbraumkonversion
**RGB → Y'CbCr** (seltener Y'UV)
@@ -431,47 +437,100 @@ Das Auge merkt es kaum, weil Helligkeit erhalten bleibt.
---
# JPEG: Schritt 3 DCT
# JPEG: Schritt 3 Block-Aufteilung
**Discrete Cosine Transform:**
Bild in 8×8-Pixel-Blöcke aufteilen.
Jeden Block in **räumliche Frequenzen** zerlegen.
**Das Bild wird in 8×8-Pixel-Blöcke zerlegt.**
**Räumliche Frequenz = Wie schnell ändern sich Pixelwerte?**
- **Niedrig:** Große, gleichmäßige Flächen (Himmel)
- **Hoch:** Schnelle Wechsel, feine Details (Haare, Kanten)
Jeder Block wird unabhängig verarbeitet.
Bei 1920×1080: Das sind 240 × 135 = 32.400 Blöcke.
**Level Shift:**
Alle Pixelwerte werden um 128 verschoben.
Bereich vorher: 0 bis 255
Bereich nachher: 128 bis +127
**Warum 128?**
Die DCT arbeitet besser mit Werten, die um Null zentriert sind.
<!--
Die Block-Aufteilung ist der Grund für "Blocking-Artefakte" bei starker Kompression.
Benachbarte Blöcke werden völlig unabhängig verarbeitet.
**Vorteil:** Die meiste Bildinformation steckt in niedrigen Frequenzen.
NICHT Tonhöhe! Räumliche Frequenz = Änderungsrate der Helligkeit im Raum.
Niedrige Frequenz: Langsamer Übergang von hell zu dunkel
Hohe Frequenz: Schneller Wechsel (z.B. Schachbrettmuster)
DCT ist wie ein Prisma: Zerlegt das Bild in seine Frequenzkomponenten.
Falls Bildbreite/Höhe nicht durch 8 teilbar:
Rand wird aufgefüllt (Padding).
-->
---
# JPEG: Schritt 4 Quantisierung
# JPEG: Schritt 4 DCT
**Discrete Cosine Transform**
Jeder 8×8-Block wird von Pixelwerten in 64 Frequenzkoeffizienten umgewandelt.
**Die 64 Koeffizienten:**
| Position | Name | Bedeutung |
|----------|------|-----------|
| (0,0) | DC | Durchschnittshelligkeit des Blocks |
| Rest | AC | Helligkeitsänderungen (Frequenzen) |
**Energy Compaction der Schlüssel zur Kompression:**
Bei typischen Fotos landet über 90% der visuellen Information in den ersten 1015 Koeffizienten (oben links). DCT selbst ist verlustfrei und reversibel!
<!--
Zwei-dimensionales Array mit 64
"Frequenz" hier = räumliche Frequenz = wie schnell ändert sich die Helligkeit?
Niedrige Frequenz (oben links): Langsame Änderungen, große gleichmäßige Flächen
Hohe Frequenz (unten rechts): Schnelle Änderungen, feine Details, Kanten
Energy Compaction bedeutet: DCT "sortiert" die Information nach Wichtigkeit.
Das ermöglicht gezieltes Wegwerfen im nächsten Schritt.
-->
---
# JPEG: Schritt 5 Quantisierung
**Hier passiert der Datenverlust.**
Hohe räumliche Frequenzen (Details) → grob speichern oder weglassen
Niedrige Frequenzen (Flächen) → erhalten
Die DCT hat sortiert: Wichtiges von Unwichtigem getrennt
**Jetzt wird aufgeräumt:**
- Wichtige Werte (niedrige Frequenz, große Flächen) → präzise behalten
- Unwichtige Werte (hohe Freqzenz, feine Details) → vergröbern oder auf Null setzen
**Das Ergebnis:**
Von den 64 Werten pro Block bleiben oft nur 515 übrig.
Der Rest wird zu Nullen (lassen sich extrem gut komprimieren)
<!--
Quantisierung = Division durch Quantisierungsmatrix + Rundung.
Je höher die Zahl in der Matrix, desto mehr wird verworfen.
Quality 100 ist nicht verlustfrei! Es ist nur minimaler Verlust.
**Quality-Einstellung im Bildprogramm:**
Hohe Quality = mehr Werte behalten = größere Datei
Niedrige Quality = mehr Nullen = kleinere Datei, mehr Artefakte
Die Entscheidung "was ist wichtig" trifft nicht der Encoder spontan
sie basiert auf Forschung darüber, was das menschliche Auge wahrnimmt.
Große gleichmäßige Flächen: Auge sehr empfindlich → behalten
Feine schnelle Wechsel: Auge weniger empfindlich → darf weg
Quality 100 ist übrigens nicht verlustfrei.
Es bedeutet nur: sehr wenig wegwerfen.
-->
---
![bg fit](./assets/quantized-image-8-colors.jpg)
<!-- _header: '' -->
<!-- _footer: 'https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization' -->
---
# JPEG: Schritt 5 Zigzag & RLE
**Nach Quantisierung:** Viele Werte sind 0 (v.a. hohe Frequenzen).
@@ -496,6 +555,11 @@ Lange Null-Sequenzen sind ideal für RLE.
---
<!-- _class: klausur -->
<!-- _header: '' -->
<!-- _footer: '' -->
<!-- _backgroundColor: #e3f2fd -->
# JPEG: Schritt 6 Huffman-Coding
**Verlustfreie Kompression der Restwerte**