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?
|
||||
|
||||
**Rasterbild = Pixelraster**
|
||||
Ein digitales Bild ist ein Raster aus Farbpunkten (Pixel).
|
||||
Jeder Pixel speichert einen RGB-Farbwert (3 Bytes).
|
||||
|
||||
**Beispiel: Full HD (1920×1080)**
|
||||
= 2.073.600 Pixel
|
||||
|
||||
**Jedes Pixel = 3 Bytes (RGB)**
|
||||
2.073.600 × 3 = **6,2 MB**
|
||||
= 2.073.600 Pixel × 3 Bytes = **6,2 MB**
|
||||
|
||||
<!--
|
||||
Zoom auf Pixel-Ebene zeigen.
|
||||
@@ -167,8 +165,9 @@ Smartphone-Speicher wäre ohne Kompression sofort voll.
|
||||
**Speicherbedarf (unkomprimiert):**
|
||||
Breite × Höhe × Farbtiefe (in Bytes)
|
||||
|
||||
**Farbtiefe:**
|
||||
| Bits | Farben | Anwendung |
|
||||
**Beispiele:** JPEG, PNG, WebP
|
||||
|
||||
| Bits (Farbtiefe) | Farben | Anwendung |
|
||||
|-----:|-------:|-----------|
|
||||
| 1 | 2 | Schwarz/Weiß (Fax) |
|
||||
| 8 | 256 | Graustufen, GIF |
|
||||
@@ -255,7 +254,7 @@ Keine Information geht verloren.
|
||||
| **Dateigröße** | Abhängig von Auflösung | Abhängig von Komplexität |
|
||||
| **Formate** | JPEG, PNG, WebP | SVG, PDF, AI |
|
||||
| **Bearbeitung** | Pixel-basiert | Objekt-basiert |
|
||||
| **Kompression** | Verlustbehaftet | Verlustfrei |
|
||||
| **Kompression** | meistens verlustbehaftet | Verlustfrei |
|
||||
|
||||
<!--
|
||||
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
|
||||
|
||||
**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: '' -->
|
||||
<!-- _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 -->
|
||||
|
||||
# Andere Bildformate
|
||||
@@ -804,70 +815,110 @@ P/B-Frames speichern nur Unterschiede
|
||||
|
||||
# Drei Kompressionsprinzipien
|
||||
|
||||
**1. Spatial Compression (Intra-Frame)**
|
||||
* **1. Spatial Compression (Intra-Frame)**
|
||||
Jedes Bild einzeln komprimieren (wie JPEG)
|
||||
|
||||
**2. Temporal Compression (Inter-Frame)**
|
||||
* **2. Temporal Compression (Inter-Frame)**
|
||||
Nur Änderungen zwischen Bildern speichern
|
||||
|
||||
**3. Motion Compensation**
|
||||
* **3. Motion Compensation**
|
||||
Bewegung beschreiben statt Pixel kopieren
|
||||
|
||||
<!--
|
||||
Spatial: Innerhalb eines Bildes (räumlich)
|
||||
Temporal: Zwischen Bildern (zeitlich)
|
||||
BEGRIFFE:
|
||||
- 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.
|
||||
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):**
|
||||
Vollständiges Bild, unabhängig komprimiert
|
||||
Groß, aber Ankerpunkt für Navigation
|
||||
**Jedes Bild einzeln komprimieren – wie JPEG**
|
||||
|
||||
**P-Frame (Predicted):**
|
||||
Referenziert vorherige Frames
|
||||
Speichert nur Unterschiede
|
||||
Analysiert Redundanz *innerhalb* eines Frames:
|
||||
- DCT (Frequenzanalyse)
|
||||
- Quantisierung (Details entfernen)
|
||||
- Entropie-Coding
|
||||
|
||||
**B-Frame (Bi-directional):**
|
||||
Referenziert vorherige UND zukünftige Frames
|
||||
Beste Kompression, aber komplexer
|
||||
**→ I-Frame (Keyframe)**
|
||||
Vollständiges Bild, unabhängig dekodierbar.
|
||||
|
||||
<!--
|
||||
GOP = Group of Pictures
|
||||
Typisch: I - B - B - P - B - B - P - B - B - I
|
||||
|
||||
I-Frames alle 1-2 Sekunden für Seeking.
|
||||
I = Intra = innerhalb
|
||||
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 1: Ball bei Position (100, 200)
|
||||
Frame 2: Ball bei Position (120, 200)
|
||||
| Frame-Typ | Referenziert | Größe |
|
||||
|-----------|--------------|-------|
|
||||
| **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:**
|
||||
"Ball bewegt sich 20 Pixel nach rechts"
|
||||
|
||||
**Enormer Effizienzgewinn bei Video mit Bewegung.**
|
||||
**GOP (Group of Pictures):** I - B - B - P - B - B - P - B - B - I
|
||||
|
||||
<!--
|
||||
Motion Vectors beschreiben Bewegung von Blöcken.
|
||||
Der Decoder rekonstruiert das Bild aus Referenz + Bewegung.
|
||||
ABKÜRZUNGEN:
|
||||
- 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.
|
||||
Funktioniert schlecht bei: Szenenwechseln, Chaos (Konfetti).
|
||||
90% eines Frames ist oft identisch mit dem vorherigen.
|
||||
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