termin-2: restructure video compression into 3 numbered slides
- add "was ist ein digitales bild?" intro slide with context - split compression into: spatial, temporal, motion compensation - add i/p/b frame abbreviation explanations in speaker notes - add terminology notes (intra/inter vs spatial/temporal) - update motion compensation with 16x16 pixel block example
This commit is contained in:
@@ -138,13 +138,11 @@ Rechts: Stark komprimiert (JPEG-Artefakte sichtbar)
|
|||||||
|
|
||||||
# Was ist ein digitales Bild?
|
# Was ist ein digitales Bild?
|
||||||
|
|
||||||
**Rasterbild = Pixelraster**
|
Ein digitales Bild ist ein Raster aus Farbpunkten (Pixel).
|
||||||
|
Jeder Pixel speichert einen RGB-Farbwert (3 Bytes).
|
||||||
|
|
||||||
**Beispiel: Full HD (1920×1080)**
|
**Beispiel: Full HD (1920×1080)**
|
||||||
= 2.073.600 Pixel
|
= 2.073.600 Pixel × 3 Bytes = **6,2 MB**
|
||||||
|
|
||||||
**Jedes Pixel = 3 Bytes (RGB)**
|
|
||||||
2.073.600 × 3 = **6,2 MB**
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Zoom auf Pixel-Ebene zeigen.
|
Zoom auf Pixel-Ebene zeigen.
|
||||||
@@ -167,8 +165,9 @@ Smartphone-Speicher wäre ohne Kompression sofort voll.
|
|||||||
**Speicherbedarf (unkomprimiert):**
|
**Speicherbedarf (unkomprimiert):**
|
||||||
Breite × Höhe × Farbtiefe (in Bytes)
|
Breite × Höhe × Farbtiefe (in Bytes)
|
||||||
|
|
||||||
**Farbtiefe:**
|
**Beispiele:** JPEG, PNG, WebP
|
||||||
| Bits | Farben | Anwendung |
|
|
||||||
|
| Bits (Farbtiefe) | Farben | Anwendung |
|
||||||
|-----:|-------:|-----------|
|
|-----:|-------:|-----------|
|
||||||
| 1 | 2 | Schwarz/Weiß (Fax) |
|
| 1 | 2 | Schwarz/Weiß (Fax) |
|
||||||
| 8 | 256 | Graustufen, GIF |
|
| 8 | 256 | Graustufen, GIF |
|
||||||
@@ -255,7 +254,7 @@ Keine Information geht verloren.
|
|||||||
| **Dateigröße** | Abhängig von Auflösung | Abhängig von Komplexität |
|
| **Dateigröße** | Abhängig von Auflösung | Abhängig von Komplexität |
|
||||||
| **Formate** | JPEG, PNG, WebP | SVG, PDF, AI |
|
| **Formate** | JPEG, PNG, WebP | SVG, PDF, AI |
|
||||||
| **Bearbeitung** | Pixel-basiert | Objekt-basiert |
|
| **Bearbeitung** | Pixel-basiert | Objekt-basiert |
|
||||||
| **Kompression** | Verlustbehaftet | Verlustfrei |
|
| **Kompression** | meistens verlustbehaftet | Verlustfrei |
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Die Entscheidung hängt vom Inhalt ab:
|
Die Entscheidung hängt vom Inhalt ab:
|
||||||
@@ -301,6 +300,64 @@ Niedrige Frequenzen = langsame Wechsel = große Flächen
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<!-- _header: '' -->
|
||||||
|
<!-- _footer: '' -->
|
||||||
|
|
||||||
|
<!---->
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
# Grenzen der Kompression: JPEG-Artefakte
|
||||||
|
|
||||||
|
**Bei hoher Kompression sichtbar:**
|
||||||
|
|
||||||
|
* **Posterization:**
|
||||||
|
Farbverläufe werden stufig
|
||||||
|
|
||||||
|
* **"Blocking":**
|
||||||
|
8×8-Blöcke werden sichtbar (Block-Grenzen)
|
||||||
|
|
||||||
|
* **Ringing:**
|
||||||
|
"Ghosting" an scharfen Kanten (Gibbs’sches Phänomen)
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Diese Artefakte entstehen durch die 8×8-Block-Struktur
|
||||||
|
und aggressive Quantisierung.
|
||||||
|
|
||||||
|
Blocking: Benachbarte Blöcke werden unabhängig komprimiert.
|
||||||
|
Ringing: DCT hat Probleme mit harten Kanten.
|
||||||
|
Banding: Zu wenig Bits für feine Farbabstufungen.
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# JPEG-Qualität in der Praxis
|
||||||
|
|
||||||
|
| Quality¹ | Typische Größe (12 MP) | Artefakte |
|
||||||
|
|--------:|----------------------:|-----------|
|
||||||
|
| 100 | 2-3 MB | Minimal |
|
||||||
|
| 85-90 | 200-400 KB | Kaum sichtbar |
|
||||||
|
| 60 | ~100 KB | Bei genauem Hinsehen |
|
||||||
|
| 30 | ~50 KB | Deutlich sichtbar |
|
||||||
|
|
||||||
|
**Sweet Spot: 85-90**
|
||||||
|
~10× Kompression, für Menschen kaum unterscheidbar.
|
||||||
|
|
||||||
|
<small>¹ je nach Programm andere Einstellungen beim Kodieren</small>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Quality 100 ist nicht "unkomprimiert".
|
||||||
|
Es ist minimale Lossy-Kompression.
|
||||||
|
|
||||||
|
Für Web und Social Media: 60-80 oft ausreichend.
|
||||||
|
Für Archivierung: 90-100 oder gleich PNG/RAW.
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
# JPEG: Schritt 1 – Farbraum
|
# JPEG: Schritt 1 – Farbraum
|
||||||
|
|
||||||
**RGB → YCbCr** (auch 3 Werte pro Pixel, nur anders aufgeteilt)
|
**RGB → YCbCr** (auch 3 Werte pro Pixel, nur anders aufgeteilt)
|
||||||
@@ -327,7 +384,7 @@ Der Clou: Jetzt können wir Helligkeit und Farbe getrennt behandeln.
|
|||||||
<!-- _header: '' -->
|
<!-- _header: '' -->
|
||||||
<!-- _footer: '' -->
|
<!-- _footer: '' -->
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -458,52 +515,6 @@ Color Banding (Verläufe werden "treppig")
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# JPEG-Artefakte
|
|
||||||
|
|
||||||
**Bei hoher Kompression sichtbar:**
|
|
||||||
|
|
||||||
**Blocking:**
|
|
||||||
8×8-Blöcke werden sichtbar (Block-Grenzen)
|
|
||||||
|
|
||||||
**Ringing:**
|
|
||||||
"Geister" um scharfe Kanten (Gibbs-Phänomen)
|
|
||||||
|
|
||||||
**Color Banding:**
|
|
||||||
Farbverläufe werden stufig
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Diese Artefakte entstehen durch die 8×8-Block-Struktur
|
|
||||||
und aggressive Quantisierung.
|
|
||||||
|
|
||||||
Blocking: Benachbarte Blöcke werden unabhängig komprimiert.
|
|
||||||
Ringing: DCT hat Probleme mit harten Kanten.
|
|
||||||
Banding: Zu wenig Bits für feine Farbabstufungen.
|
|
||||||
-->
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# JPEG-Qualität in der Praxis
|
|
||||||
|
|
||||||
| Quality | Typische Größe (12 MP) | Artefakte |
|
|
||||||
|--------:|----------------------:|-----------|
|
|
||||||
| 100 | 2-3 MB | Minimal |
|
|
||||||
| 85-90 | 200-400 KB | Kaum sichtbar |
|
|
||||||
| 60 | ~100 KB | Bei genauem Hinsehen |
|
|
||||||
| 30 | ~50 KB | Deutlich sichtbar |
|
|
||||||
|
|
||||||
**Sweet Spot: 85-90**
|
|
||||||
~10× Kompression, für Menschen kaum unterscheidbar.
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Quality 100 ist nicht "unkomprimiert".
|
|
||||||
Es ist minimale Lossy-Kompression.
|
|
||||||
|
|
||||||
Für Web und Social Media: 60-80 oft ausreichend.
|
|
||||||
Für Archivierung: 90-100 oder gleich PNG/RAW.
|
|
||||||
-->
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<!-- _class: lead -->
|
<!-- _class: lead -->
|
||||||
|
|
||||||
# Andere Bildformate
|
# Andere Bildformate
|
||||||
@@ -804,70 +815,110 @@ P/B-Frames speichern nur Unterschiede
|
|||||||
|
|
||||||
# Drei Kompressionsprinzipien
|
# Drei Kompressionsprinzipien
|
||||||
|
|
||||||
**1. Spatial Compression (Intra-Frame)**
|
* **1. Spatial Compression (Intra-Frame)**
|
||||||
Jedes Bild einzeln komprimieren (wie JPEG)
|
Jedes Bild einzeln komprimieren (wie JPEG)
|
||||||
|
|
||||||
**2. Temporal Compression (Inter-Frame)**
|
* **2. Temporal Compression (Inter-Frame)**
|
||||||
Nur Änderungen zwischen Bildern speichern
|
Nur Änderungen zwischen Bildern speichern
|
||||||
|
|
||||||
**3. Motion Compensation**
|
* **3. Motion Compensation**
|
||||||
Bewegung beschreiben statt Pixel kopieren
|
Bewegung beschreiben statt Pixel kopieren
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Spatial: Innerhalb eines Bildes (räumlich)
|
BEGRIFFE:
|
||||||
Temporal: Zwischen Bildern (zeitlich)
|
- Spatial = Intra-Frame: Kompression innerhalb eines Bildes (2D, wie JPEG)
|
||||||
|
- Temporal = Inter-Frame: Kompression zwischen Bildern (über Zeit)
|
||||||
|
- Motion Compensation: Technik innerhalb von Inter-Frame
|
||||||
|
|
||||||
|
ZUSAMMENHANG:
|
||||||
|
- I-Frames nutzen nur Intra-Frame/Spatial (jedes Bild für sich)
|
||||||
|
- P/B-Frames nutzen Inter-Frame/Temporal + Motion Compensation
|
||||||
|
|
||||||
Video hat massive zeitliche Redundanz.
|
Video hat massive zeitliche Redundanz.
|
||||||
90% eines Frames ist oft identisch mit dem vorherigen.
|
90% eines Frames ist oft identisch mit dem vorherigen.
|
||||||
|
|
||||||
|
QUELLEN:
|
||||||
|
- O'Reilly "Web Design in a Nutshell" Ch. 34.2.2: https://www.oreilly.com/library/view/web-design-in/0596009879/ch34s02s02.html
|
||||||
|
- ScienceDirect "Temporal Compression": https://www.sciencedirect.com/topics/computer-science/temporal-compression
|
||||||
-->
|
-->
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# I-Frames, P-Frames, B-Frames
|
# 1. Spatial Compression (Intra-Frame)
|
||||||
|
|
||||||
**I-Frame (Intra):**
|
**Jedes Bild einzeln komprimieren – wie JPEG**
|
||||||
Vollständiges Bild, unabhängig komprimiert
|
|
||||||
Groß, aber Ankerpunkt für Navigation
|
|
||||||
|
|
||||||
**P-Frame (Predicted):**
|
Analysiert Redundanz *innerhalb* eines Frames:
|
||||||
Referenziert vorherige Frames
|
- DCT (Frequenzanalyse)
|
||||||
Speichert nur Unterschiede
|
- Quantisierung (Details entfernen)
|
||||||
|
- Entropie-Coding
|
||||||
|
|
||||||
**B-Frame (Bi-directional):**
|
**→ I-Frame (Keyframe)**
|
||||||
Referenziert vorherige UND zukünftige Frames
|
Vollständiges Bild, unabhängig dekodierbar.
|
||||||
Beste Kompression, aber komplexer
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
GOP = Group of Pictures
|
I = Intra = innerhalb
|
||||||
Typisch: I - B - B - P - B - B - P - B - B - I
|
|
||||||
|
|
||||||
I-Frames alle 1-2 Sekunden für Seeking.
|
|
||||||
Wenn du im Video springst, sucht der Player den nächsten I-Frame.
|
Wenn du im Video springst, sucht der Player den nächsten I-Frame.
|
||||||
|
|
||||||
B-Frames sind am effizientesten, aber erfordern Lookahead.
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Motion Compensation
|
# 2. Temporal Compression (Inter-Frame)
|
||||||
|
|
||||||
**Idee:** Bewegung beschreiben statt Pixel kopieren.
|
**Nur Änderungen zwischen Bildern speichern**
|
||||||
|
|
||||||
**Beispiel:**
|
| Frame-Typ | Referenziert | Größe |
|
||||||
Frame 1: Ball bei Position (100, 200)
|
|-----------|--------------|-------|
|
||||||
Frame 2: Ball bei Position (120, 200)
|
| **I-Frame** (Intra) | Keine Referenz (Keyframe) | 100% |
|
||||||
|
| **P-Frame** (Predicted) | Vorherige Frames | ~30% |
|
||||||
|
| **B-Frame** (Bi-directional) | Vorherige + zukünftige | ~15% |
|
||||||
|
|
||||||
**Statt 2 komplette Frames:**
|
**GOP (Group of Pictures):** I - B - B - P - B - B - P - B - B - I
|
||||||
"Ball bewegt sich 20 Pixel nach rechts"
|
|
||||||
|
|
||||||
**Enormer Effizienzgewinn bei Video mit Bewegung.**
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Motion Vectors beschreiben Bewegung von Blöcken.
|
ABKÜRZUNGEN:
|
||||||
Der Decoder rekonstruiert das Bild aus Referenz + Bewegung.
|
- I = Intra (innerhalb) – vollständiges Bild
|
||||||
|
- P = Predicted (vorhergesagt) – basiert auf vorherigen
|
||||||
|
- B = Bi-directional (bidirektional) – vorherige + zukünftige
|
||||||
|
|
||||||
Funktioniert gut bei: Kameraschwenks, bewegten Objekten.
|
90% eines Frames ist oft identisch mit dem vorherigen.
|
||||||
Funktioniert schlecht bei: Szenenwechseln, Chaos (Konfetti).
|
P/B-Frames sind winzig im Vergleich zu I-Frames.
|
||||||
|
I-Frames alle 1-2 Sekunden für Seeking.
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 3. Motion Compensation
|
||||||
|
|
||||||
|
**Bewegung beschreiben statt Pixel kopieren**
|
||||||
|
|
||||||
|
**Beispiel:** Ein 16×16 Pixel-Block
|
||||||
|
|
||||||
|
Frame 1: Block an Position (100, 200)
|
||||||
|
Frame 2: Block an Position (120, 200)
|
||||||
|
|
||||||
|
**Statt Block zweimal speichern:**
|
||||||
|
→ Motion Vector: "verschiebe um (+20, 0)"
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Macroblocks: Typisch 16×16 oder 8×8 Pixel.
|
||||||
|
Motion Vectors beschreiben Verschiebung jedes Blocks.
|
||||||
|
Funktioniert gut bei: Kameraschwenks, bewegte Objekte.
|
||||||
|
Funktioniert schlecht bei: Szenenwechsel, Konfetti.
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- _header: '' -->
|
||||||
|
<!-- _footer: '' -->
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
<!--
|
||||||
|
Visualisierung: I/P/B-Frame-Abhängigkeiten
|
||||||
|
I-Frame = Vollbild (Keyframe)
|
||||||
|
P/B-Frames speichern nur Unterschiede
|
||||||
-->
|
-->
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
BIN
courses/223015b/slides/assets/Asterisk_with_jpg-artefacts.png
Normal file
BIN
courses/223015b/slides/assets/Asterisk_with_jpg-artefacts.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
BIN
courses/223015b/slides/assets/Posterization_example.jpg
Normal file
BIN
courses/223015b/slides/assets/Posterization_example.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 241 KiB |
Reference in New Issue
Block a user