"B" und

Transcription

"B" und
Multimedia-Technik
Prof. Dr.-Ing. Robert J. Wierzbicki
University of Applied Sciences Mittweida
18.04.2006
Multimedia-Systeme
Definition
• Ein Multimedia-System ermöglicht die integrierte
– Speicherung
– Übertragung und
– Darstellung der diskreten Medien Text, Grafik und
Standbild sowie der kontinuierlichen Medien Audio
und Video auf einem digitalen Rechensystem.
Forderungen
• Integration
– die Medien stehen zueinander in Bezug, z.B. durch
Synchronisation von Bild und Ton. Dieser Bezug wird
durch die Rechnersteuerung realisiert, so daß in der
Regel keine externen analogen Geräte erforderlich
sind.
• Unabhängigkeit der Information
– die einzelnen Medien können getrennt voneinander
bearbeitet werden und meist auch getrennt
voneinander gespeichert sind.
Hypermedia
Hypertext
• Hypertext stellt eine nichtlineare Organisation von
textueller Information dar.
• "Nichtlinear" bedeutet, daß man die Information in
beliebiger Reihenfolge betrachten kann. Man spring
von einem "Punkt" zum anderen.
E-Texte ÅÆ Hypertexte
Hypertext-System.
Das Konzept von Knoten und Kanten
Hyperlink
Knoten (Themen, Seiten, Textblock)
nodes / LDUs (logical data units)
Kanten (Verweise, Sprünge)
links
Zielpunkte
destination/reference points, link regions
Anker (Verknüpfungsanzeiger, Verweis, Button)
reference Æ link point, hotword, button
Hauptelemente eines Hypertext-Systems
• Knoten
– die einzelnen, voneinander unabhängigen
Informationsblöcke. Der Inhalt eines Knotens muss
dabei aus sich selbst heraus verständlich sein. Er kann
nicht voraussetzen, daß bestimmte andere Knoten
vorher gelesen wurden.
• Anker
– können in den Knoten existieren, von denen aus
Kanten zu Zielpunkten in anderen Knoten führen. In
einem Knoten können mehrere Zielpunkte existieren.
• Kante
– Link zwischen Anker und Zielpunkt
Beziehung der Knoten zueinander
1:1
…
1:n
n
Hypermedia-System
• Die Kombination aus Hypertext und MultimediaSystemen (Verallgemeinerungen von Hypertexten).
• Hypertext-System Æ
das Konzept der Knoten und Kanten
• Multimedia-System Æ
das Prinzip der Medienintegration.
HYPERTEXT
HYPERMEDIA
MULTIMEDIA
Hypernetz im Hypermedia-System
Hypermedia – Vor- und Nachteile
• Vorteile
– Entspricht dem menschlichen Denken
– Es gibt nicht nur eine Art,ein Dokument zu betrachten
– Minimaler Informationsverlust (keine Linearisierung)
• Nachteile
–
–
–
–
–
Sehr komplex
Nachvollziehen schwierig
Kreisbewegung möglich
Orientierungsverlust
Kein Überblick
Verallgemeinerung von Hyperlinks
in Hypermedia-Systemen.
• Bezeichnung für sensible Textbereiche (Æ Hotwords)
bzw. andere Elemente (z.B. Bild) innerhalb einer
interaktiven Anwendung
– Funktion eines Verknüpfungsanzeigers (Ankers)
• Link zum anderen Dokument (z.B. Button Æ URL)
• Verweis an eine Textstelle im gleichen bzw. in einem
anderen Dokument (z.B. Hotword Æ Anker)
• Spezielle Funktion (z.B. Popup-Hilfe, Video-Abspielen)
– Dargestellt meistens durch Veränderung von
Eigenschaften (Farbe, Zeichenformat, Cursor, …)
Verlinkung
• Intrahypertextuell
innerhalb des selben Hypertextes
• Interhypertextuell
zwei Dokumente des gleichen Hypertextes
• Extrahypertextuell
zwei Dokumente verschiedener Hypertexte
Erscheinungsformen der Verlinkung
Intrahypertextuell
A
Interhypertextuell
A
B
Extrahypertextuell
Hypertext 1
Hypertext 2
A
B
Klassifikation von Links bezüglich der Lokalität
des Ausgangs- und Zielankers
• Globaler Anker
ein ganzes Dokuments (z.B. URL)
• Lokaler Anker
ein Teilbereich eines Dokuments (Anker in HTML)
Klassifizierung der Verlinkung
GLOBAL - GLOBAL
A
B
LOKAL - GLOBAL
A
B
LOKAL - LOKAL
A
B
GLOBAL - LOKAL
A
B
Anker und Links in HTML
• Syntax des Zielpunktes (Anker):
<A NAME="zielpunktname">ANKERTEXT</A>
optional
• Syntax des Links:
– local:
<A HREF="#zielpunktname">LINKTEXT</A>
– global:
<A HREF="URL#zielpunktname">LINKTEXT</A>
optional
Javascript-Hyperlinks
• <A HREF="#"
onclick="winopen('bild.jpg')">
<IMG SRC="th_bild.jpg" ALT="">
</A>
• <A
onclick="winopen('bild.jpg')">
<IMG SRC="th_bild.jpg" ALT="">
</A>
• <A
onClick="f();"
HREF="f_help.htm">START</a>
Anwendungsbeispiele für Multimedia und
Hypermedia
• Elektronische Bücher
– eBook, Lexika, Handbücher, Hilfesysteme
• POI (point of information)
– Fahrplanauskunft, Stadtinformation, Informationsterminals auf Messen,
in Museen und Ausstellungen
• POS (point of sale)
– Katalogsysteme, Bestellsysteme mit Zahlungsmöglichkeit,
Verkaufsautomaten
• CSCW (computer supported co-operative work)
meist als verteilte Anwendung in Netz
– Videokonferenzen, asynchrone Zusammenarbeit ("shared documents"),
synchrone Zusammenarbeit ("application sharing") ...
• Simulation
– Unterhaltung, Ausbildungssysteme
• Spiele
– Rollenspiele, Geschicklichkeitsspiele
Literatur
• Jakob Nielsen
"Multimedia, Hypertext und Internet - Grundlagen und
Praxis des elektronischen Publizierens"
Friedr. Vieweg & Sohn Verlagsgesellschaft mbH,
Braunschweig/Wiesbaden 1996
Physikalische Zeit
Physikalische Zeit
• Lineare, monoton wachsende Funktion
• Physikalische Zeit im Rechner
– diskrete Annäherung an "echte Zeit"
– "Zeitstempel" für Ereignisse
• Einsatz
– Synchronisation, z.B von Medienströmen
Echtzeitsysteme
• DIN 44300:
"Echtzeitbetrieb ist ein Betrieb eines Rechnersystems,
bei dem [...] die Verarbeitungsergebnisse innerhalb
einer vorgegebenen Zeitspanne verfügbar sind."
• Korrektes Systemverhalten
– korrektes logisches Ergebnis
– Ergebnis steht zur korrekten Zeit bereit
Medienströme
Medienströme
• Nicht periodische Datenströme
– Dateneinheiten in zufälligen Abständen
– Diskrete Medien: Grafik, Text, Benutzereingaben
t
Medienströme
• Periodische Datenströme
– Konstante Zeitintervalle zwischen Dateneinheiten
– Audio von CD, ISDN-Sprachübertragung, Fernsehen
t
Medienströme
• Schwach periodische Datenströme
– Periodisch veränderliche Lücken zwischen
Dateneinheiten
– z.B. Video mit zeitlicher Kompression
t
Medienströme
• Größe der Dateieinheiten
– konstant (Audio, Video)
– variabel (komprimiertes Video, diskrete Medien)
t
Datenübertragung
• asynchrone Übertragung
– keine zeitlichen Restriktionen für die Pakete eines
Datenstroms
• synchrone Übertragung
– definierte, maximale Verzögerung für jedes Paket
eines Datenstroms
• isochrone Übertragung
– definierte, maximale und minimale Verzögerung für
jedes Paket eines Datenstroms
Hybrides analog-digitales Multimedia-System
• Frühes Multimedia-System, Ende der 80er-Jahre:
Die Rechner steuern die analogen Medienströme,
zum Beispiel über analoge Video-Cross-Connects.
Digitales Multimedia-System
• Die Medienströme sind digital. Die Inhalte der Audio
und Videoströme können direkt im Rechner
verarbeitet werden.
Zeitunabhängige und zeitabhängige Medien
• Zeitunabhängige (statische) Medien
– Informationen haben keinen Zeitbezug
– alle "klassischen" Medien: Text, Grafik, Foto
• Zeitabhängige (kontinuierliche) Medien
– Information steckt auch in der Zeit
– Informationspakete periodisch angeordnet
– Beispiele: Audio, Video, Animation
Farbmodelle
Additive Farbmischung
• Tritt überall dort auf, wo Licht ausgesendet wird,
zum Beispiel beim Monitor.
• Die Grundfarben, aus denen man das komplette
Farbspektrum zusammenwischt, sind hier Rot, Grün
und Blau (RGB). Jede dieser drei Grundfarben besitzt
eine bestimmte Wellenlänge. Während es sich bei Rot
um ein langwelliges Licht handelt, ist Blau ein
kurzwelliges Licht. Durch Addition zweier
Wellenlängen erhält man eine andere Farbe.
• Die Addition der Wellenlängen aller drei Grundfarben
ergibt sdas weiße Licht.
Die Farbspektren des Lichts
Licht
Monitordarstellung
Druckbild
Subtraktive Farbmischung (Druck)
• Tritt überall dort auf, wo einfallendes Licht reflektiert
wird.
• Das Licht trifft auf das entsprechende Objekt, zum
Beispiel bedrucktes Papier, wobei ein Teil der
Wellenlängen absorbiert und ein anderer Teil
reflektiert wird.
• Die Grundfarben der subtraktiven Farbmischung sind
Cyan, Magenta und Gelb (Yellow). Durch Mischen
dieser drei Farben erhält man Schwarz (alle
Wellenlängen werden absorbiert). Man nennt diese
primären Farben auch Prozessfarben, wobei man bei
dieser Form der Farbmischung vom CMYK-Modell
spricht.
CMYK-Modell
• CMYK = CMY + K
Dabei steht der Buchstabe K für Black
(B ist bereits für "Blue" vergeben; "K" steht je nach
Auslegung für Key, Kontrast oder blacK )
• Schwarz wird zugegeben, um Tiefe zu verstärken und
ein echtes Schwarz für Strichzeichnungen und die
Schrift zu erzielen.
• Aufgrund von Ungenauigkeiten bei den Druckfarben
würde das Mischen der drei Primärfarben ein dunkles
Grau, aber nie ein richtiges Schwarz ergeben.
RGB-Farbmodell-Einheitswürfel
• Jede Farbe läßt sich aus den drei Grundfarben Rot,
Grün und Blau erzeugen (additives Farbmischsystem)
G
Grün
Gelb
(0,1,0)
(1,1,0)
Cyan
(0,1,1)
Weiss
(1,1,1)
Schwarz
(0,0,0)
Rot
(1,0,0)
Blau
(0,0,1)
B
R
Magenta
(1,0,1)
Das RGB-Farbmodell
• Anzahl von Frbnuancen, die mit dem RGB-Modell dargestellt
werden können ist abhängig von der Anzahl unterschiedlichen
Abstufungen der drei Grundfarben Rot, Grün und Blau
Grün
Cyan
G
(0,1,0)
(1,1,0)
Schwarz
(0,0,0)
Weiss
(1,1,1)
Anzahl der
Grundfarbe Blau
Anzahl
Farbnuancen
2
2
2
8
(1 Bit)
(1 Bit)
(1 Bit)
32
32
32
32.768
16.777.216
(5 Bit)
(5 Bit)
(5 Bit)
256
256
256
(8 Bit)
(8 Bit)
Rot
(1,0,0)
(0,0,1)
B
Anzahl der
Grundfarbe Grün
(8 Bit)
(0,1,1)
Blau
Gelb
Anzahl der
Grundfarbe
Rot
Magenta
(1,0,1)
R
8 + 8 + 8 = 24 Bit - Farbtiefe
Das RGB-Farbmodell
• Wird häufig von Software als internes Farbmodell
verwendet, da mit ihm auf einfache Weise gerechnet
werden kann und keine Umrechnung vorgenommen
werden muss, um die Farben auf dem Monitor
darzstellen
• Nachteil im direkten Einsatz :
von einem Wertetripel läßt sich nur schwer ein
Farbsinneseindruck ableiten
Das HSV-Farbmodell
• Das HSV-Farbmodell:
entspricht der menschlichen Beschreibung von Farbe
und wird durch die drei Parameter beschrieben:
Farbe (Hue),
Sättigung (Saturation) und
Helligkeit (Brightness Value).
Das HSV-Farbmodell
Die HSV-Pyramide
Grün
(120,1,1)
Cyan
V
Value [Brightness]
(Helligkeit)
Gelb
Weiss
(60,1,1)
(X,0,1)
H
(180,1,1)
Blau
(240,1,1)
Hue
(Farbe)
Magenta
(300,1,1)
Rot
(0,1,1)
Saturation
(Sättigung)
S
Die Farbe wird als
Winkel im Basissechseck
angegeben
Die Sättigung ist der
Abstand von der V-Achse
Schwarz
(X,X,0)
Die Helligkeit ist der
Abstand von der Sitze
der HSV-Pyramide
Colour-Wheel (am. Color-Wheel)
Colour-Picker
Web-Farben
(Macintosh System)
Spezielle Farbnamen
Macintosh: 256 Systemfarben
Die Web-Farbpalette
wurde vom MacSystempalette abgeleitet
Andere Farbmodelle
• CMY-Farbmodell (Printbereich):
Grundfarben: Cyan, Magenta, Gelb (Yellow)
• CMYK-Farbmodell (Printbereich):
Grundfarben: Cyan, Magenta, Gelb (Yellow)
und Schwarzanteil (K)
• Das CIE L*a*b-Farbmodell (Photoshop):
Lightness (Luminanz),
a-Komponente (blue bis yellow)
b-Komponente (green bis red),
a und b sind die sog. chromatischen Komponenten
CIE=Commission Internationale d'Eclairage (CIE)
Farbgestaltung
Rasterbilder
Pixel versus Vektor
Vektorbeschreibung:
Objekt: Linie
Schlüsselpunkte: P(1,4), P(4,1)
Farbe: #000000
Pixelbeschreibung:
P(1,1): #FFFFFF
P(1,2): #FFFFFF
P(1,3): #FFFFFF
P(1,4): #000000
P(2,1): #FFFFFF
P(2,2): #FFFFFF
P(2,3): #000000
P(2,4): #FFFFFF
P(3,1): #FFFFFF
P(3,2): #000000
P(3,3): #FFFFFF
P(3,4): #FFFFFF
P(4,1): #000000
P(4,2): #FFFFFF
P(4,3): #FFFFFF
P(4,4): #FFFFFF
Speicherplatzbedarf eines Rasterbildes
• Breite * Höhe * Farbtiefe in Bits/Pixel / 8 (Byte)
• Beispiel: 8px*5px*(24/8)=120 B (real 176 B)
x=8 px
y=5 px
• Beispiel: 16px*5px*(24/8)=240 B (real 536 B)
Speicherplatzbedarf eines Rasterbildes
• Um ein Bild korrekt darstellen zu können, muss die
Grafikkarte des Systems das Bild in ihren Speicher
laden.
• Hat die Grafikkarte z.B. 1 MByte Speicher, kann sie
Bilder bis 640*480 Pixel (VGA-Auflösung) bis zu
24bpp Farbtiefe auf dem Monitor darstellen:
640 * 480 * (24/8) =921600 B
Kompressionsarten
Datenkompression 1
• Text
– 1 Seite=64 Zeilen/Seite, 80 Zeichen/Zeile,
1 Byte/Zeichen
Æ 80×64×1×8 = 41 KBit/Seite
• PAL DV-Bild
– 24 Bit/Pixel, 720×576 Pixel/Bild
Æ 720×576×24 = 9,95 MBit/Bild
Datenkompression 2
• Audio (CD-Qualität)
– Abtastrate 44,1 kHz, 16 Bit pro Abtastwert
Æ 44,1×16=706 kBit/s Mono; 1,412 MBit/s Stereo
• PAL DV-Video
– 720×576 Pixel/Bild, 24 Bit/Pixel, 25 Bilder/s
Æ 720×576×24×25 =248,9 MBit/s.
Realistischer :
320×240 Pixel/Bild, 320×240×24×25=46,1 MBit/s
Verlustfreie Kompression
(lossless compression)
• Das Original kann 1:1 wiedergewonnen werden
• Kompressionsraten von 2:1 bis ca. 50:1 möglich
• Diese Kompressionsmethode findet vor allem dann
Einsatz, wenn mit komplexen, aufwendig zu
berechnenden oder teuren Bilddaten gearbeitet wird,
die nicht verloren gehen dürfen (zum Beispiel in der
Medizin, bei der Analyse von Satellitenbildern etc.).
• Beispiele:
RLE, LZW, Huffmann, CCITT, ZIP
Verlustbehaftete Kompression
(lossy compression)
• Nutzt die physiologische und
wahrnehmungspsychologische Eigenschaften des
Auges und des Ohres aus.
• Das kodierte Objekt unterscheidet sich vom Original.
• Durch zu starkes Komprimieren können durch den
Wegfall von Bilddaten Fehler im Bild entstehen; diese
nennt man Artefakte.
• Höhere Kompressionsraten als bei der verlustfreien
Kompression möglich (über 100:1, typisch: 50:1).
Kompressionsrate und Redundanz
• Kompressionsrate
KOMPRIMIERTE GRÖSSE
ORIGINALGRÖSSE
• Redundanz
Rd>0 BEI NEGATIVER
KOMPRESSION
Musterersetzung
(pattern substitution)
Prinzip der Musterersetzung
• Beispiel
A B C D E A B C D D A B C D D
1
3
1
2
1
1 3 1 2 1 2
Komprimierter Text
ABC Æ 1, DD Æ 2, DE Æ 3
2
RLE-Kompression
(Run Length Encoding)
Run length encoding (RLE)-Kompression
• Die einfachste Methode zur Bildkompression funktioniert durch Zusammenfassung gleicher,
aufeinanderfolgender Farbwerte.
• Prinzip:
Ersetze Wiederholungen desselben Zeichens im Text
("runs") jeweils durch einen Zähler und das Zeichen.
Run length encoding (RLE)-Kompression
• Der Algorithmus beginnt mit dem ersten Pixel in der
oberen linken Ecke und schaut nach, ob noch Pixel
gleicher Farbe folgen. Gespeichert wird dann das
Pixel und die Länge der gefundenen Pixelreihe. Daher
der Name Lauflängenkodierung (engl. Run length
encoding - RLE).
8
8
ORIGINAL: 4*4*(24/8)=48 B
KOMPRIMIERT: 2*(24/8)+2*1B=12 B
1 B(yte) für die Kodierung des Zählers
Negative Kompression
8
8
ORIGINAL: 4*4*(24/8)=48 B
KOMPRIMIERT: 2*(24/8)+2*1B=12 B
1 B(yte) für die Kodierung des Zählers
(
1
1
) *8
KOMPRIMIERT: 2*8*(24/8)+16*1B=64 B
negative Kompression auf 64/48=133%
Lauflängenkodierung für Binärdateien
111111111100000000001111111111
111111110000000000000011111111
111111100000000000000001111111
111111100000000000000001111111
111111110000000000000011111111
111111111100000000001111111111
10
8
7
7
8
10
10 10
14 8
16 7
16 7
14 8
10 10
Bei Binärdateien sind wir sicher, dass ein Run von Einsen stets
von einem Run von Nullen gefolgt wird und umgekehrt. Es
genügt deshalb, nur die Länge der Runs und ggf. das
Anfangszeichen zu speichern!
RLE
• Eigenschaften
– Qualitätsfreie Komprimierung
– Gutes Ergebnis bei Bildern mit großen, einfarbigen
Flächen (lange "runs")
– Schlechte bzw. negative Komprimierung bei stark
wechselnden Farbwerten
– Ungeeignet für detailreiche Bilder oder Fotos
• Verwendung
– Das Windows-BMP-Format bietet RLE für 8 bpp Bilder
– TIFF, PCX, FLI und FLC (FLI und FLC sind
grafikorientierte Animationen vom Programm
Autodesk Animator)
Kodierung mit konstanter Länge String BARBARA
• Beispielcode:
B A R
1 2 3
Kodierung von BARBARA mit konstanter Länge
(im Beispiel: 5 Bits / Zeichen)
B
A
R
B
A
R
A
00001000100001100001000100001100010
Kodierung mit variabler Länge
• Die klassischen Zeichencodes verwenden gleich viele
Bits für jedes Zeichen.
• Ansatz:
wenn verschiedene Zeichen mit unterschiedlichen
Häufigkeiten vorkommen, kann man für häufige
Zeichen wenige Bits und für seltene Zeichen mehr
Bits vorsehen.
Kodierung mit variabler Länge String BARBARA
• Beispielcode: B A R
1 0 2
Element
Häufigkeit
Code
A
42% (3)
0
B
29% (2)
1
R
29% (2)
10
Kodierung von BARBARA mit variabler Länge
(Bitlänge abhängig von der Häufigkeit des
Vorkommens im String)
B
1
A
0
R
10
B
1
A
0
R
10
Der Code kann nur eindeutig dekodiert werden,
wenn die Zeichenbegrenzer mitgespeichert werden.
Das vergrößert die Datenmenge erheblich!
A
0
Weitere Ideen
• Kodierung ohne explizite Begrenzer:
– Keine Kodierung eines Zeichens darf mit dem Anfang
der Kodierung eines anderen Zeichens
übereinstimmen.
– Kein Codewort ist der Prefix eines anderen
Codeworts.
Übung
Übung: RLE-Kodierung/Dekodierung
• Input:
var binaryData=[
["0000000000000011111111111111000000000000000000000000000111111111111110000000000000"],
["0000000001111111111111111111111110000000000000000011111111111111111111111100000000"],
["0000000011111111111111111111111111000000000000000111111111111111111111111110000000"],
["0000000011111111111111111111111111000000000000000111111111111111111111111110000000"],
["0000001111111111110000000111111111111000000000011111111111100000001111111111110000"],
["0000011111110000000000000000001111111000000000111111100000000000000000011111110000"],
["0000011111000000000000000000000011111000000000111110000000000000000000000111110000"],
["0000011100000000000000000000000000111000000000111000000000000000000000000001110000"],
["0000011100000000001111110000000000111000000000111000000000011111110000000001110000"],
["0000011100000000001111110000000000111000000000111000000000011111110000000001110000"],
["0000011100000000000000000000000000111000000000111000000000000000000000000001110000"],
["0000011110000000000000000000000011111000000000111100000000000000000000000111110000"],
["0000001111110000000000000000001111110000000000011111100000000000000000011111100000"],
["0000001111111111110000000111111111110000000000011111111111100000001111111111100000"],
["0000000011111111111111111111111111000000000000000111111111111111111111111110000000"],
["0000000001111111111111111111111110000000000000000011111111111111111111111100000000"],
["0000000000000011111111111111000000000000000000000000000111111111111110000000000000"]
]
Übung: RLE-Kodierung
• Input (Array Æ Text abgespeichert als *.js):
var binaryData=[
["0000000000000011111111111111000000000000000000000000000111111111111110000000000000"],
["0000000001111111111111111111111110000000000000000011111111111111111111111100000000"],
["0000000011111111111111111111111111000000000000000111111111111111111111111110000000"],
["0000000011111111111111111111111111000000000000000111111111111111111111111110000000"],
["0000001111111111110000000111111111111000000000011111111111100000001111111111110000"],
["0000011111110000000000000000001111111000000000111111100000000000000000011111110000"],
["0000011111000000000000000000000011111000000000111110000000000000000000000111110000"],
["0000011100000000000000000000000000111000000000111000000000000000000000000001110000"],
["0000011100000000001111110000000000111000000000111000000000011111110000000001110000"],
["0000011100000000001111110000000000111000000000111000000000011111110000000001110000"],
["0000011100000000000000000000000000111000000000111000000000000000000000000001110000"],
["0000011110000000000000000000000011111000000000111100000000000000000000000111110000"],
["0000001111110000000000000000001111110000000000011111100000000000000000011111100000"],
["0000001111111111110000000111111111110000000000011111111111100000001111111111100000"],
["0000000011111111111111111111111111000000000000000111111111111111111111111110000000"],
["0000000001111111111111111111111110000000000000000011111111111111111111111100000000"],
["0000000000000011111111111111000000000000000000000000000111111111111110000000000000"]
]
Excercise\RLE\binary-old.txt
Vorgehensweise
• Daten aus einem externen File einlesen ("binary.js")
• Kodierung / Dekodierung implementieren / testen:
function rleCode(str, delimiter) {
////////////////////////////////
// Entries:
// str
= string to be coded
// delimiter
= string delimiter (by default "|")
function rleDecode(codedStr, firstChar, delimiter) {
//////////////////////////////////////////////////
// Entries:
// codedStr
= string to be decoded
// firstChar = first bit in the string ('0' or '1')
// string delimiter (separation charachter)
Kodierungsalgorithmus
• Gegeben (Beispiel):
str=0001111110000000000001111...
• Überprüfung zeichenweise (Iteration):
– vorheriges Zeichen==aktuelles Zeichen? Æ
Counter erhöhen (cnt++)
– anderenfalls cnt+delimiter (String!) der bisher
konstruierten Zeichenkette hinzufügen
– Ergebnis in Array-Form zurückliefern:
code="3|6|12|4|...|";
var c=new Array(2);
c[0]=code.substring(0,code.length-1);
c[1]=firstChar;
Dekodierungsalgorithmus
• Gegeben (Beispiel):
codedStr="3|6|12|4|...|";
• Überprüfung zeichenweise (Iteration):
– aktuelles Zeichen==delimiter? Æ
mit Hilfe der aktuellen Wiederholungszahl eines Bits
eine entsprechende binäre Zeichenkette bilden:
bitString='12' Æ 12 mal '0' (bzw. '1')
aneinanderreihen Æ '000000000000'
– Ergebnis als String zurückliefern:
decodedStr="0001111110000000000001111..";
RW/SS04/excercise/RLE/binaryData-raw.htm
Codierung - Decodiereung
codedStr
decodedStr
0001111110000000000001111
3|6|12|4|...|
RLE-Dekodierung
• Dekodieren Sie die folgende Zeichenkette:
Coded string:
84|3|54|1|20|3|52|2|21|3|19|2|29|2|22|4|5|2|4|3|4|2|9|2|3|1|2|1|7|1|
3|2|7|2|12|5|3|4|3|4|4|4|5|4|2|5|5|4|1|6|2|4|11|2|2|2|2|2|1|2|3|2|4|
7|3|2|1|2|2|2|1|2|3|2|2|1|3|2|4|2|1|2|10|2|3|2|1|2|1|3|3|2|5|3|1|2|2|
2|1|3|2|2|6|1|2|2|3|2|3|2|1|3|10|2|3|1|2|5|4|3|4|2|2|2|2|5|3|2|5|2|2|
2|3|2|3|5|11|2|2|2|2|2|8|3|3|2|2|2|2|2|6|2|5|2|2|2|3|2|3|2|14|2|1|2|
3|2|9|2|3|2|2|2|2|2|6|2|5|2|1|3|3|2|3|2|14|5|3|2|1|1|4|1|1|2|4|2|1|2|
3|2|1|1|4|2|5|3|1|3|2|2|3|2|1|1|12|4|4|4|4|3|4|5|4|4|4|2|5|2|2|2|3|3|
2|4|35|3|74|2|75|2|75|1|124
Coded length: 507
First character: '1'
Rows: 18
Columns: 77
Musterkodierung mit Hilfe von Binärdaten
• Gegeben sei ein Array von Binärdaten wie im vorherigen
Beispiel. Schreiben Sie ein Programm zur Visualisierung
dieser Daten in ActionScript. Jedes Bit soll dabei durch
eine rechteckige Fläche repräsentiert werden.
• Beispiel:
binaryData=[[1,0,1],
[0,1,0],
[1,0,1]]
Huffmann-Codierung
Huffman-Codierung
• Wie findet man für gegebene Zeichenhäufigkeiten im
Text die optimale Bitkodierung für eine Kodierung mit
variabler Länge?
Huffman-Codierung
• David A. Huffman 1952
• Codierungsprinzip:
Erzeugen eines Huffman-Codebaumes
(Wahrscheinlichkeitstabelle des Zeichenvorkommens
mit Codeworten variabler Bitlänge)
– Kürzere Codeworte als Repräsentation von Zeichen,
die mit großer Wahrscheinlichkeit vorkommen
– Längere Codeworte als Repräsentation von Zeichen,
die mit kleinerer Wahrscheinlichkeit vorkommen
• Nachteil:
Tabelle der Codierung muss übermittelt werden
• Beispiele: JPEG, PNG, MP3, AVI, OGM
Huffman-Code-Algorithmus an einem Beispiel:
"MANNOMANN"
1. Bestimme die Auftrittshäufigkeiten der Zeichen und
schreibe sie an die Blattknoten eines aufzubauenden
Binärbaums an.
N
4 BUCHSTABEN
M
2 BUCHSTABEN
O
A
2 BUCHSTABEN
1 BUCHSTABE
Element Häufigkeit
N
45% (4)
M
22% (2)
A
22% (2)
O
11% (1)
Huffman-Code-Algorithmus an einem Beispiel:
"MANNOMANN"
2. Nimm die bisher unerledigten zwei Knoten mit den
geringsten Häufigkeiten (!) und berechne deren Summe.
N
4 BUCHSTABEN
M
2 BUCHSTABEN
O
A
2 BUCHSTABEN
1 BUCHSTABE
11%
22%
33%
Element Häufigkeit
N
45% (4)
M
22% (2)
A
22% (2)
O
11% (1)
Huffman-Code-Algorithmus an einem Beispiel:
"MANNOMANN"
3. Erzeuge einen Elternknoten für diese beiden und
beschrifte ihn mit der Summe. Markiere die Verzweigung zum linken Kind mit 0, die zum rechten mit 1.
N
4 BUCHSTABEN
M
2 BUCHSTABEN
O
A
2 BUCHSTABEN
0
1 BUCHSTABE
22%
1
11%
33%
Element Häufigkeit
N
45% (4)
M
22% (2)
A
22% (2)
O
11% (1)
Huffman-Code-Algorithmus an einem Beispiel:
"MANNOMANN"
3. Falls es nur noch einen nicht erledigten Knoten gibt,
schliesse die Prozedur ab. Sonst fahre weiter mit Schritt
2 fort.
N
4 BUCHSTABEN
2 BUCHSTABEN
2 BUCHSTABEN
0
0
O
A
M
22%
22%
1
1
1
1 BUCHSTABE
55%
11%
33%
Element Häufigkeit
N
45% (4)
M
22% (2)
A
22% (2)
O
11% (1)
Huffman-Code-Algorithmus an einem Beispiel:
"MANNOMANN"
4. Falls es nur noch einen nicht erledigten Knoten gibt,
schliesse die Prozedur ab. Sonst fahre weiter mit Schritt
2 fort.
N
4 BUCHSTABEN
A
M
2 BUCHSTABEN
2 BUCHSTABEN
0
0
0
45%
111
1
1
1
1 BUCHSTABE
22%
22%
55%
O
11%
33%
Element
Häufigkeit
Code
N
45% (4)
0
M
22% (2)
10
A
22% (2)
110
O
11% (1)
111
Huffman-Code-Algorithmus an einem Beispiel:
"MANNOMANN"
M A N N O M A N N
10 110 0 0 111 10 110 0 0
17 Bit
• Das Original braucht 72 Bit an Information
(9 Buchstaben á 8 Bit)
• Das kodierte Wort hat eine Länge von 17 Bit.
Hinzu kommt noch die
Element Häufigkeit
Codiertabelle der Größe
45% (4)
N
22% (2)
M
4*8+9=41 Bit
22% (2)
A
(4 Buchstaben á 8 Bit + 9 Bit).
O
11% (1)
Code
0
10
110
111
Huffman-Code-Algorithmus
1. Bestimme die Auftrittshäufigkeiten der Zeichen und
schreibe sie an die Blattknoten eines aufzubauenden
Binärbaums an.
2. Nimm die bisher unerledigten zwei Knoten mit den
geringsten Häufigkeiten und berechne deren Summe.
3. Erzeuge einen Elternknoten für diese beiden und
beschrifte ihn mit der Summe. Markiere die
Verzweigung zum linken Sohn mit 0, die zum rechten
Sohn mit 1.
4. Markiere die beiden bearbeiteten Knoten als erledigt.
5. Gibt es nur noch einen nicht erledigten Knoten? Falss ja
- fertig. Sonst weiter mit Schritt 2.
Huffman-Code-Algorithmus
• Der letzte Schritt des Kodierungsalgorithmus ersetzt
jedes in der Ursprungsdatei vorkommende Zeichen
durch seinen neuen Code.
• Zusätzlich muß noch in der komprimierten Datei für
die spätere Entkomprimierung hinterlegt werden,
welcher Code welchem Zeichen entspricht
(Codierungstabelle).
• Meist werden dort noch diverse weitere statistische
und technische Parameter gespeichert. Diese
Maßnahme vergrößert die Datei wieder geringfügig.
Übung
• Gegeben sei die folgende Wahrscheinlichkeitstabelle
(Vorkommen von Zeichen in einem String):
Element Häufigkeit
d
50 %
c
30 %
b
15 %
a
5%
Finde die entsprechende Huffman-Codierung der
Zeichen. Zeichne den Codebaum.
Wahrscheinlichkeitstabelle
d
c
50 %
a
b
30 %
15 %
5%
Element
Häufigkeit
d
50 %
c
30 %
b
15 %
a
5%
Code
Wahrscheinlichkeitstabelle
d
c
0
30 %
50 %
a
b
15 %
1
0
0
1
50 %
häufig auftretend = näher an der Wurzel
Das häufig auftretende "d" können
wir mit einem einzigen Bit ausdrücken.
Für die seltenen Elemente "b" und "a"
brauchen wir 3 Bit.
1
5%
20 %
Element
Häufigkeit
Code
d
50 %
0
c
30 %
10
b
15 %
110
a
5%
111
Übung
• Gegeben sei die folgende Wahrscheinlichkeitstabelle
(Vorkommen von Zeichen in einem String):
Element
Häufigkeit
a0
30 %
a1
30 %
a2
10 %
a3
15 %
a4
15 %
Code
Finde die entsprechende Huffman-Codierung aller
Zeichen. Zeichne den Codebaum.
Übung
30 %
30 %
Element
a2
a1
a0
Häufigkeit
Code
a0
30 %
0
a1
30 %
01
a2
10 %
100
a3
15 %
111
a4
15 %
11
10 %
a3
a4
15 %
15 %
Lösung
0
a2
a1
a0
30 %
1
30 %
0
10 %
60 %
0
0
1
a4
Häufigkeit
Code
a0
30 %
0
a1
30 %
01
a2
10 %
100
a3
15 %
101
a4
15 %
11
15 %
15 %
25 %
1
1
100 %
Element
a3
40 %
Dekodierung von Huffman-Codes
mit Hilfe der Tabelle
1. Lies li Bits aus dem Eingabestrom in einen Puffer.
2. Benutze den Puffer als Adresse in der Tabelle und
gib das erkannte Zeichen si aus.
3. Entferne die ersten li Bits aus dem Puffer und ziehe
weitere li Bits aus dem Eingabestrom nach.
4. Weiter mit Schritt 2.
Element
• Aufgabe:
Gegeben sei eine Codierungstabelle.
Schreiben Sie ein Programm, dass
beliebige Strings codiert/decodiert.
Code
a0
0
a1
01
a2
100
a3
101
a4
11
Huffman Code
• Kodieren Sie eine Zeichenkette mit Elementen
(a0 - a7), deren Wahrscheinlichkeitstabelle wie folgt
dargestellt werden kann:
Element
Häufigkeit
a0
0.36
a1
0.22
a2
0.12
a3
0.10
a4
0.08
a5
0.06
a6
0.04
a7
0.02
Code
Zeichnen Sie den Codebaum.
Codieren Sie die Zeichenkette
a3 , a0 , a4 , a0 , a2
Lempel-Ziv-Kodierung
Lempel-Ziv-Kodierung
• Gehört zu der Gruppe der auf einem Wörterbuch
basierenden Kodierungstechniken.
• Wörterbuch:
Tabelle von Zeichenketten, auf die bei der Kodierung
Bezug genommen wird.
• Beispiel:
"Endlich" stehe im Wörterbuch auf Seite x1, Zeile y1.
Damit kann es durch (x1,y1) referenziert werden.
Ein Satz wie z.B. "Endlich Frühling" wird als Sequenz
von Referenzen kodiert: (x1,y1),(x2,y2) .
Lempel-Ziv-Kodierung
• Lempel-Ziv-Welch (LZW)
• Proposed 1977 by
Abraham Lempel
and Jakob Ziv »LZ77«
compression.
• Lempel/Ziv/Welch is invoked with the Unix
compress command.
Lempel-Ziv-Welch (LZW)
• Verwendung in Textverarbeitungsprogrammen, dem
UNIX-Programm »compress«, in den Paketen »zoo«,
»lha«, »pkzip«, und »arj«.
• Modifizierter »LZ78« Algorithmus für Binärdateien
und Bitmaps.
• 1984 Modifikation des »LZ78« durch Terry Welch bei
Unisys für »high-performance disc controller« in den
heute bekannten »LZW« Algorithmus (TIFF, GIF,
PostScript Level 2, V.42bis Modemkompression)
Lempel-Ziv-Welch (LZW)
• Stufenweise Erstellung eines Wörterbuches
(Übersetzungstabelle) aus dem Datenstrom
(substitutions- oder wörterbuchbasierender
Algorithmus).
• LZW-Algorithmus patentgeschützt
(Compuserve/Unisys)
LZW-Algorithmus - Kompression
inputString Æ outputString
puffer = empty string
for each character k in inputString {
k = get next character of inputString
if puffer+k exists in the dictionary {
puffer = puffer+k
} else {
outputString+=code(puffer) //
add puffer+k to the dictionary
puffer = k
}
}
outputString+=code(w)
String = ABACABA
Alphabet = {A,B,C,D}
1. Initialisierung der Code-Tabelle:
2. Erstes Zeichen lesen Æ "A"
"A" befindet sich in der Tabelle Æ
"A" in den Puffer schreiben.
Index
1
2
3
4
5
Eintrag
A
B
C
D
AB
3. Nächstes Zeichen lesen Æ "B" und "AB" als Puffer
weiterbetrachten
4. "AB" ist nicht in der Tabelle Æ "AB" wird als 5.
Element der Tabelle hinzugefügt
String = ABACABA
Alphabet = {A,B,C,D}
5. Im Ausgabestring schreiben wir
"1" für das erste "A" Æ
outputString="1"
Der Puffer enthält jetzt nur
noch "B".
Index
1
2
3
4
5
6
Eintrag
A
B
C
D
AB
BA
6. Wir lesen als nächstes "A"
in den Puffer ein und betrachten "BA" weiter Æ
nicht in der Tabelle Æ
"BA" wird als 6. Element der Tabelle hinzugefügt
String = ABACABA
Alphabet = {A,B,C,D}
7. "2" (für "B") wird dem
Ausgabestring hinzugefügt:
outputString="12".
Der Puffer enthält jetzt nur
noch "A".
Index
1
2
3
4
5
6
7
Eintrag
A
B
C
D
AB
BA
AC
8. Wir lesen als nächstes "C"
in den Puffer ein und betrachten
"AC" weiter Æ
nicht in der Tabelle Æ
"AC" wird als 7. Element der Tabelle hinzugefügt
String = ABACABA
Alphabet = {A,B,C,D}
9. "1" (für "A") wird dem
Ausgabestring hinzugefügt:
outputString="121".
Der Puffer enthält jetzt nur
noch "C".
Index
1
2
3
4
5
6
7
8
Eintrag
A
B
C
D
AB
BA
AC
CA
10. Wir lesen als nächstes "A"
in den Puffer ein und betrachten
"CA" weiter Æ
nicht in der Tabelle Æ
"CA" wird als 8. Element der Tabelle hinzugefügt
String = ABACABA
Alphabet = {A,B,C,D}
11. "3" (für "C") wird dem
Ausgabestring hinzugefügt:
outputString="1213".
Der Puffer enthält nur noch
"A".
Index
1
2
3
4
5
6
7
8
Eintrag
A
B
C
D
AB
BA
AC
CA
12. Wir lesen als nächstes "B"
in den Puffer ein und betrachten
"AB" weiter Æ
"AB" gibt es bereits in der Tabelle (5. Stelle) Æ
String = ABACABA
Alphabet = {A,B,C,D}
13. Wir lesen als nächstes "A"
in den Puffer ein und betrachten
"ABA" weiter Æ "ABA" gibt es
nicht in der Tabelle Æ
"ABA" wird als 9. Element der
Tabelle hinzugefügt
Index
1
2
3
4
5
6
7
8
9
Eintrag
A
B
C
D
AB
BA
AC
CA
ABA
14. "5" (für "AB") wird dem
Ausgabestring hinzugefügt:
outputString="12135".
Der Puffer enthält nun nur noch "A" (Æ 1).
String = ABACABA
Alphabet = {A,B,C,D}
15. "1" (für "A") wird dem
Ausgabestring hinzugefügt:
outputString="121351".
Die Prozedur ist abgeschlossen.
Ergebnis:
"ABACABA" Æ "121351"
Index
1
2
3
4
5
6
7
8
9
Eintrag
A
B
C
D
AB
BA
AC
CA
ABA
LZW-Komprimierung
• Man beachte:
die Dekodier-Tabelle muss nicht übertragen werden!
Sie entsteht dynamisch aus der initialen Tabelle.
• Für praktische Anwendungen wir die Länge der
Code-Tabelle begrenzt. Die Größe der Tabelle stellt
ein Kompromiss zwischen Geschwindigkeit und
Kompressionsrate dar.
LZW, Übung, Kodierung
• {A, B, C, D}
• ABABABABBBABABAACDACDADCABAAABAB...
QUELLE
-
0
A
1
B
2
C
3
D
4
A
PUFFER
IN DER
TABELLE?
ABABABABBBABABAACDACDADCABAAABAB
ja
CODE
ERGEBNIS
B
5
ABABABABBBABABAACDACDADCABAAABAB
nein
5:AB
1
A
6
ABABABABBBABABAACDACDADCABAAABAB
nein
6:BA
2
ABABABABBBABABAACDACDADCABAAABAB
ja
ABABABABBBABABAACDACDADCABAAABAB
nein
7:ABA
5
B
A
7
LZW, Übung, Kodierung
• {A, B, C, D}
• ABABABABBBABABAACDACDADCABAAABAB...
QUELLE
PUFFER
IN DER
TABELLE?
CODE
ERGEBNIS
ABABABABBBABABAACDACDADCABAAABAB
nein
7:ABA
5
B
ABABABABBBABABAACDACDADCABAAABAB
ja
A
ABABABABABBBABABAACDACDADCABAAAB
ja
A
7
B
8
ABABABABBBABABAACDACDADCABAAABAB
nein
8:ABAB
7
B
9
ABABABABBBABABAACDACDADCABAAABAB
nein
9:BB
2
B
ABABABABBBABABAACDACDADCABAAABAB
ja
A
10 ABABABABBBABABAACDACDADCABAAABAB
10:BBA
9
B
ABABABABBBABABAACDACDADCABAAABAB
ja
A
ABABABABBBABABAACDACDADCABAAABAB
ja
B
ABABABABBBABABAACDACDADCABAAABAB
ja
nein
LZW, Übung, Kodierung
• {A, B, C, D}
• ABABABABBBABABAACDACDADCABAAABAB...
QUELLE
PUFFER
IN DER
TABELLE?
CODE
ERGEBNIS
A
11 ABABABABBBABABAACDACDADCABAAABAB
nein
11:ABABA 8
A
12 ABABABABBBABABAACDACDADCABAAABAB
nein
12:AA
1
C
13 ABABABABBBABABAACDACDADCABAAABAB
nein
13:AC
1
D
14 ABABABABBBABABAACDACDADCABAAABAB
nein
14:CD
3
A
15 ABABABABBBABABAACDACDADCABAAABAB
nein
15:DA
4
C
ABABABABBBABABAACDACDADCABAAABAB
D
16 ABABABABBBABABAACDACDADCABAAABAB
16:ACD
13
A
ABABABABBBABABAACDACDADCABAAABAB
D
17 ABABABABBBABABAACDACDADCABAAABAB
nein
17:DAD
15
C
18 ABABABABBBABABAACDACDADCABAAABAB
nein
18:DC
4
ja
nein
ja
LZW, Übung, Kodierung
• {A, B, C, D}
• ABABABABBBABABAACDACDADCABAAABAB...
QUELLE
PUFFER
IN DER
TABELLE?
CODE
ERGEBNIS
nein
19:CA
3
20:ABAA
7
21:AAB
12
22:BAB
6
A
19 ABABABABBBABABAACDACDADCABAAABAB
B
ABABABABBBABABAACDACDADCABAAABAB
ja
A
ABABABABBBABABAACDACDADCABAAABAB
ja
A
20 ABABABABBBABABAACDACDADCABAAABAB
A
ABABABABBBABABAACDACDADCABAAABAB
B
21 ABABABABBBABABAACDACDADCABAAABAB
A
ABABABABBBABABAACDACDADCABAAABAB
B
22 ABABABABBBABABAACDACDADCABAAABAB
ABABABABBBABABAACDACDADCABAAABAB
nein
ja
nein
ja
nein
ja
2
LZW-Algorithmus - Dekompression
while((GetNextCode() != EOFCode){
if (code == ClearCode) {
InitializeTable();
Code = GetNextCode();
if (Code==EOfCode) break;
WriteString(StringFromCode(Code));
OldCode = Code;
} /* end of ClearCode case */
else {
LZW-Algorithmus - Dekompression
if (IsInTable(Code)) {
WriteString(StringFromCode));
AddStringToTable(StringFromCode
(OldCode)+
FirstChar(StringFromCode(Code)));
OldCode = Code;
}
else {/* codes in not in table */
LZW-Algorithmus - Dekompression
OutString = StringFromCode(OldCode +
FirstChar(StringFromCode(OldCode)));
WriteString(OutString);
AddStringToTable(OutString);
OldCode = Code;
}
}
}
TIFF
Huffmann vs. LZW
• Typische Beispiele für Dateigrößen nach der
Kompression in Prozent der Ursprungsgröße
Art
Huffmann
LZW
C-Dateien
65 %
45 %
Maschinencode
80 %
55 %
Text
50 %
30 %
Arithmetische Kodierung
Arithmetische Kodierung
• Die Huffman-Kodierung ist in der Regel nicht ganz
optimal, da einem Datenwort stets eine ganzzahlige
Anzahl von Bits als Codewort zugewiesen wird.
• Abhilfe bietet die sog. arithmetische Kodierung.
Idee: Eine Nachricht wird als Gleitkommazahl aus
dem Intervall [0,1) kodiert (ein Codewort!). Dazu
wird das Intervall aufgeteilt nach der
Wahrscheinlichkeit der einzelnen Symbole. Jedes
Intervall repräsentiert ein Zeichen. Es wird durch
sukzessive Verkleinerung des Intervalls codiert.
Arithmetische Kodierung, Algorithmus
• Das nächste zu kodierende Zeichen bestimmt das
nächste Basisintervall. Dieses Intervall wird wiederum
nach den Zeichenwahrscheinlichkeiten unterteilt.
Dies wird so lange fortgeführt, bis ein Endesymbol
erreicht wird oder eine bestimmte Anzahl Zeichen
kodiert ist.
• Eine Zahl aus dem zuletzt entstandenen Intervall
wird als Repräsentant für das Intervall gewählt.
• Einsatzbeispiel: JPEG-Kompression
Arithmetische Dekodierung, Algorithmus
• Dekodierung:
Das Intervall [0,1) wird wie beim Kodierungsprozess
unterteilt.
• Der Code bestimmt das nächste zu unterteilende
Basisintervall nach seinem Wert. Dieses Intervall
steht für ein bestimmtes Zeichen, das damit
dekodiert ist. Dies wird so lange fortgeführt, bis das
Endesymbol dekodiert worden ist oder eine
bestimmte vorab festgelegte Anzahl von Zeichen.
Kodierung von a3 a0 a4 a0 a2
a0
a0
a1
a3
a4
a5
a6
a7
0.58
a2
0.70
a3
0.80
0.88
0.94
1
a3
a4
a5
a6
a7
a0
a1
0.758
a2
0.77
a3
0.78
0.788
0.794
0.8
a0
a4
a5
a6
a7
a0
0.7298368
0.71296
a1
0.7288
0.7288
a0
0.736
0.36
a2
0.7
0.7
0
a1
0.72088
a2
0.7252
a3
0.7288
0.73168
0.73384
0.736
a4
a4
a5
a6
a7
0.729173248
a1
0.7304704
a2
0.730816
0.731104
0.7313344
0.7315072
0.73168
a0
a3
a4
a5
a6
a7
0.729401344
0.7295
0.72952576
0.72962944
0.729712384
0.729774592
0.7298368
a2
Übung
• Gegeben sei die folgende Wahrscheinlichkeitstabelle:
Alphabet
00
0.1
Wahrscheinlichkeiten
01
0.4
10
0.2
11
0.3
Kodieren Sie arithmetisch die Nachricht:
10 00 11 00 10 11 01
10
00
0.7
11
10
01
00
0.5
11
00
10
11
01
Übung
• Gegeben sei die folgende Wahrscheinlichkeitstabelle:
Alphabet
00
0.1
Wahrscheinlichkeiten
01
0.4
10
0.2
11
0.3
Kodieren Sie arithmetisch die Nachricht:
10 00 11 00 10 11 01
10
00
0.7
11
0.52
11
10
01
00
0.5
0.5
00
10
11
01
10 00 11 00 10 11 01
10
00
11
00
11
10
01
0.7
0.52
0.52
0.5146
0.51442
0.51442
0 .5143948
0.5
0.5
0.514
0.514
0.5143
0.514384
0.51439
11
10
01
00
Dynamische, arithmetische
Kodierung
Dynamische, arithmetische Kodierung
• Übertragung der Nachricht in Blöcken,
Neuberechnung der Wahrscheinlichkeiten nach
jedem Block (beim Kodieren und beim Dekodieren).
• Beispiel:
Alphabet = {A,B,C}
Anfangswahrscheinlichkeiten = {0.2; 0.3; 0.5}
Nachricht: ACB AAB (in 3er-Blöcken)
Nachricht: ACB AAB (in 3er-Blöcken)
• Alphabet = {A,B,C},
Anfangswahrscheinlichkeiten = {0.2; 0.3; 0.5}
0
C
B
A
1.0
0.5
0.2
0
0.04
0.1
0.2
0.1
0.12
0.15
0.2
ÜBERTRAGUNG: [0.12, 015), z.B. 0.135
Aktualisierung der Wahrscheinlichkeiten
• Anfangswahrscheinlichkeiten =
{(A)0.2; (B)0.3; (C)0.5}
Pneu = ( Palt + Paktuell ) / 2
A: (0.2+0.3)/2=0.3
B: (0.3+0.3)/2=0.3
C: (0.5+0.3)/2=0.4
• Neue Wahrscheinlichkeiten =
{(A)0.3; (B)0.3; (C)0.4}
Nachricht: ACB AAB (in 3er-Blöcken)
0
C
B
A
0
0.2
0.1
0.04
C
B
A
0.15
0.12
0.1
1.0
0.5
0.2
0.2
C
B
A
UMRECHNUNG DER WAHRSCHEINLICHKEITEN
0
0
0.1
AAA
0.3
0.18
0.09
AA
C
B
A
1.0
0.6
0.3
AB
ÜBERTRAGUNG: [0.27, 0.054), z.B. 0.0405
0.054
0.027
AAB
AC
0.09
AAC
Arithmetische Kodierung, Eigenschaften
• Die Kodierung hängt von der Zeichenwahrscheinlichkeit und damit vom Kontext ab.
• Die Wahrscheinlichkeit der Symbole bestimmt die
Kompressionseffizienz: wahrscheinlichere Symbole
werden in größeren Intervallen kodiert und brauchen
so weniger Präzisionsbits.
• Die Code-Länge ist theoretisch optimal: die Anzahl
von Bits pro Zeichen kann nicht-ganzzahlig sein und
somit der Zeichenwahrscheinlichkeit genauer
angepasst werden als bei der Huffman-Kodierung.
Arithmetische Kodierung, Eigenschaften
• Die Terminierung des Verfahrens beim Dekodieren
ist auf mehrere Arten möglich:
– Die Nachrichtenlänge ist Sender und Empfänger
bekannt
– Es gibt nur eine bestimmte Anzahl von
Nachkommastellen (dies ist Sender und Empfänger
bekannt zu geben)
Arithmetische Kodierung, Probleme
• Präzision der Gleitkommadarstellung in der Maschine
ungenau, so dass "overflow" oder "underflow"
vorkommen kann
• Die Dekodierung erst möglich nach vollständigem
Erhalt der (Teil-)Nachricht, die viele
Nachkommastellen haben kann.
• Sehr fehleranfällig: ein Bitfehler zerstört die ganze
(Teil-)Nachricht.
• Exakte Wahrscheinlichkeiten sind oft nicht erhältlich,
so dass die maximale theoretische Code-Effizienz
praktisch nicht erreicht werden kann.
Kompressionsverfahren für
Standbilder
Fax-Kompression
• Verlustfreie Kompression von
Faksimile-Anwendungen
• Einer der ersten Standards zur Bildkompression
Standards in der Telekommunikation Æ
International Telecommunications Union (ITU-T)
(früher: CCITT = Commitée Consultatif International
de Téléphonie et Télégraphie).
Fax-Kompression
• Bilder werden von Faxalgorithmen (der Gruppe 3) als
bitonal betrachtet (Pixel können entweder schwarz
oder weiß sein).
• Jedes Pixel wird mit einem Bit repräsentiert.
• In jedem bitonalen Bild gibt es in der Regel lange
Bitfolgen ("runs"), die entweder vollkommen schwarz
oder vollkommen weiß sind (vgl. RLE-Kodierung)
Lauflängenkodierung
4s
1w 1s 2w
3s
3w
2s
Fax-Standards der ITU (früher CCITT)
• Standard T.4
– verabschiedet 1980,
– überarbeitet 1984 und 1988 (Fax Gruppe 3) für
fehleranfällige Leitungen (Æ Telefonleitungen)
– Ziel:
Übertragung einer A4-Seite (schwarz/weiß) in einer
Minute bei 4800 bit/s
• 100 dots per inch (dpi) oder 3,85 Zeilen/mm vertikal
1728 Pixel pro Zeile
Fax-Standards der ITU (früher CCITT)
• Standard T.6
– verabschiedet 1984 (Fax Gruppe 4) für fehlerfreie
Leitungen oder digitale Speicherung.
Standards für die FaxKompression
Fax Gruppe 3, ITU-T Recommendation T.4
• Codierungsansatz 1:
Modified Huffman Code (MH)
– Komprimierung zeilenweise
– Für jede Zeile wird eine Lauflängen-Codierung
ermittelt.
– Die (Lauflänge,Wert)-Beschreibung wird dann
Huffman-codiert, mit standardisierter,
festgeschriebener Tabelle
Fax Gruppe 3, ITU-T Recommendation T.4
– Schwarze und weiße Runs werden mit separaten
Huffman-Codes behandelt, da die
Auftrittswahrscheinlichkeiten der Lauflängen sehr
unterschiedlich sind.
– Zur Fehlererkennung wird nach jeder Zeile ein EOL
(end-of-line=)-Codewort eingefügt. Dies ermöglicht
das Wiederaufsetzen nach Bitübertragungsfehlern.
Fax Gruppe 3, ITU-T Recommendation T.4
• Codierungsansatz 2:
Modified Read (MR) Code
– Nutzt die Ähnlichkeit mit der vorhergehenden Zeile
und überträgt nur die Unterschiede zu dieser
– Anschließend wird eine Lauflängen-Kodierung und ein
statischer Huffman-Code wie bei MH eingesetzt.
– Nach jeder Zeile ein EOL-Codewort eingefügt.
– Einsparung von bis zu 35 Prozent an
Informationsvolumen gegenüber MH.
• Die Kodierungsansätze MH und MR werden
regelmäßig abgewechselt, um die Fortpflanzung von
Fehlern zu vermeiden.
Fax Gruppe 4, ITU-T Recommendation T.6
• Codierungstechnik:
Modified Modified Read Code (MMR)
– Ursprünglich für reine G4-Faxübertragung vorgesehen
Vereinfachung des MR-Codes (keine FehlerEerkennungsmechanismen für die Erhöhung der
Kompressionsrate; setzt ECM voraus Æ nä. Seite).
• Kompressionsraten
Geschäftsdokumente
Gruppe 3
20:1
Gruppe 4
50:1
• Fotos Æ schlechte Kompression da meistens nur
kurze Runs. Eine adaptive arithmetische Kodierung
wäre hier besser geeignet.
Error Correction Modus (ECM)
• Der Error Correction Modus (ECM) prüft jedes
übertragene Datenpaket auf Fehler und fordert die
fehlerhaften Pakete neu an. Dieses verlängert die
Übertragung ein wenig, führt aber insgesamt zu
kürzerer Übertragung, da fehlerhafte Seiten nicht
noch einmal komplett neu übertragen werden
müssen.
Fallback
• Fallback ist das Zurückschalten auf niedrigere
Geschwindigkeiten wie 7200, 4800 oder 2400 Bit/s,
wenn Störungen oder Rauschen die Übertragung
beeinträchtigen.
Normalverteilung
Die Normalverteilung
• Eine eingipflige, symmetrische, glockenförmige Kurve,
die durch die folgende Formel gegeben ist:
68% der Gesamtfläche
WENDEPUNKT
95% der Gesamtfläche
s
99% der
Gesamtfläche
x-3s
x-2s
x-s
x
x+s
x+2s
Die Normalverteilung
• Besondere Bedeutung in der Statistik, da viele
Methoden von dieser Verteilungsform ausgehen.
• Nach Sachs; Angewandte Statistik: "Die zentrale
Bedeutung der Normalverteilung besteht darin, daß
eine Summe von vielen unabhängigen, beliebig verteilten
Zufallsvariablen gleicher Größenordnung angenähert
normalverteilt sind".
Augensumme beim Würfeln
• Die Augensumme beim Würfeln stellt eine
Zufallsvariable dar.
• Erhöht sich die Anzahl der Würfel, so verändert sich
die Wahrscheinlichkeiten für eine bestimmte
Augensumme beim Würfeln:
– Während mit einem Würfel die Wahrscheinlichkeit für
jede Augenzahl gleich ist, erhöht sich die
Wahrscheinlichkeit für die mittleren Summen, je mehr
Würfel benutzt werden.
Die Wahrscheinlichkeit P, eine bestimmte
Augensumme zu erzielen
1 Würfel
2 Würfel
3 Würfel
5 Würfel
Standardabweichung
• Die (empirische) Standardabweichung s ist eine
charakteristische Kenngröße einer Normalverteilung
und legt das Maß der Streuung der Werte um den
Mittelwert fest.
• Die Normalverteilung hat ihre Wendepunkte bei
xMittel - s und xMittel - s.
• Der Bereich [ xMittel - s ; xMittel + s ] beinhaltet
etwa 68 % der Gesamtfläche.
( [ xMittel - 2s ; xMittel + 2s ] umfaßt 95 %).
Standardabweichung σ
und empirische Standardabweichung s
• Ein Maß für die zufällige Streuung der Messwerte xi
um den wahren Wert x bzw. um den Mittelwert x.
Block Truncation Coding (BTC)
Block Truncation Coding
• Ein einfaches, verlustbehaftetes Verfahren für
Graustufen-Bilder.
• Jedes Pixel wird im Original mit einem Grauwert von
0 (schwarz) bis 255 (weiß) (8 Bit-Codierung)
beschrieben.
Block Truncation Coding Algorithmus
1. Zerlege das Bild in Blöcke der Größe n x m Pixel
2. Berechne Mittelwert und Standardabweichung der
Pixelwerte für jeden Block
Yi,j=Helligkeit (Graustufe) des Pixels
Block Truncation Coding Algorithmus
3. Weise dem Block eine Bitmatrix der Größe n x m
nach folgender Regel zu:
Block Truncation Coding Algorithmus
4. Berechne zwei Graustufenwerte für den Block,
a für den Wert der dunkleren Pixel,
b für den Wert der helleren Pixel:
p ist dabei die Anzahl der Pixel, die heller als der
Mittelwert µ sind, q die Anzahl der dunkleren Pixel.
1. Ausgabe:
(Bitmatrix, a, b) für jeden Block
BTC-Beispiel
12
14
15
23
62
100 201 204
µ=101
0
0
0
0
0
0
1
1
190 195 240
41
1
1
1
0
20
45
0
0
1
0
48
206
a=38, b=206
• Blockgröße: 4x4
• Original: 1 Byte/px
• Kodiert: Bitmatrix,
16 Bits+2*8 Bits für a und b
(Reduktion von 16 auf 4 Byte)
• Kompression: 75%
Dekompression bei BTC
• Für jeden Block werden die Graustufen der einzelnen
Pixel wie folgt berechnet:
Color Cell Compression
Color Cell Compression
• Ein Verfahren zur Kompression von Farbbildern.
• Prinzipiell könnte man BTC für jeden der drei
Farbkanäle RGB getrennt anwenden.
• CCC liefert jedoch qualitativ bessere Ergebnisse.
Das klassische RGB-Farbmodell
• Der Farbwert eines Pixels ergibt sich aus den
Intensitäten der Komponenten Rot, Grün und Blau.
Die maximale Intensität aller drei Farben ergibt weiß.
G
Grün
Gelb
(0,1,0)
(1,1,0)
Cyan
(0,1,1)
Weiss
(1,1,1)
Schwarz
(0,0,0)
Rot
(1,0,0)
Blau
(0,0,1)
B
R
Magenta
(1,0,1)
Das YUV-Modell
• YUV
Jede Farbe besteht aus einer Kombination von:
– Luminanz Y (Helligkeitskomponente) und
– zwei Farbkomponenten:
• U - Rot-Cyan Balance und
• V - Gelb-Blau Balance.
• Einsatz
– PAL-Video, PAL-Fernsehen
Luminanz und Chrominanz
• Luminanz Y (Leuchtdichte, SW-Anteil)
Y = 0.299R + 0.587G + 0.114B
Y
U
V
• Chrominanz (Farbinformation)
Y ∈ [0,1] und U,V ∈ [-0.5,0.5]
U = B - Y, V = R - Y
bezieht sich auf den Farbton und die Farbsättigung
Neutrale Farben (Grautöne) besitzen keine
Chrominanz Æ U = V = 0.
• Aktuelle PAL-Implementierung:
U = 0.492 (B - Y), V = 0.877 (R - Y)
Der YUV-Farbraum
• Erhöht man die Chrominanz-Parameter, wird das
Bild farbiger (Æ Bildverarbeitung: Kompensation des
flauen Lichts, Veränderung der Stimmung, Vermittlung
des sonnigen Eindrucks)
Erhöhte Chrominanz
YUV-Modell: Vorteile
• Vorteil
der Helligkeitswert eines Pixels ist unmittelbar
bekannt Æ
Man kann leicht eine Graustufenversion des Bildes
darstellen.
• Bei der Kompression kann der Helligkeitswert mit
einer anderen Auflösung kodiert werden als die
Farbvektoren (das menschliche Auge reagiert auf
Helligkeit empfindlicher als auf Farbinformation). Die
Datenmenge lässt sich in einem Schritt ohne
sichtbare Qualitätsveränderungen um gut ein drittel
reduzieren.
YIQ-Modell
• YIQ
– Kodierung durch eine
Helligkeitskomponente (Luminanz Y) und zwei
Farbkomponenten
I - Cyan-Orange Balance und
Q - Magenta-Grün Balance und einen Helligkeitswert
– NTSC-Video, NTSC-Fernsehen (US-Fernsehnorm)
CCC Algorithmus
CLUT
RGB RGB RGB RGB
RGB RGB RGB RGB
a'
CCC
b'
RGB RGB RGB RGB
RGB RGB RGB RGB
BITMATRIX für jedenBlock
CLUT=Color LokUp Table
RGB
RGB
RGB
.
.
.
RGB
RGB
RGB
CCC Algorithmus
1. Zerlege das Bild in Blöcke der Größe m x n Pixels.
2. Berechne für jedes Farbpixel die Helligkeit gemäß:
Y = 0.3 Pred + 0.59 Pgreen + 0.11 Pblue
Y=0 entspricht schwarz, Y=1 entspricht weiß
CCC Algorithmus
3. Für c = red, green, blue berechne die mittleren
Farbwerte der Pixel gemäß
p ist wieder die Anzahl der Pixel, die heller als der
Mittelwert sind, q die Anzahl der dunkleren Pixel.
4. Weise dem Block eine Bitmatrix der Größe n x m
nach folgender Regel zu:
• Die Werte
a = (ared , agreen , ablue) und
b = (bred , bgreen , bblue) werden in eine Farbtabelle
abgebildet, gemäß einem Nähe-Maß.
Es ergeben sich die Werte a’ und b’ als Indizes der
Farbtabelle (ColorLookup Table, CLUT).
• Ausgabe: (Bitmatrix, a’, b’) für jeden Block
Dekompression bei CCC
• Die Dekompression funktioniert für jeden Block wie
• folgt:
Extended Color Cell Compression (XCCC)
• Eine Erweiterung von CCC zur weiteren
Verbesserungder Kompressionsrate.
• Idee
Hierarchie von Blockgrößen. Man versucht zunächst,
einen großen Block mit CCC zu codieren. Wenn die
Abweichung der tatsächlichen Farbwerte im Block
von a‘ oder b‘ größer ist als ein vorgegebener
Schwellenwert, wird der Block in vier Teilblöcke
zerlegt. Der Algorithmus arbeitet rekursiv.
Extended Color Cell Compression (XCCC)
1
2
2
1
4
6
3
5
6
3
4
5
6
7
JPEG
JPEG
• Anforderungen:
hohe Kompressionsrate und hohe Geschwindigkeit
des Kodierens und Dekodierens "natürlicher"
Grauton- oder Farbbilder.
• Problem:
ein einziger Algorithmus für alle Anforderungen läßt
sich nicht entwickeln
JPEG-Kompression
• Kompressionsverfahren Æ Bibliothek
parametrisierbarer, effizienter Algorithmen, die den
Grad der Kompression und den Grad der
entstehenden Verluste steuern
(Qualitätsfaktor:
Q=1 hoher Verlust; Q = 100 geringer Verlust).
• Entwickelt von JPEG - Joint Photographic Experts
Group (Komitee der ISO/IEC-Int. Standards
Organisation/Int. Electronic Comisson).
JPEG-Kompression
• Bilder mit mindestens vier oder fünf Bit Auflösung
pro Pixel.
• JPEG benötigt Bilder, bei denen sich benachbarte
Pixel nicht allzu stark unterscheiden.
Parametrisierbare Algorithmen
• JPEG-Kompression=Psychovisuelle Kompression kleine Änderungen im Farbton registriert das
menschliche Auge nicht so sehr wie kleine
Helligkeitsänderungen Æ Reduktion der Farben
möglich.
• JPEG-Kompression lässt sich in vier verschiedene
Modi gliedern lassen:
–
–
–
–
der verlustfreie Mode (lossless mode)
der progressive Mode (progressive mode)
der hierarchische Mode (hierarchical mode)
der sequentielle Mode (sequential mode)
Lossless mode
• Das einzige Verfahren, das verlustfrei kodiert und
dekodiert.
• Der große Nachteil ist, dass die Kompressionsrate
recht gering ist, weil der volle Informationsgehalt
gespeichert wird.
Progressive mode
• Das Bild wird in mehreren Durchgängen kodiert und
dekodiert.
• Bei jedem weiteren Durchgang verbessert sich dabei
die Bildqualität, was besonders nützlich ist, wenn
Daten über große Entfernungen übertragen werden.
• Sobald das Bild eine für den Benutzer ausreichende
Schärfe erreicht hat, kann dieser die Übertragung
stoppen.
JPEG in Photoshop
Hierarchical mode
• Speichert das Bild in einer geringeren Auflösung und
ebenfalls in voller Auflösung.
• Das gering aufgelöste Bild kann wesentlich schneller
übertragen und dekodiert werden (Æ Vorschaubild).
Bei Interesse kann die vollaufgelöste Version geladen
werden.
Sequential mode
• Das Bild wird in einem einzigen Durchgang von links
oben nach rechts unten dekodiert, was in der Praxis
für die meisten Anwendungen gut geeignet ist.
• Die besten Kompressionsraten.
• Am leichtesten zu implementieren.
• Im Weiteren näher erklärt.
JPEG-Kompression
• Kompression in vier Schritten:
1. Bildaufbereitung
– RGB Æ geeigneter Farbraum, z.B. YUV)
– Herunterskalieren der Farbtonkomponenten durch
Mittelung über mehrere Pixel (downsampling)
2. Diskrete Cosinus-Transformation (DCT)
3. Quantisierung (Gewichtung der Koeffizienten der
DCT=Rundung der mit Hilfe von Tabellen
(Informationsverlust, führt zur Kompression)
4. Entropie-Kodierung (Codierung der gewichteten
Koeffizienten mit variabler Wortlänge (Huffmann))
JPEG-Kompression
• Transformation aus der Zeitdomäne in die
Frequenzdomäne (Baseline Codes)
8x8 Blocks
DCT-BASIERTER ENCODER
FDCT
Komprimiertes
Bild
QUANTISIERUNG
ENTROPIEKODIERUNG
Quellbild
TABELLENSPEZIFIKATION
TABELLENSPEZIFIKATION
Bildaufbereitung
1. Bildaufbereitung
• RGB Æ YUV
Y = 0.299R + 0.587G + 0.114B
(Luminanz, Helligkeitswert)
U = 0,493(B - Y), V = 0,877(R - Y)
(Chrominanzwerte, U=Farbton, V=Farbsättigung)
• RGB Æ YCbCr
Y = 0.299R + 0.587G + 0.114B (Luminanz)
Cb = -0,1687R - 0,3313G + 0,5B + 128
Cr = 0,5R - 0,4187G - 0,0813B + 128
(Chrominanz Cb=Abweichung Grau- zum Blauwert
Chrominanz Cr=Abweichung vom Grau- zum Rotwert )
Subsampling
• Bei der JPEG-Kompression wird keines dieser beiden
Farbmodelle (YUV, YCbCr) bevorzugt.
• Wichtig für die Kompression ist nur, dass nach der
Umwandlung in einen anderen Farbraum ein so
genanntes Subsampling vorgenommen wird.
• Subsampling:
die Farbwerte U, V oder Cb, Cr werden mit
geringerer Auflösung als die Helligkeit Y gespeichert.
Das menschliche Auge reagiert auf Fehler im
Helligkeitswert empfindlicher als auf Fehler in den
Farbwerten.
Subsampling
LUMINANZ
CHROMINANZ
Macroblock
• Vier Y-Blöcke der Größe 8x8 mit einem zugehörigen
U-Block (Größe 8x8) und einem V-Block (Größe 8x8)
LUMINANZ
CHROMINANZ
Subsampling
Y1 Y2
Y3 Y3
+ 2 Chrominanzwerte
• Beispiel:
für 4 Pixel werden 4 Helligkeitswerte, aber jeweils
nur 2 Farbwerte (Chrominanzwerte) oder sogar nur
ein Farbwert gespeichert, die dann Mittelwerten der
4 vorgegebenen Werte entsprechen.
Beispielrechnung für das Subsampling
• 4 Pixel Æ 4x3 Werte (1 Byte/Wert) Æ 12 Byte
• 4:2:2-Subsampling:
4 Byte + 2 Byte + 2 Byte = 8 Byte
• 4:1:1-Subsampling:
4 Byte + 1 Byte + 1 Byte = 6 Byte
• Nur durch unterschiedliche Auflösung der einzelnen
Layer (Datenschichten/Datenmengen für Y, U,V, Cb
oder Cr) ist eine Datenmengenreduzierung von bis zu
50% erreicht werden.
Indexverschiebung
• Für eine weitere Kompression der Daten ist es
zweckmäßig, die 256 möglichen Werte, die von 0 bis
255 reichen, als Werte des Intervalls [-128; 127]
darzustellen.
• So entspricht z.B. der alte Wert 0 dem Wert -128 in
der neuen Wertemenge. Diese Vorgehensweise wird
Indexverschiebung genannt.
Diskrete Cosinus-Transformation
Diskrete Kosinustransformation - DCT
• Interpretiert die Helligkeits- bzw. Farbwerte als
Überlagerung von Kosinusfunktionen und gibt an, wie
stark sich die Werte von Ort zu Ort ändern.
(Transformation in die Frequenzdomäne)
• Transformiert diese Werte in Amplituden für
Kosinusfunktionen verschiedener Frequenzen.
• Hierbei ähneln sich die Amplituden für hohe
Frequenzen, wodurch man einen Vorteil für die
anschließende Kodierung erhält.
Diskrete Kosinustransformation - DCT
• Die Anzahl der definierten Orte entspricht der
Anzahl der verschiedenen betrachteten Frequenzen.
• Bei der eindimensionalen DCT werden horizontal
angeordnete Werte in horizontal verlaufende
Schwingungen umgewandelt, d.h. die Kosinusfunktion
ist eine Funktion des Ortes.
• Die Frequenzen werden dabei genauso
durchnummeriert wie die Orte, wobei größere
Nummern der Frequenzen auch größere Frequenzen
bedeuten.
FDCT
(Forward Discrete Cosine Transformation)
• Wird auf jeden Block von 8x8 Pixeln einzeln
angewendet (Ortsraum Æ Frequenzraum)
wobei
(insgesamt 64 Koeffizienten in der Frequenzdomäne)
Warum DCT?
• In JPEG wird die DCT verwendet und nicht die FT,
weil der Sinus die FT "komplexwertig" macht.
• Wird nur Cosinus benutzt, so bleibt alles reellwertig.
Überlagerung zweier 2dimensionalen
Kosinusfunktionen
Eindimensionale, diskrete Kosinustransformation
• Beispiel:
Verteilung der Bildpunkte in einer Zeile eines Bildes
(von links nach rechts angeordnet Æ Ort).
x
0
1
2
3
...
f(x)
f(0)
f(1)
f(2)
f(3)
...
DISKRETE FUNKTION
Æ
wird als Überlagerung von
Kosinusschwingungen verschiedener
Frequenzen gedeutet
• Die neue Frequenz- Amplituden Zuordnung
beschreibt, wie "schnell" und stark sich die Werte im
Verlauf der Funktion f(x) verändern.
Eindimensionale, diskrete Kosinustransformation
• Die DTC ist eine mathematische Operation, die die
diskrete Ort-Werte Zuordnung in eine diskrete
Frequenz-Amplituden Zuordnung umwandelt.
• Die Frequenz einer Kosinusfunktion gibt in diesem
Falle an, wie oft sich der Verlauf der periodischen
Kosinusfunktion pro Ortseinheit wiederholt.
• Amplituden sind hier definiert als die betraglichen
Maximalwerte, die eine dazugehörige
Kosinusfunktion annimmt.
DCT
• Bei der DCT entspricht die Anzahl der definierten
Orte der Anzahl der verschiedenen betrachteten
Frequenzen.
• Bei der eindimensionalen DCT werden horizontal
angeordnete Werte in horizontal verlaufende
Schwingungen umgewandelt, d.h. die Kosinusfunktion
ist eine Funktion des Ortes.
• Die Frequenzen werden dabei genauso
durchnummeriert wie die Orte, wobei größere
Nummern der Frequenzen auch größere Frequenzen
bedeuten.
Fazit
• Die DCT transformiert die ortsabhängigen
Pixelwerte, d.h. Helligkeits- oder Farbwerte, in
frequenzabhängige Amplituden.
• Zu diesem Zweck werden die Pixelwerte als
Überlagerung von diskreten Kosinusfunktionen
verschiedener Frequenzen interpretiert, und zu jeder
dieser Kosinusschwingungen wird durch die DCT eine
Amplitude bestimmt.
• Die DCT gibt diese Amplituden jedoch nicht direkt
aus, sondern liefert bestimmte Vielfache der
einzelnen Amplituden.
Fazit
• Durch die DCT gehen also keine Informationen
verloren, was der Grund dafür ist, dass allein durch
Anwendung der DCT auch kein Speicherplatz gespart
werden kann.
• Die DCT ist verlustfrei. Würde man die durch die
DCT entstandenen Amplituden direkt ohne weitere
Zwischenschritte codieren, wäre man sogar vor das
Problem gestellt, dass die Wertemenge der zu
codierenden F(u,v)-Werte größer ist als die
Wertemenge von f(x,y).
Quantisierung
Quantisierung
• Man definiert für jeden einzelnen Ort (u,v) einen
Quantisierungsfaktor Q(u,v). Nun werden die F(u,v)Werte quantisiert, indem man jeden F-Wert an der
Stelle (u,v) durch einen entsprechenden
Quantisierungsfaktor Q an der Stelle (u,v) teilt und
auf die nächste ganze (Integer-)Zahl rundet.
Quantisierung
• Durch das Quantisieren, also das Teilen und Runden
der Werte, wird eine Reduzierung der Wertemenge
von F(u,v) erreicht, was den Vorteil einer späteren
Kodierung mit weniger Bits ermöglicht.
• Viele hochfrequente AC-Koeffizienten werden zu 0
quantisiert, was durch Redundanz einen Vorteil bei
der Kodierung bietet.
• Je höher der Quantisierungsfakor ist, desto größer ist
die Ungenauigkeit bei der Wiederherstellung der
ursprünglichen F(u,v) Werte (Æ Rundungsfehler)
Quantisierung
• Das menschliche Auge ist nicht sehr empfindlich für
hochfrequente Schwingungen, weswegen man höhere
Quantisierungsfaktoren für höhere Frequenzen
benutzen kann, um auf Kosten von stärkeren
Rundungsfehlern, die allerdings auf Grund der
Unzulänglichkeiten des menschlichen Auges nicht
wichtig sind, den Vorteil von mehr entstandenen
Nullen nutzen zu können.
Demos
• http://www.cs.sfu.ca/CC/365/li/material/misc/demos.html
Entropiekodierung
Kodierung
• Nach der Quantisierung wird die enstandenen 8x8Matrix in einem Zig-Zag-Scaning gespeichert.
• Die 8x8-Matrix wird dabei in einen 1x64-Vektor
umgewandelt und nachträglich Huffmann-kodiert.
Zick-Zack-Verfahren
• Die 8*8-Matrix wird in einen 1x64-Vektor
umgewandelt (Vorbereitung für die HuffmannKodierung).
Beispiel Mensch
• Zwischen äußerem Signal und innerem Ausgang der
Sinnesorgane stehen verschiedene Filter, die nur
bestimmte Änderungen der Umgebungsbedingungen
in das innere System passieren lassen
Æ
Beispiel: Licht- und Tonwahrnehmung sind sind auf
bestimmte Frequenzbereiche beschränkt
Harmonische Schwingungen
• Weist ein periodisches Signal einen
Amplitudenverlauf der Form
auf, so bezeichnet man es als
harmonische Schwingung der Frequenz f
bzw. der Wellenzahl k.
Fourier-Reihen
• Ist A(t) eine periodische Funktion der Frequenz f, so
lässt sich diese als Überlagerung unendlich vieler
harmonischer Schwingungen darstellen:
• Die Koeffizienten werden berechnet durch
Fourier-Transformation
Fourier-Transformation
• Entspricht der Zerlegung einer anharmonischen
(nicht sinus- oder cosinusförmigen) Schwingung in
eine harmonische Grundwelle und Ihre Oberwellen.
• Die Transformation eines MultimediaDatenbestandes in seinen Frequenzraum ermöglicht
das Abschneiden höherfrequenter Anteile. Dies wird
z.B. bei der JPEG-Kompression von Bilddaten
genutzt, sowie in verschiedenen Verfahren zur
Audiokodierung.
Fourier-Analyse
• Fourier-Analyse
Das Verfahren zur Bestimmung der Anteile einzelner
harmonischer Schwingungen an einem gegebenen
Signal.
• Fourier-Transformation
Transformation einer zeitlich oder räumlich
variierenden Größe in den Frequenz- oder
Wellenzahlraum.
• Joseph Marie Baron de Fourier
französcher Mathematiker, 1768 - 1830.
Übung
• Zeichne die folgenden Fourier-Funktionen
( x=Zeit, y(x)=Amplitudenverlauf )
Übung
• Zeichne das Ergebnis der eindimensionalen DCTTransformation ( x=Zeit, y(x)=Amplitudenverlauf )
Modem
• Das Kunstwort "Modem" steht für die Anfangsbuchstaben der
englischen Wörter "Modulation" und "Demodulation" und
bezeichnet ein Gerät, das digitale Signale in analoge Wellen
und umwandelt und umgekehrt.
• Das Verfahren, das hierbei angewendet wird, ist die
Amplitudenmodulation. Auf eine bestimmte Trägerfrequenz
(dem so genannten Carrier) wird beim Absender, quasi
"huckepack", das Informationssignal aufmoduliert und
übertragen. Der Empfänger filtert dann aus dem
Signalgemisch die Trägerfrequenz wieder heraus und erhält als
Ergebnis das Informationssignal zurück.
Amplitudenmodulation
Modem
• Gängige Modemstandards arbeiten hierbei im
Vollduplex-Betrieb, d.h. es existieren gleichzeitig zwei
Trägersignale für beide Übertragungsrichtungen,
während einige ältere Standards im HalbduplexBetrieb arbeiten, d.h. die Verbindung kann immer nur
abwechselnd in eine Richtung genutzt werden.
Kompression mit Wavelets
Kompression bisher
• Direkt auf Pixelwerten beruhend (BTC)
• Auf Transformation in Frequenzraum beruhend
(Fourier-Transformation, DCT)
Mensch als Signalfilter
• Zwischen äußerem Signal und innerem Ausgang der
Sinnesorgane stehen verschiedene Filter, die nur
bestimmte Änderungen der Umgebungsbedingungen
in das innere System passieren lassen
Æ
Beispiel: Licht- und Tonwahrnehmung sind sind auf
bestimmte Frequenzbereiche beschränkt
Transformation von Signalen
Darstellung eines Signals
• "Normale" Darstellung eines Signals:
– Audiosignal: Frequenzen über der Zeit
"Hallo"
Darstellung eines Signals
• "Normale" Darstellung eines Signals:
– Bild: Pixelwerte an Pixelorten
0
144
255 144
Zeit- und Frequenzraum
• Zeitraum
In der "normalem" Darstellung eines Signals handelt
es sich um eine Darstellung eines Wertes in der Zeit
bzw. im Ort.
• Frequenzraum
Im Frequenzraum wird die Änderung eines Signals
beschrieben:
– Wie stark variiert die Amplitude eines Audiosignals?
– Wie stark variiert der Übergang von einem Pixelpunkt
zum nächsten?
– Welche Frequenzen sind in dem gegebenen Signal
vorhanden?
Das Problem der geeigneten Transformation
• Transformation
entsprechende Gewichtung einzelner Frequenzen im
Signal mit dem Ziel, das Ausgangssignal durch die
Summe aller dieser Frequenzen darzustellen.
Das Ausgangssignal [Rot] wird dargestellt als Summe der
beiden Sinusschwingungen [Blau] und [Grün].
Problem der Fourier-Transformation
• Signale mit "hoher" Lokalität
Signal
Sinusschwingungen
0-5 Hz
14-19 Hz
Gesucht: Frequenzdarstellung durch Funktionen,
die eine sehr hohe Lokalisierung aufweisen Æ
das Signal kann im Frequenzraum mit einigen
wenigen Summanden unterschiedlicher
Frequenzen dargestellt werden.
Lösung: Wavelets
• Ein Wavelet ist eine Funktion, welche die folgende
Zulässigkeitsbedingung erfüllt (Grundlagen: 1930):
daraus folgt
Wavelets
• Ein Wavelet ist somit eine Funktion, die nur auf einem
begrenzten Intervall <> 0 ist, und die "über der
Kurve" genau so viel hat wie "unter der Kurve".
wavelet
= small wave (engl.)
ondelette = petite onde (frz.)
Wellchen = kleine Welle (dt.)
Wavelets: Beispiele
1
1
0
Haar-Wavelet
-1
Mexican Hat
Wavelets: Beispiele
Shannon-Wavelet
Anwendung von Wavelets
• Statt der allgemeinen Theorie betrachten wir nur
noch
– diskrete Wavelet Transformationen (DWT)
– dyadische DWT ("Faktor 2")
– orthogonale Wavelets
• Daubechies, Shannon, Meyer, Koifman, Morlet
Beispiel: Haar-Transformation
• Wir führen jetzt eine Wavelet-Transformation mit
dem Haar-Wavelet durch.
AMPLITUDE
4
3
SIGNAL
2
1
ZEIT
1 2 2 3 2 3 4 1 1 2 2 1 1
Koeffizientendarstellung in der Zeit
Vergröberung durch
Mittelung benachbarter Werte
• Wir führen jetzt eine Wavelet-Transformation mit
dem Haar-Wavelet durch.
AMPLITUDE
APPROXIMATION
4
3
SIGNAL
2
1
ZEIT
1 2 2 3 2 3 4 1 1 2 2 1 1
1,5 2,5 2,5 2,5 1,5 1,5
Approximation
Filter zur Berechnung des Mittelwertes.
Faltung.
AMPLITUDE
APPROXIMATION
4
3
SIGNAL
2
1
ZEIT
1 2 2 3 2 3 4 1 1 2 2 1 1
1,5 2,5 2,5 2,5 1,5 1,5
Approximation
• Über das Signal wird ein Filter gelegt. Die Werte, die
"aufeinander liegen" werden multipliziert.
Nachträglich wird alles zusammen addiert.
Filter zur Berechnung des Mittelwertes.
Prinzip der Faltung.
AMPLITUDE
APPROXIMATION
4
3
SIGNAL
2
1
ZEIT
1 2 2 3 2 3 4 1 1 2 2 1 1
1,5 2,5 2,5 2,5 1,5 1,5
½ ½ ½ ½ ½ ½ ½ ½ ½ ½ ½ ½
½ *1 + ½ *2 = 1,5
½ *2 + ½ *3 = 2,5
½ *2 + ½ *3 = 2,5
Rekonstruktion der Information
• Bei der Darstellung des Signals durch
Approximationen geht Information verloren.
• Um das Signal aus den Approximationen wieder
rekonstruieren zu können, muss man wissen, wie weit
die beiden Werte, die einen Mittelwert gebildet
haben, von diesem entfernt liegen.
Filter zur Berechnung der Abweichung
AMPLITUDE
4
3
SIGNAL
2
1
ZEIT
ABWEICHUNG
DETAIL
FILTER
1 2 2 3 2 3 4 1 1 2 2 1 1
1,5 2,5 2,5 2,5 1,5 1,5
-0,5
½
1,5 - ½ = 1
-0,5
-0,5
1,5
-½
1,5 - (-½) = 2
-0,5
0,5
• Um das Ausgangssignal aus Approximationen und
Details zu rekonstruieren, werden Synthesefilter
angewandt:
1 2 2 3 2 3 4 1 1 2 2 1 1
1,5 2,5 2,5 2,5 1,5 1,5
SIGNAL
-0,5
ABWEICHUNG
-0,5
-0,5
1,5
-0,5
0,5
1
1
SYNTHESEFILTER FÜR 1. WERT
1
-1
SYNTHESEFILTER FÜR 2. WERT
1.5*1+(-0.5)*1
1.5*1+(-0.5)*(-1)
2.5*1+(-0.5)*1
2.5*1+(-0.5)*(-1)
=
=
=
=
1
2
2
3
(Synthese
(Synthese
(Synthese
(Synthese
des
des
des
des
MITTELWERT
1.
2.
1.
2.
Wertes)
Wertes)
Wertes)
Wertes)
Filter
• Zur Zerlegung und Synthese des Ausgangssignals
wurden insgesamt 4 Filter benötigt :
½ ½
– Approximationsfilter für den Mittelwert
– Filter für die Abweichung
– Synthesefilter für 1. Wert
– Synthesefilter für 2. Wert
• Approximationsfilter Æ Tiefpaßfilter
• Detailfilter Æ Hochpaßfilter
½
-½
1
1
1
-1
Filter
• Die Zerlegung des Signals in Approximationen und
Abweichung kann sukzessive mit den
Approximationen als Eingangssignal fortgesetzt
werden Æ
• Rekursion mit jeweils errechneten Approximationen
(Tiefpaß gefilterten "gröberen" Versionen des
Ausgangssignals)
1 2 2 3 2 3 4 1 1 2 2 1 1
1,5 2,5 2,5 2,5 1,5 1,5
2
2,5
2,25
1,5
Tiefpassfilter
• Lässt tiefe Frequenzen passieren (Multiplikation mit 1)
und schneidet hohe Frequenzen ab (Multiplikation mit 0).
Allgemeine Wavelet-Transformation
• Für die Haar-Transformation werden 4 Filter
benötigt.
• Allgemeine Wavelet-Filter sind länger.
• Zu einer vollständigen Transformation braucht man
immer einen Tiefpassfilter, einen Hochpassfilter, und
zwei Synthesefilter.
• Die Filter werden immer über das Signal gelegt und
mit ihm gefaltet (Multiplikation und Addition).
Anschließend werden die Filter um 2 Elemente des
Signals verschoben.
Hoch- und Tiefpassfilter
1
2
2
3
2
3
4
1
1
2
2
1
1
c0 c1 c2 c3
c0 c1 c2 c3
c0 c1 c2 c3
• Sukzessive Faltung des Signals mit einem
Tiefpassfilter aus 4 Koeffizienten. Während die
Details gespeichert werden (d.h. nicht weiter
verarbeitet), werden die Approximationen nun
wiederum Tiefpass- und Hochpass gefiltert u.s.w.
JPEG 2000
• JPEG 2000 "ISO/IEC 15444-1"
(www.jpeg.org/JPEG2000.html)
• Ergänzung zum JPEG-Format
• Wavelet Transformation an Stelle der DCT (keine
Block-Artefakte mehr)
• Verlustfreie Kompression möglich
• Compound Documents (verschiedene Auflösungen
innerhalb eines Bildes)
• Verschlüsselung und Zusatzinformationen
• Alpha-Kanäle
Darstellung von Bilder mit Basisbildern
• Man kann ein Grauwertbild in eine
Linearkombination aus Basisbildern (2x2 im Beispiel)
und Koeffizienten zerlegen.
0
144
255 144
0
144
255
144
= 0x
1
0
0
0
+ 144 x
0 1
0 0
+ 255 x
0
0
1
0
+ 144 x
0
0
1
1
Darstellung von Bilder mit Basisbildern
• Man kann ein Grauwertbild in eine
Linearkombination aus Basisbildern und Koeffizienten
zerlegen.
• Im folgenden ist die Zerlegung eines 2x2-Bildes mit
• Hilfe von Basisbildern dargestellt.
• Neben der oben dargestellten Basis aus 2x2
Basisbildern, kann man beliebige andere Basen
konstruieren.
Videokompression mit Wavelets
Videokompression mit Wavelets
• Ein Video kann als ein dreidimensionales Signal
betrachtet werden (x-Achse, y-Achse, Zeit).
• Die Oszillation der Farbwerte in benachbarten Pixeln
und Frames des Signales ist im Ortsraum relativ
gleichmäßig verteilt Æ i.A. eine gute Voraussetzung
für die Kompression.
Videokompression mit Wavelets
WAVELETTRANSFORMATION
VIDEO IM ORTSRAUM
VIDEO IM FREQUENZRAUM
(Überlagerte Frequenzen)
• die meisten Koeffizienten enthalten eine für das
Video unwesentliche Information (hohe
Kompressionsraten, bis zu 100:1, möglich)
Videokompression mit Wavelets
ORIGINALBILDFOLGE
Kompression: ca. 1% der
Originalinformation.
Artefakte
• Unscharfe Einzelbilder, da viele hohe Frequenzen
deutlich unter einem Grenzwert liegen. Hohe
Frequenzen sind vor allem für scharfe Kanten und
feine Texturen verantwortlich.
• Überlagerte vergangene und zukünftige Frames, die
teilweise als Schleier sichtbar sind. Grund: Es wurde
nicht nur der Raum, sondern auch die Zeit
transformiert.
Videokompression mit Wavelets
• Hohe Kompressionsraten, jedoch immer noch nicht
besser als beim typischen MPEG-Verfahren.
• Trotzdem glaubt man, dass Wavelets das größere
Potenzial für die Videokompression bieten.
• Indeo Video Interactive Codec: Æ
Zunächst wird Frame 1 komprimiert,
dann nur die Änderung von Frame 4
gegenüber Frame 1. Anschließend
folgen Frame 2 und 3,
(nur die Veränderungen
gegenüber 1 und 4 kodiert.)
Fraktale Bildkompression
Fraktale
• Fraktale sind Objekte, bei denen kleine Teile immer
einem größeren Teil in dem Objekt ähnlich sind.
• Theorie der Fraktale =
Theorie der Selbstähnlichkeit.
Selbstähnlichkeit ist mathematisch beschreibbar (B.
Mandelbrot).
Iterierende Funktionssysteme
Farnblatt
Sierpinski-Dreieck
• besondere Eigenschaft:
Selbstähnlichkeit (ein Ausschnitt des Fraktals entspricht
wieder dem ursprgl. Fraktal)
Julia-Menge
"Drache"
Rekursion
• Die Grundidee der rekursiven Definition einer
Funktion f ist: Der Funktionswert f(n+1) einer
Funktion f: N0 → N0 ergibt sich durch Verknüpfung
bereits vorher berechneter Werte f(n), f(n-1), ... Falls
außerdem die Funktionswerte von f für hinreichend
viele Startargumente bekannt sind, kann jeder
Funktionswert von f berechnet werden.
• Bei einer rekursiven Definition einer Funktion f ruft
sich die Funktion so oft selber auf, bis ein
vorgegebenes Argument erreicht ist, so dass die
Funktion terminiert (sich unterbricht).
Übung
• Generieren Sie das Fraktal "Schneeflocke".
Idee für die Bildkompression
• Häufig ist ein Ausschnitt aus einem Bild einem
anderen Ausschnitt ähnlich - er kann unter
Anwendung von einfachen mathematischen
Operationen aus dem anderen Ausschnitt errechnet
werden (Translation, Rotation, Skalierung).
• Kodierung:
Voll-Kodierung des ersten Bildausschnitts, für die
ähnlichen Bildausschnitte Ausgabe der
Transformationsoperatoren.
Bildkompression mit Fraktalen
SUBSAMPLING
ROTATION
CONTRAST/
OFFSET
TRANSFORMIERTER
BEREICH
Fraktale Kompression
• Obwohl man dieses Verfahren für vielversprechend
hält und bereits auch erfolgreich eingesetzt hat
(automatische Fehlererkennung in Webmustern bei
Textilien), hat sich bisher noch kein fraktal
arbeitendes Format durchgesetzt.
Technische Übersicht der
Videostandards
Bildgröße
• Konventionelle Fernsehgeräte arbeiten mit
horizontalen Zeilen, während Computerbildschirme
das Bild aus horizontalen und vertikalen Pixeln
aufbauen.
• Computerbildschirme unterstützten weit höhere
vertikale Auflösungen als Fernsehen. Bei der
Wiedergabe am PC-Bildschirm müssen deshalb die
Zeilen rechnerisch bereitgestellt werden, um den
Bildschirm zu füllen.
Scanning-Raster
A
E
C
B
F
D
Videostandards NTSC und PAL
• Entwickelt im Rahmen der Einführung des
Farbfernsehens in den fünfziger Jahren des 20.
Jahrhunderts (NTSC - 1953, PAL – 1962-1967)
• Die wichtigsten Formate heißen
– NTSC (National Television System Committee Æ
Amerika und Japan)
Æ 525 Zeilen,
und
– PAL (Phase Alternating Line Æ Europa, Australien,
Naher Osten und Asien )
Æ 576 Zeilen
NTSC-TV auf dem Bildschirm NTSC-Auflösung (D1 und DV)
• NTSC Æ 525 Zeilen :
– 720 x 486 (Standardgröße D1) Æ
professionelle BetaSP- oder digitale Betacam-Kamera)
– 720 x 480 Æ Bei Verwendung einer DV-Quelle
(digitales Video)
– 6 Pixel Unterschied zwischen D1-Spezifikation und der
DV-Spezifikation
D1-Auflösung
• Viele Komprimierungsalgorithmen (auch die DVKomprimierung) sind für Bildgrößen optimiert, die
ein Vielfaches von 16 darstellen.
• Da nur 6 Pixel aus einem Bild in D1-Auflösung
entfernt werden müssen, konnte für das DV-Format
eine native Auflösung mit einem Vielfachen von 16
definiert werden (480 = 16 * 30).
PAL-TV auf dem Bildschirm
• PAL Æ 576 Zeilen :
– 720 x 576 - unabhängig von der Videoquelle
– Für die DV-Komprimierung ist keine Anpassung
erforderlich (576 = 16 * 36 Æ ein Vielfaches von 16).
Digitales Video - Formate
Videostandards NTSC und PAL
• Weder NTSC noch PAL ist für Präsentationen auf
Computerbildschirmen optimal geeignet. Jeder
Standard führt zu bestimmten Problemen bei der
Optimierung von Videos für die Bereitstellung über das
Internet (vertikale bzw. horizontale Kompensation):
BILDGRÖSSE
BILDRATE
SEITENVERHÄLTNIS
(d) 720x480
(3:2)
(a)525 Z/60 Hz
29,97
D1 (0,9)
Halbbild
PAL
720x576
(4:3)
(a)625 Z/50Hz
25,00
D1 (1,067)
Halbbild
PC
NTSC 720x540
PAL 720x572
NTSC
ANZEIGE
Quadratisch Progressiv
Halbbild- und progressives Video
• Videobilder bestehen aus zwei Halbbildern, die
zusammen ein Einzelbild ergeben. Diese Methode
wurde aufgrund technischer Beschränkungen
eingeführt, als die ersten Fernsehgeräte entwickelt
wurden (ein Einzelbild konnte nicht progressiv und ohne
sichtbare Verzögerungen von oben nach unten auf dem
Bildschirm dargestellt werden).
Progressive Darstellung bei HDTV
• Von neueren Videostandards für hochauflösende
Fernsehgeräte (High Definition) wird diese Technik
nicht mehr unterstützt. Diese Standards sehen eine
progressive Darstellung der Bilder in einem
Durchgang von oben nach unten vor (HDTV 720p).
• Eine einzelne Zeilengruppe wird auch als Feld
bezeichnet. Die beiden Felder werden als oberes und
unteres Feld bzw. Feld 1 und Feld 2, Gerade und
Ungerade oder Oben und Unten bezeichnet
(es existiert keine standardisierte Nomenklatur - 2005).
De-Interlacing
• Soll das Video auf einem
Computerbildschirm scharf
angezeigt werden, muss
jeweils eines der beiden
Halbbilder entfernt werden
(Æ De-Interlacing).
• Die Hälfte der Daten für jedes
Einzelbild wird verworfen. Die
verbleibenden Daten werden
dupliziert oder interpoliert.
Bei Verwendung progressiv
aufgezeichneter Bilder ist
eine Entfernung von
Halbbildern vor der
Bereitstellung des Videos im
Web nicht erforderlich.
HDTV
HDTV
• Zur optimalen Darstellung von HDTV-Sendungen
müssen die Wiedergabegeräte mindestens eine
Auflösung von 1.920 x 1.080 Pixeln haben. Zum
Vergleich: Gute Plasmabildschirme können heute
1.366 x 768 Pixel im 16:9-Format darstellen.
• Der Bezahlsender Premiere hat im November 2005
drei HDTV-Programme gestartet.
Analog TV vs. HDTV
HDTV vs. PAL
PAL-Bild
4:3
576
1080
720
HDTV-Bild
16:9
1920
HDTV-Auflösung
• Die HDTV-Bildauflösung ist fünfmal höher als beim
PAL-Standard. Bei PAL besteht ein Bild aus 414.720
Pixeln (720x576), bei HDTV aus über 2 Millionen
Pixeln (2.073.600 = 1920x1080) .
Bildpunkte:
Pixel gesamt:
Detailgrad
gegenüber
PAL:
StandardVideo (PAL)
HDTV 720p
(progressive)
HDTV 1080i
(interlaced)
720 x 576
1280 x 720
1920 x 1080
414.720
921.660
2.073.600
-
x2
x5
Weitere Vorteile von HDTV
• HDTV ist auf das Breitbildformat 16:9 ausgelegt.
PAL funktioniert dagegen mit einem Breite-Höhe­
Verhältnis von 4:3.
• Die Farben bei HDTV wirken brillanter, die Konturen
der Bilder wesentlich klarer.
• HDTV kann das Bild in Originalbreite darstellen,
während für PAL-Kinofilme entweder seitlich
beschnitten, gestaucht oder mit schwarzen Balken
oben und unten versehen werden müssen.
Weitere Vorteile von HDTV
• Dolby Digital mit Surround
Sound gehört bei HDTV zum
Übertragungsstandard.
• Bei entsprechender
Lautsprecher-Anordnung sind
Sendungen räumlich erlebbar,
als säße man mitten im
Geschehen.
Neue Schnittstelle: HDMI
• HDMI überträgt Bild und Ton komplett digital inklusive HDCP-Kopierschutz. Immer mehr Plasmas,
Beamer und Abspiel-Geräte haben einen HDMIAusgang.
DVI
HDMI
Kompressionsverfahren
für Video
Motion JPEG (M-JPEG)
M-JPEG
• (Intraframe) Komprimierung der aufeinanderfolgenden Bilder von Videosequenzen Bild für Bild
nach dem JPEG-Standbildverfahren
(Gemeinsamkeiten der aufeinanderfolgenden Bilder
werden nicht für die Kompression genutzt).
• Entwickelt für den Videoschnitt am PC. Nicht
genormt (Probleme mit Kompatibilität).
• Erlaubt schnellen Zugriff auf jedes Einzelbild.
Erfordert in der Regel Hardwareunterstützung.
AVI
Das am weitesten verbreitete
Videoformat für PC.
Microsofts Video for Windows (VfW)
• Video für Windows 1 (1992-1993, Windows 3.1)
– Videogröße:
ursprünglich 160 x 120 Pixel, später 320 x 240 Pixel
und mehr
– Framerate:
15 fps, später bis 30 fps
• Keyframe-Technik
– nur jedes 12. bis 17. Bild wird als Vollbild gespeichert;
für die dazwischen liegenden Frames werden nur die
Unterschiede zum jeweils vorhergehenden Bild
angegeben
Codec
• Coder/Decoder - Software (Treiber) oder Hardware,
die für die Kompression und Dekompression
verwendet (benötigt) werden.
• Einige der bekannten AVI-Codecs:
– Cinepak,
– INTEL Indeo
(bis Version 3.2 unidirektionale Komprimierung)
– Microsoft RLE
– Sorenson (Æ Flash)
Codecs-Anzeige unter Windows
Ältere Codecs
• Microsoft RLE Codec
– Verwendet RLE-Kodierung. Reduziert die Videobilder
auf 256 Farben. Eignet sich für die Kompression
einfacher Bildinhalte (z.B. Cartoons).
• Microsoft Video 1 Codec
– Arbeitet im Highcolor-Modus (64 000 Farben).
• Intel Video Raw Codec
– Arbeitet im True-Color-Modus (16,7 Millionen Farben)
Intel Video R3.2 Codec
• Arbeitsweise
– Das menschliche Auge ist relativ träge. Ab einer bestimmten
Abfolgefrequenz verschmelzen Einzelbilder zu einer flüssigen
Bewegung. Dabei ist es nicht notwendig, das vollständige
Einzelbild neu darzustellen, sondern nur die Passagen mit
geänderten Bildinformationen. Als Einzelbilder fungieren beim
Codieren so genannte "Keyframes". Sie enthalten jeweils ein
Vollbild, dem eine Reihe von Bildern mit
Änderungsinformationen folgt, bis das nächste Keyframe die
Szene wieder neu definiert. Je ruhiger die Szene ist, desto weiter
können die Keyframes auseinander liegen.
• Nachteile
– Beim Komprimieren beansprucht die Berechnung viel Zeit
– Beim Einarbeiten von Überblendungen können Bildfehler
auftreten.
Radius Cinepak Codec
• Arbeitet ähnlich wie der 3.2 von Intel, erzeugt aber
noch höhere Kompressionsraten und liefert meistens
gute Qualität.
AVI (Audio Video Interleaved)
• Kann Echtfarbbilder und zwei Audiospuren enthalten.
• "Interleaved"
Æ Audio- und Videodaten sind ineinander
verschachtelt.
• Unterschiedliche Komprimierungsverfahren möglich
Æ Offenheit und Anpassung des Formats.
• Kann nur Bild und Ton enthalten. MultimediaObjekte anderen Typs lassen sich nicht einbetten.
AVI als Container
• AVI wird oft als Container für andere Videoformate
verwendet – AVI kann verschiedene Audio- und
Video-Codecs in einer Datei kombinieren.
• Beschränkung der Datei-Größen auf maximal 2 GB
Indeo Video Interactive (ab V. 4.1)
• Bi-directional Prediction, Wavelet-Kodierung
• Transparenz (Umsetzung des Blue-ScreenVerfahrens für Video-Clips)
• Willkürliche Festlegung von Keyframes
• Local-Decode-Verfahren, das immer nur den
ausgewählten Ausschnitt eines Videofensters
entkomprimiert.
Apple QuickTime
Apple QuickTime (QT)
• Entwickelt seit 1991 als Betriebsystemerweiterung
• Bietet eine weite Palette an Formaten für
Multimediaerweiterungen Æ Streaming
• QuickTime Movies (.mov-Datei) sind auch auf
anderen Plattformen (z. B. auf PCs) abspielbar.
• Es stehen eine Vielzahl von Codecs für
unterschiedliche Anwendungen zur Verfügung
(Inter- und Intraframe-Kodierung)
– der hochwertige Sorenson Spark Codec
(Sorenson Squeeze Æ Flash-Videos, FLV-Format)
– Animation-Codec für synthetisches Bildmaterial
QuickTime
• QuickTime kann im Allgemeinen als System zur
Kontrolle und Synchronisation zeitbasierter Daten
bezeichnet werden.
• Das QuickTime-Format kommt aus der
Macintoshwelt (Æ "native" Director-Format)
• 1998 übernahm ISO (International Organization for
Standardization) QuickTime als SchlüsselKomponente zur Entwicklung des MPEG-4 Standards.
QuickTime
• QuickTime bietet die Möglichkeit, eine Referenz auf
die verwendeten Daten zu erstellen, ohne diese
erneut als Medien-Datenstrom innerhalb der
erstellten Datei speichern zu müssen.
Æ
Eine mit QuickTime erstellte Datei kann daher sehr
klein sein, da sie u.U. nur Daten verwaltet.
QuickTime
• QT ist in der Lage mehrere Daten-Spuren innerhalb
eines Films (Tracks) in Ebenen (Layern) übereinander
zu stapeln.
• Die Tracks können ausser Medien-Daten auch
Informationen, beispielsweise Angaben über die
Transparenz der oberen Layern, und Anweisungen,
beispielsweise über das Verhalten anderer Tracks,
enthalten.
Component Download und QuickTime-API
• Ein QuickTime Player ist seit der Version QuickTime
5 in der Lage die fehlenden und zum Abspielen
benötigten Komponenten wie Codecs zum Beispiel
automatisch aus dem Internet zu laden.
• Entwicklern stellt Apple eine QuickTime-API
(Application Programming Interface) zur Verfügung,
mit der man QuickTime-Features in eigene Windowsoder Mac-Anwendungen einbinden kann.
Codecs
• Das QuickTime Format unterstützt eine Reihe
unterschiedliche Codecs:
–
–
–
–
Cinepak
Sorenson Video
MPEG
Realtime Streaming
(RTSP - RealTime Streaming Protocol)
Embedding
• Das QuickTime-Format unterstützt Embedding kann deshalb als Container fungieren und andere
Formate beinhalten
–
–
–
–
–
(Hyper-) Text
JPEG
PNG
Flash
QuickTime VR
QuickTime VR
OGM-Format von OGG-Media
OGM-Container-Format von OGG-Media
http://us.xiph.org/ogg/vorbis/
• Bei gleicher Bitrate ist OggVorbis-Audio besser als
MP3. Da AVI keine OggVorbis-Audiospur akzeptiert
wurde das OGM-Videoformat entwickelt.
• OGM bietet alle Features eines modernen
Multimedia-Formats z.B. Streaming und
Fehlerkorrektur-Mechanismen.
• Schwäche: Spezialisierung auf die Ogg-Formate wie
OggVorbis und OggTheora (VLC - VideoLan Client cross-platform media player and streaming server).
MKV - Matroska-AV-Datenformat
Matroska
DAS Standard-Multimedia-Container der Zukunft?
• "... ist wie eine Art Umschlag, der verschiedene Audio-,
Video- und Untertitel-Spuren enthalten kann. Dadurch
kann der Benutzer einen kompletten Film in einer
einzigen, einfach zu handhabenden, Datei erzeugen.
Dabei wird sichergestellt, daß der Film in allen
verschiedenen Playern perfekt und synchron abgespielt
wird."
• Basiert auf EBML (Extensible Binary Meta Language),
einer binären Variante von XML.
Matroska-Containerformat
• Bietet:
–
–
–
–
–
–
–
Menüs (wie auf DVDs)
Kapitel
Auswählbare Untertitel
Auswählbare Audiospuren
Schnelles hin- und herspulen
Hohe Fehlerrobustheit
Streaming über das Internet (HTTP und RTP)
FLI/FLC
FLC/FLI
• FLC- und FLI- (begrenzt auf 256 Farben und 320x200
Pixel Abmessung) Formate wurden ursprünglich von
Autodesk für das Betriebssystem DOS entwickelt.
• Jahrelang Quasi-Standardformate im Bereich
Computer-Animation für den PC, heute noch von
vielen Animationsprogrammen unterstützt
• FLC und FLI verfügen über keinen Sound. Beide
unterstützen die RLE Komprimierungsmethode.
Übung
1. Importieren Sie das Video
"Examples/Video/apache.avi" ins Flash.
2. Bearbeiten Sie das Video in VirtualDub (resize,
320x240) und importieren Sie es ins Flash.
Beschreiben Sie das Ergebnis in beiden Fällen.
3. Exportieren Sie das Video unter Verwendung
unterschedlicher Codecs. Vergleichen Sie die
Ergebnisse.
MPEG
Prädiktive Bewegungskompensation
(motion compensation, motion estimation),
• Zwischen aufeinanderfolgenden Bildern einer
Videosequenz ergeben meistens nur geringe
Unterschiede. Das aktuelle Bild lässt sich "lokal" aus
Verschiebung eines vorhergehenden darstellen
(lokal=Amplitude und Richtung der Verschiebung sind
nicht überall gleich)
Prädiktive Bewegungskompensation
• Der MPEG-Standard bietet die Möglichkeit, die
zeitliche Redundanz durch das sog. "interframe
codings" zu verringern. Das erhöht die Effizienz der
Codierung.
• Die Einzelbilder werden in 16x16-Blöcke
(Makroblöcke) aufgeteilt. Für jeden Makroblock wird
ein Verschiebungsvektor berechnet, der den
Makroblock im Referenzbild angibt, auf den das Bild
Bezug nimmt. Wie der Name schon vermuten lässt,
wird die prädiktive Bewegungskompensation zur
Codierung von P-Bildern verwendet.
MPEG - Moving Picture Experts Group
(Komitee der ISO).
• MPEG konzentriert sich nicht nur auf Videodaten,
sondern behandelt auch die damit verbundenen
Audiodaten.
• Konzipiert ursprünglich (80er Jahren) für Video-CD
(halbe PAL-Auflösung, 352x288 Pixel):
– Ein Videosignal soll samt Audio bei annehmbarer
Qualität auf 1,5 MBit/s (~0.2 MB/s) komprimiert
werden. (Datenrate eines Bitstroms von einer Audio-CD
Æ Single Speed ~ 150 KB/s).
Videokompressionsalgorithmus
• Wahlfreier Zugriff innerhalb von 0.5 s ohne
signifikanten Qualitätsverlust
• Schnelle Vorwärts-/Rückwärtssuche
• Bildfolge kann rückwärts abgespielt werden
• Gute Editierbarkeit
MPEG-I-SIF-Format
• SIF - Source Input Format:
– 352x240, 30 frames/s (NTSC-basiert)
– 352x288, 25 frames/s (PAL-basiert),
– theoretisch bis hin zu 4095x4095, 60 frames/s
MPEG-Videokodierung
• Ein MPEG-1-Video ist als Kette von Bildern der
folgenden Frame-Typen zu verstehen.
– I-Frame (Intra Frame)
Anker für den wahlfreien Zugriff (JPEG-ähnlich)
– P-Frame (Predicted Frame)
Benötigt Informationen von den vorausgegangenen Ioder P-Frames
– B-Frame (Bidirectional, Interpolated Frame)
Abhängig von vorausgegangenen und folgenden I- oder PFrames
– D-Frame (Direct coded Frame)
Für schnellen Vorlauf
MPEG-Videokodierung
• P- und B-Bilder (größte Kompression) codieren nur die
Differenz zwischen den von ihnen referenzierten
Bildern.
• D-Bilder, ermöglichen den schnellen Suchlauf, sind
aber als völlig unabhängig von I-, P- und B-Bildern zu
betrachten.
MPEG-Videokodierung
• I-Frame (Intra Frame)
Referenzbild mit vollständiger Information. Intrakodiertes Vollbild, ähnlich dem JPEG-Standbild.
Kodiert mit DCT, Quantisierung, Lauflänge und
Huffman. I-Bilder stellen die Einstiegspunkte für den
wahlfreien Zugriff.
• P-Frame (Predicted Frame)
Nimmt Bezug auf vorhergehende I- und P-Bilder.
Delta-Kodierung, DPCM-kodierte Makroblöcke.
MPEG-Videokodierung
• B-Frame (Interpolated Frame)
"bidirectionally predictive coded pictures", nimmt Bezug auf
das vorhergehende und das nachfolgende Bild. Höchste
Kompressionsraten. Aufgrund ihrer interpolierenden
Eigenschaften (interpolative Bewegungskompensation)
dürfen B-Frames nicht als Referenz für die Codierung der
anderen Typen verwendet werden.
• D-Frame
"DC coded picture", nur DC-Koeffizienten der Blöcke
(linke obere Ecke der Koeffizienten-Matrix) für schnellen
Vorlauf.
Decodierung
• Das Videosignal wird durch Interpolation eines
vorhergehenden und eines nachfolgenden Bildes und
anschließender Addition eines Korrekturterms
wiederhergestellt.
• Vorteil der doppelten Referenz: Der Fehler zwischen
zwei aufeinanderfolgenden I-Bildern nimmt nicht
stetig zu, sondern hat sein Maximum in der Mitte.
Das Rauschen wird kleiner.
• Nachteil: erhöhter Rechenaufwand.
• Anwendungen zeichnen sich durch aufwendige
Codierung, aber schnelle Decodierung aus, wie dies
z.B. bei digital gespeicherten Spielfilmen der Fall ist.
Eine typische Abfolge von Bildern in einem
MPEG-Datenstrom
Die Folge von I-, P. und B-Frames (GOP-Group Of Pictures)
ist nicht standardisiert, sondern kann von der Anwendung
bestimmt werden. So lassen sich Bildqualität und
Kompressionsrate anwendungsabhängig wählen.
B
I
B
B
P
B
B
P
B
B
P
B
B
AC
T
I
E
Z
I
E
S
H
B
B
MPEG-Motion Picture Experts Group
I-FRAME
Nur wenige Bilder werden vollständig
im JPEG-Verfahren als I-Frames komprimiert
B-FRAME
Bidirectionaly Coded Picture
Kontrollfrage
• Wie viele Minuten Video in MPEG-1 Format lassen sich
auf einer CD (700 MB) aufzeichnen?
MPEG-2
MPEG-2
• Wurde gemeinsam von ISO und ITU* entwickelt
(1995/1996).
• Erweitert MPEG-1 für höhere Bandbreiten (bis zu
100 MBit/s; typisch: 720x576 Pixel, 15 MBits/s) und
bessere Bildqualität, bis hin zu HDTV.
• Erstmals sieht MPEG-2 auch skalierbare Datenströme
vor, die zur Bedienung von Empfängern
verschiedener Leistungsklassen eingesetzt werden
können (Æ Levels).
*ITU=International Telecommunication Union
Anwendungen
• MPEG-2 Audio unterstützt Sample-Frequenzen von
44.1 bis 96 kHz sowie DTS (Mehrkanaltonsystem von
Digital Theater Systems) und Dolby Digital 5.1
(ehemals AC3).
• Weitere Anwendungsgebiete von MPEG-2 sind
digitale Videoübertragung via Satellit und digitales
Fernsehen (High Definition TV, HDTV, 1920x1152
Pixel, 80 MBits/s.).
Skalierbarkeit
•
•
•
•
SNR scalability
Spatial scalability
Temporal scalability
Data partinioning
Skalierbarkeit in MPEG-2
• SNR scalability (Layered-Encoding-Prinzip
(Signal To Noise Ratio Æ quality level)
Jedes Bild wird in mehreren Schichten ("layers")
codiert. Wer nur die Basis-Schicht dekodiert, erhält
eine schlechte Bildqualität; wer auch höhere
Schichten decodiert, erhält Schicht für Schicht eine
bessere Bildqualität. Ein Beispiel ist die Übertragung
der U- und V-Komponenten in der Basis-Schicht mit
einem Viertel der Auflösung von Y, die höheren
Schichten enthalten dann die fehlenden Farbwerte
(Chroma) und ermöglichen eine bessere Farbtreue.
Skalierbarkeit in MPEG-2
• Spatial scalability
bedeutet eine Codierung des Bildes mit
verschiedenen Pixel-Auflösungen. So könnten
beispielsweise die Bildauflösungen für ein StandardFernsehgerät und für ein hochauflösendes HDTVFernsegerät in einem gemeinsamen Datenstrom
übertragen werden (Erhöhung der Pixeldichte).
Skalierbarkeit in MPEG-2
• Temporal scalability
bedeutet die Übertragung von wenigen Frames in der
Basis-Schicht und von zusätzlichen Frames in den
höheren Schichten. Werden höhere Schichten
decodiert, so erhält man eine höhere Frame-Rate.
Skalierbarkeit in MPEG-2
• Data partinioning
ermöglicht eine Skalierbarkeit bezüglich der FehlerResistenz. Die wichtigsten Bestandteile des MPEGStromes werden in der Basis-Schicht übertragen,
weniger wichtige Teile in den höheren Schichten. In
die Basis-Schicht legt man zum Beispiel die niedrigen
Koeffizienten der DCT und die Bewegungsvektoren.
Die Basis-Schicht kann dann mit mehr Redundanz
zur Fehlersicherung versehen werden und wird somit
fehlerärmer empfangen als die höheren Schichten,
bei denen sich Übertragungsfehler weniger
gravierend auswirken.
MPEG-2 Video-Profile
QUALITÄT
Simple Profile
Main Profile
(~MPEG 1)
SNR Scalable
Profile
no B frames
not scalable
B frames
not scalable
B frames
SNR scaling
High level
1920x1152x60
(HDTV)
<=80 Mbits/s
([email protected])
High-1440 level
1440x1152x60
<=60 Mbits/s
Main level
720x576x30
(PAL basiert)
Low level
352x288x30
<=15 Mbits/s
High profile
B frames
spatial or SNR
scaling
<=100 Mbits/s
<=60 Mbits/s
<=15 Mbits/s
([email protected])
<=15 Mbits/s
<=4 Mbits/s
([email protected])
<=4 Mbits/s
LEVEL Æ QUALITÄT,
Spatially
Scalable
Profile
B frames
spatial scaling
PROFIL Æ KOMPRESSIONSMETHODE
<=80 Mbits/s
<=20 Mbits/s
MPEG-4
MPEG-4
• Ursprünglich als MPEG-3-Standard für HDTV-Qualität und
sehr hohe Datenraten von ISO und ITU geplant. Dieser wurde
später in MPEG-2 integriert und ist somit hinfällig.
• Für MPEG-4 war zunächst an Video für sehr niedrige
Bandbreiten gedacht (z.B. Multimedia für Mobilfunk).
• Inzwischen basiert MPEG-4 nach einer radikalen
Kehrtwendung im Normungsgremium auf einer EinzelobjektKodierung (inhaltsbasierte Kodierung). Das Bild wird in
einzelne Objekte zerlegt. Für jedes Objekt kann die
Kodierungstechnik getrennt gewählt werden. Die
objektorientierte Kodierung eröffnet zugleich völlig neue
Möglichkeiten zur Weiterverarbeitung beim Empfänger.
MPEG-4-Kodierung
VORDERGRUND-OBJEKT
VORDERGRUND-OBJEKT
• AVOs (AV-Objects)-Prinzip:
Getrennte Codierung des Hintergrund-Objektes
(der Hintergrund ist statisch) und des VordergrundObjektes.
AVOs - der visueller Requisitenraum (Æ DB)
• Standbilder
• "freigestellte" Video-Objekte (Gesicht, Haare, ...
)
• Audio-Objekte: Stimme, Geräusche
• Texte aus denen der Computer synthetische Sprache
erzeugen kann
• Interaktivitäten (Sprung zu einer anderen Szene per
Mausklick)
MPEG-4-Prinzip
• Anders als bei MPEG-1 und MPEG-2 werden nicht nur
Audio und Video komprimiert, sondern Objekte innerhalb
solcher Sequenzen definiert, die einen direkten Zugriff
erlauben.
• Layer encoding
• Hohes Maß an Interaktivität dank MDSL MPEG Syntax [Syntactic] Description Language
ermöglicht Kommunikation mit audiovisuellen Objekten
sowie deren Codierung und Decodierung.
• Integration von Java vorgesehen (MPEG-J)
MPEG-4-Kodierung
CODING
OBJEKT 1
INPUT
VIDEO
TRENNUNG
VON OBJEKTEN
CODING
OBJEKT 2
MUX
BITSTREAM
CODING
…
SZENENBESCHREIBUNG
(Æ DECODIERUNG)
MUX=Multiplexer
MPEG-7
MPEG-7-Konzept
• Wenn immer mehr audiovisuelle Objekte, Sequenzen
und Inhalte verfügbar sind, wäre es wünschenswert,
diese nach inhaltlichen Kriterien suchen zu können.
• Bisher ist es nicht möglich nach Inhalten von Bildern
zu suchen. MPEG-7 soll dank Description Definition
Language (DDL), Deskriptoren und Deskriptionsschemata (Metadaten) ermöglichen, multimediale
Inhalte weitgehend unabhängig von der jeweiligen
Landessprache zu definieren. Diese Information soll in
Bit-Streams eingebettet werden (vgl. RDS-System).
MPEG-7
DESKRIPTOREN, DESKRIPTIONSSCHEMA
MPEG-7BESCHREIBUNG
SUCH- UND
ABFRAGEENGINE
KODIERTE MPEG-7
BESCHREIBUNG
ANWENDER
BESCHREIBUNGSGENERATION
ENCODER
DECODER
FILTERAGENTEN
MULTIMEDIA
INHALT
MPEG-21
MPEG-21
• Implementiert
– die zukünftigen Online-Verkaufsmodelle (Pay-per-View
und Pay-per-Listen) und zumindest ansatzweise
– biometrische Verfahren zur Identifikation bzw.
Verifikation von Personen anhand physiologischer oder
verhaltensbedingter Merkmale.
• Einführung für 2009 geplant ist (liegt heute im
Wesentlichen nur als Entwürfe vor).
Datenraten bei Single-Speed-Laufwerken
• 1 x CD Æ 150 KB/s
• 1 x DVD Æ 1,35 MB/s
(Netto 1,26 MB/s = abzüglich Zusatzinformation)
DivX, XVid, ...
DivX
• DivX Æ Urspünglich DivX ;-). Das Strichgesicht war
eine Anspielung darauf, dass der Code von dem
MPEG-4-Projekt von Microsoft gecrackt wurde.
• Firma DivXNetworks, Inc. entwickelte später eine
komplett neue Version des Codecs (Project Mayo)
um Patentverletzungen zu vermeiden. Die Codecs
von DivXNetworks sind voll zum MPEG-4-Standard
kompatibel.
• Zur Zeit nur Unterstützung von MPEG-4-SimpleProfile .
XviD
• Open-Source-MPEG-4-Codec, der ursprünglich auf
OpenDivX basierte (DivX rückwärts).
• Unklare Rechtslage (darf in USA und Japan nicht
lizensiert werden)
• XviD 1.1.0-beta 2 Release am 4.4.2005 (Ed Gomez)
Audio Kompression
Schall
• Schwingungen der Moleküle in einem elastischen
Medium (wellenartige Ausbreitung)
• Der Schalldruck entspricht der Lautstärke und wird
in Dezibel [dB] gemessen
• [dB] ist eine logarithmische Einheit eine Erhöhung um 10dB wird von dem Menschen als
Verdoppelung der Lautstärke wahrgenommen
Frequenzen
• Verschiedene Frequenzen werden von uns als
Unterschiede in der Tonhöhe wahrgenommen
• Das menschliche Ohr kann Frequenzen zwischen
20Hz und 20kHz wahrnehmen
• Von der Form der Welle hängt die Klangfarbe ab.
Digitalisierung
• Ausgangspunkt ist ein analoges Signal (eine
Spannung), die zu der Schwingung äquivalent ist
(Æ Mikrofon)
• Die Spannung wird permanent gemessen. In
bestimmten Abständen wird der Spannungspegel
gespeichert (in der Praxis Mittelwert innerhalb der
Zeitspanne)
Digitalisierung
• Besteht im Grundsatz aus 3 Arbeitsschritten
– Abtastung (Sampling)
– Wertzuweisung (Quantisierung)
– Erzeugung einer digitalen Zahlenfolge (Codierung)
• Doppelte Diskretisierung
– festes Raster gleicher Abschnitte
– feines Raster von zum jeweiligen Zeitpunkt gehörigen
Werten
Analogsignal
Abgetastetes Analogsignal
Digitalsignal (Quantisierung)
PCM-Pulse Code Modulation
Binär codiertes Digitalsignal
Auflösung = Genauigkeit jeder Messungen
= Anzahl der für die Kodierung notwendigen Bits
(in der Praxis 8-24Bit; CD-Spieler - 16Bit)
110
101
100
011
010
001
000
Samplingrate - die Anzahl der Messwerte pro Sekunde
(in der Praxis 11-96kHz; CD-Player: 44kHz)
Übung
a) Wie viele verschiedene Lautstärkewerte lassen sich
mit 16 Bit codieren? Wie viele mit 8?
b) Berechnen Sie die Bitrate beim Abspielen der Musik
von CD-ROM
(2 Kanäle, Samplingrate 44kHz, Auflösung 16Bit)
Übung
a) 216 = 65536; 28 = 256
b) Bitrate = Anzahl Kanäle * Samplingrate * Auflösung
2 * 44000 Hz * 16Bit ~ 1.4 MBit/s
Audiodateitypen
• Unkomprimiert:
ESPS, PAC, PCM, PRG, AIS, DIG, DWD, EMD, DIG,
SAM, INRS, IFF/SVX, MUS10, RAW, AVR, CDR, UW,
V8, VAP, SF, SFD, SFI, SMP, SNDR, SNDT, SOU,
SPD, SB, SD, SD2, SDW, WAV, VOX, AU
Windows native format
UNIX native format (SUN)
• Komprimiert:
MP1, MP2, MP3, MP3pro, AAC, RA, WMA,
OggVorbis, AC3,VQF
Das Wave-Format
• Das WAVE Format ist eine Untergruppe der
Microsoft RIFF-Spezifikation
(RIFF = Resource Interchange File Format)
• Eine WAVE-Datei ist in Blöcke, die sogenannten
Chunks unterteilt
fmt-Chunks
Name
Grösse in
bytes
Beschreibung
ckID
4
"fmt" Chunkname
ckSize
4
Chunkgröße (32bit unsigned)
wFormatTag
2
Kodierungsart (1=PCM)
wChannels
2
Kanalanzahl
dwSamplesPerSec
4
Sample-Rate in Hz
dwAvgBytesPerSec
4
bytes/s
wBlockAlign
2
bytes pro sample * Kanäle
nBitsPerSample
2
Auflösung (typisch 8 oder 16bit)
Der Data-Chunk
Name
Größe in bytes
Bezeichnung
ckID
4
"data"
ckSize
4
Chunklänge
Sample-Datenfolge
AU-Format
• UNIX-Audioformat von SUN
• Eine AU-Datei besteht aus 3 Teilen:
– HEADER mit allgemeinen Informationen wie Länge,
Zahl der Audiokanäle, Abtastrate u.s.w.
– FELD variabler Länge für Dateiinformationen wie
Copyright, Name des Autors u.s.w.
– AUDIODATEN
MP3
• MP3 = MPEG 1 Layer 3, patentiert vom Fraunhofer
Institut
• Verlustbehaftetes Kompressionsverfahren, dass die
Audiodaten je nach Bitrate auf 1:12 komprimiert
• Bitrate von 8-320 kBit/s (CD-ROM: 1,4 MBit/s)
• Der Kompressionsalgorithmus beruht auf
psychoakustischen Untersuchungen
Quantisierungsfehler
• Quantisierungsfehler
Da die Digitalisierung nicht unendlich genau
stattfinden kann, entsteht immer ein Fehler
• Quantisierungsrauschen
Der Fehler wird als Rauschen wahrgenommen
Psychoakustische Maskierung
• Leise Töne werden von lauten Tönen überdeckt und
so für das Menschliche Ohr unhörbar
zeitliche Maskierung
(Rückwärts- und Vorwärtsmaskierung
Zeitliche Maskierung
• Vor und nach einem starken Impuls steigt die
Hörschwelle an, d.h. leise Töne werden nicht
wahrgenommen
• Nach einem Impuls beträgt
die Zeit bis zur Absenkung
der Hörschwelle ca. 200ms
• Hörschwelle vor einem
Impuls - ca. 20ms
Zeitliche Maskierung
• Bei der Enkodierung wird das Ausgangssignal
zunächst in 32 Frequenzbänder zerlegt
• Alle für den Hörer maskierten Töne werden
weggelassen
• In maskierten Bereichen wird die Auflösung
reduziert: es erhöht dadurch zwar das Rauschen,
jedoch ist dieses aufgrund der Maskierung für den
Hörer nicht wahrnehmbar
Joint-Stereo
Reduzierung der Stereoinformation
• Der linke und rechte Kanal enthalten meist ähnliche
Informationen
• Durch psychoakustische Effekte sind nicht alle Töne
zu orten
• Beim "Joint-Stereo" werden das Stereosignal in einen
Mittelkanal und einen Seitenkanal mit geringer
Datenrate zerlegt
Klangqualität
Bitrate
Klangqualität
8 kBit/s Mono
16 kBit/s Mono
32 kBit/s Mono
56-64 kBit/s Stereo
Telefon
KW-Radio
MW-Radio
UKW-Radio
96 kBit/s Stereo
gutes UKW-Radio bis CDähnlich
CD-ähnlich
CD-Qualität
128 kBit/s Stereo
160-192 kBit/s Stereo
MP3pro (niedrigere Bitraten als MP3)
• Das Format wurde von Thomson Multimedia
entwickelt
• Die Tonqualität bei niedrigen Bitraten soll gegenüber
MP3 deutlich erhöht worden sein
• Klingt bei 64kbit wie MP3 auf 128kbit
• Auf- und abwärtskompatibel zu MP3
MP3-Pro
• Bei einer MP3-Datei werden bei niedriger Bitrate die
hohen Frequenzen weggelassen
Spectral Band Replication (SBR) Verfahren
• Es wird versucht, durch einen Algorithmus die oberen
Frequenzen aus den niedrigen Frequenzen zu
rekonstruieren
• Um dies zu ermöglichen, werden bei der Encodierung
zusätzliche Informationen in der MP3pro Datei
abgespeichert
WMA - WindowsMedia Audio
• Streaming-Format
• Beinhaltet u.a. Markierungen von Audioabschnitten
(Sprungmarken)
AAC
AAC (MPEG-2 ACC)
Advanced Audio Coding
• Nachfolgeverfahren zu MP3 entwickelt vom
Fraunhofer Institut für Integrierte Schaltungen (IIS).
• Kann Musikdaten um den Faktor 16 (MP3 Æ 1:12)
komprimieren, ohne dass hörbare Qualitätsverluste
auftreten
In Japan setzten bereits Anfang 2000 alle digitalen
Rundfunksysteme AAC als einziges Tonformat ein.
ADPCM-Kompression
• Stetige, glatte Kurve Æ
nächstes Sample "in der Nähe"
–
–
–
–
–
E(si - si-1) << E(si)
Schluß von si-1 auf si (Extrapolation)
Übertragung der Differenzen zwischen Samples
Vorhersage des nächsten Samples
Codes variabler Bitlänge
Video und das Internet
Video und das Internet
• Technische Beschränkungen, die eine Nutzung des
vollen Potenzials der Videotechnik im Internet
verhindern:
– Beschränkte Bandbreite
– Komplexität der Video-Erstellung
– Fehlende Integration von Videodaten und anderen
Webinhalten
• Im Internet sind folgenden Auflösungen gebräuchlich:
–
–
–
–
640 x 480 (VGA),
512 x 384,
320 x 240,
160 x 120
Bandbreite / Bitrate (bandwith)
• Gibt an, welche Datenmenge (MBit pro Sekunde
bzw. MHz) maximal über einen bestimmten
Datenweg in einer Zeiteinheit transportiert werden
kann.
• Ein Großteil des Datenverkehrs wird heute in im
Allgemeinen mit Raten von 512 KBit/s (64 B/s) bis zu
6 MBit/s an den Benutzer übertragen.
• Beispiele:
– 56 K Modem Æ 56 KBit/s
– UMTS Æ 384 KBit/s.
Byte
Beschränkte Bandbreite
• Video ist ein datenintensives Format. Schon kurze
Videoclips machen die Übertragung von mehreren
MB erforderlich.
• Das Wachstum der Bandbreiten hat diese technische
Beschränkung nahezu aufgehoben. Immer mehr
Internet-Benutzer verfügen über die Bandbreite, die
zur Anzeige von Videodaten über das Internet
erforderlich ist.
• Die Dateigröße bleibt weiterhin für viele Besucher
von Websites ein Problem.
Berechnung von Datenrate
Datenrate =
Videobreite x Videohöhe x Framerate (Bit/Sek)
Kompressionsfaktor
• Beispiel (Serenson: 2.5:1 Kompression)
320 x 240 x 25 / 2.5 = 768.000 Bits/Sek = 768 kBit
• Reduzierte Framerate:
320 x 240 x 12 / 2.5 = 369 kBit
• Reduzierte Breite und Höhe:
160 x 120 x 25 / 2.5 = 192 kBit
Keyframes
• Keyframes sind unkomprimierte Schlüsselframes
eines Videos. Mit Hilfe von von Keyframes werden die
dazwischenligenden Bilder berechnet. Je höher die
Datenrate sein soll, desto mehr Keyframes werden
benötigt.
• Flash schlägt Keyframes alle 4 Sekunden vor.
Schlüsselbildrate
• Keyframe-Interval (s) x Framerate (fps)
1s x 12 fps = 1 Keyframe alle 12 Frames
2s x 15 fps = 1 Keyframe alle 30 Frames
4s x 25 fps = 1 Keyframe alle 100 Frames
5s x 30 fps = 1 Keyframe alle 150 Frames
• Flash schlägt Keyframes alle 4 Sekunden vor.
• Eine geringere Schlüsselbildrate (z.B. ein
Schlüsselbild alle 6 Sekunden) liefert ein
verschwommeneres Bild, reduziert aber gleichzeitig
die erforderliche Bandbreite.
Videoimport in Flash
Bei Videoclips mit viel Bewegung muss die Schlüsselbildrate, die Bildrate
und die Datenrate erhöht werden (in der Datei müssen mehr
unkomprimierte Schlüsselbilder kodiert werden).
Streaming
Streaming Media / Streaming Audio
• Streaming ist eine Echtzeit-Übertragung von Medien,
von einem Server zu einem / vielen Clients ohne
vorheriges Laden der gesamten Daten.
• Während beim „herkömmlichen "Download" und
beim "progressiven Download" (Beginn der
Wiedergabe, bevor die Datei komplett heruntergeladen
wurde; hinterlässt eine Kopie des Inhalts)
Mediendateien auf der Festplatte des Anwenders
gespeichert werden, wird der Medieninhalt beim
Empfangen von Streaming-Dateien nicht gespeichert.
Das Prinzip des Streaming
WEB-SERVER
leitet die Anforderung an den Medienserver
MEDIEN-SERVER
streamt die Mediendatei zurück auf den
Computer des Anmwenders
CLIENT (Player)
dekodiert die Mediendatei und spielt sie ab
Streaming-Architektur
Kompatible
Codecs
PLAYER
ENCODER
Kompatible
Formate
Kompatible
Protokolle
SERVER
Übertragungsprotokolle - HTTP
• Die einfachste Variante, Video über das Internet zu
übertragen, ist HTTP-Streaming. Dabei werden die
Clips mit den HTML-Seiten per Browser übermittelt.
• Die Daten liegen auf einem normalen Webserver
Grenzen des HTTP
• HTTP-Protokoll (Hypertext Transfer/Transmission
Protocol) ist für die Übertragung größerer
Videodaten an viele Clients nicht geeignet
• Ein HTTP-Webserver überträgt die Daten
paketenweise von Anfang bis Ende ohne Pausen.
• Der Client muss den Empfang jedes Datenpatetes
bestätigen. Andernfalls werden die Daten erneut
gesendet (Æ Datenstau/Stottern). Vor- und
Zurückspulen ist nicht möglich.
Media-Protokolle
Real Time Protokoll - RTP
• Bei großen Videomengen wird ein spezieller
Streaming-Server, etwa der Real Server oder der
QuickTime Streaming Server verwendet. Beide
benutzen das auf dem sog. User Datagram Protokoll
(UDP) beasierende RTP-Protokoll (Real-Time
Protokoll).
• Das RTP-Protokoll verzichtet auf eine
"Empfangsbestätigung" des Clients. Stattdessen
versieht er die Pakete mit einem Zeitstempel, so dass
sie in der chronologisch richtigen Folge
wiedergegeben werden.
Fehlerbehandlung
RTP/RTSP
• Das RTP-Protokoll erkennt doppelt gesendete oder
fehlende Pakete. Er ignoriert sie bzw. sendet sie
erneut.
• RTP-Protokoll braucht zur Steuerung des
Datenstroms ein RTSP-Protokoll (Real-Time
Streaming Protokoll). Damit lassen sich auch LiveStreams realisieren.
Real-Time Streaming Protocol (RTSP)
• Das RTSP Protokoll kontrolliert die
Echtzeitübertragung von Mediendaten auf der
Anwendungsschicht und unterstützt hierbei eine zwei
Wege Kommunikation, die es ermöglicht,
Datenströme zu
– pausieren,
– vorzuspulen oder
– zurückzuspulen (bei On-Demand Übertragung).
Live-Streams
• Bei Live-Streams werden die Daten vom Encoder live
zum Server übertragen. Dort werden sie kurz
zwiachengespeichert und danach direkt an den
jeweiligen Client weitergeleitet.
Live Stream Æ Encoding Æ
Übertragung zum Server Æ Zwischenspeicherung Æ
Weiterleitung an Client
Live-Streams
Microsoft Media Server Protocol (MMS)
• Microsoft Streaming Service arbeitet mit dem
eigenen MMS-Format (Microsoft Media Server), das
im Prinzip dem RTP/RTSP ziemlich ähnlich ist.
• MMS ist ausgelegt für Punkt zu Punkt Verbindungen
zwischen Server und Client (Unicast).
• Eine Instanz von Windows Media Player findet nach
der über MMS hergestelltne Verbindung dynamisch
das effizienteste Verfahren zum Übertragen von
Audio- oder Videoinhalten von einem Windows Media
Server ("protocol rollover": UPD, TCP, HTTP)
Microsoft MMS-Protokoll / Streaming-Vorgang
Datenquelle
ASF (Advanced System Format)
MS-Encoder
ASF
MS Media Server
MMS-Protokoll
Datenspeicher
Internet
MMS-Protokoll
CLIENT
CLIENT
CLIENT
Streaming - Vor- und Nachteile
• Vorteile:
–
–
–
–
keine Wartezeit während der Dateiübertragung
sofortiges Reinhören ("tune in")
Live-Übertragungen
kein Speicherplatz auf dem Client benötigt
• Nachteile:
– durch verfügbare Bandbreite begrenzt deshalb
– oft noch schlechte Qualität
– spezielle Server und Software erforderlich
Eingebettetes Video in SWF-Dateien
(Flash ab Version 5)
• Sinnvoller Einsatz:
– Der Film dauert nur wenige Sekunden
– Das Video und der Flash-Inhalt sollten in einer Datei
gekapseln werden
– Der Inhalt des Videos ändert sich voraussichtlich nicht
bzw. nur selten
– Die Qualität des Videos spielt keine wesentliche Rolle
(der beim Importieren in Flash zum Kodieren des
Videos verwendete Codec ist von geringerer Qualität)
Eingebettetes Video in SWF-Dateien
(Flash ab Version 5)
• Nachteile:
– Ändert sich der Inhalt so muss eine neue SWF-Datei
veröffentlicht werden
– Die gesamte Videodatei muss vom Webserver
heruntergeladen werden, bevor die Wiedergabe
gestartet werden kann
– Zur Laufzeit muss die gesamte Videodatei in den
lokalen Arbeitsspeicher des wiedergebenden Systems
passen
– Mögliche Audiosynchronisierungsprobleme nach ca.
120 Sekunden kontinuierlicher Videowiedergabe
– Die Dateilänge ist auf ein Maximum von 16.000
Einzelbildern beschränkt (~10 Min. Video bei 25fps)
Vorteile progressiver FLV-Dateien gegenüber
eingebetteten Videos
• Im Rahmen des Authoring muss nur die SWF-Schnittstelle
veröffentlicht werden, um den Flash-Inhalt ganz oder teilweise
anzuzeigen (beschleinigter Vorschau)
• Die Videowiedergabe beginnt sobald das erste Segment
heruntergeladen wurde.
• Zur Laufzeit werden Videodateien von der lokalen Festplatte
in die SWF-Datei geladen, ohne Beschränkung von Dateigröße
oder -dauer.
• Keine Probleme hinsichtlich der Audiosynchronisierung und
des Speichers.
• Die Bildrate der Videodatei kann von der Bildrate der SWFDatei abweichen. (Æ Flexibilität beim Einrichten von
Projekten)
Flash-Videostreams
• Besteht in der Streamübertragung von Video- und
Audiodateien durch einen Server, auf dem Flash
Communication Server ausgeführt wird.
• Bei der Streamübertragung öffnet jeder Client eine
permanente Verbindung zum Videoserver. Diese Methode
ermöglicht die Bereitstellung von Merkmalen wie
Bandbreitenerkennung, damit Videos in geeigneter Größe
übertragen werden, Dienstgütemesswerten, detaillierten
Nutzungsstatistiken sowie einer ganzen Reihe von Funktionen
zur Unterstützung der Interaktivität.
• Die umfassendste, konsistenteste und stabilste
Bereitstellungsmethode.
Flash-Video-Komponenten
• Flash Video Exporter
Plug-In für Anwendungen Dritter, mit dem Audio- und
Videodaten in das FLV-Dateiformat konvertiert werden
können.
• Flash MX 2004
ermöglicht die Bearbeitung von Flash Video-Daten für eine
Website.
• Flash MX Professional 2004 (eine erweiterte Version von Flash
MX 2004)
enthält mehr Videotools. Dazu zählen z. B. MediaKomponenten, mit deren Hilfe Benutzer externe FLVDateien
einfügen und Verbindungen zu Flash Communication ServerVideostreams herstellen können.
Flash-Video-Komponenten
• Flash Video Kit
enthält eine Flash Video-Erweiterung für Macromedia
Dreamweaver MX 2004, mit der man Flash Video
ohne das Authoring-Tool Flash schnell und einfach in
Websites integrieren können. Enthalten ist außerdem
die Anwendung Sorenson Squeeze, mit der alle
wichtigen Videodateiformate in das Format FLV
konvertiert werden können.
• Flash Player
spielt Flash Video- und andere Flash-Inhalte ab.
Flash-Video-Komponenten
• Flash Communication Server
ein Macromedia-Server für Datenstreams (Audio und Video),
die an Flash Player 6 oder spätere Versionen gesendet werden
können.
• Flash Video Streaming Service, Flash Video Streaming Service
Live und Flash Video Streaming Service Lite
kostengünstige Dienste von Drittanbietern, die auf
Abonnementbasis (monatlich) bereitgestellt werden und Flash
Communication Server-Komponenten für die
Streamübertragung von Videodaten mit hoher Leistung und
Skalierbarkeit bieten. Wenn man keinen eigenen Flash
Communication Server einrichten kann oder will, kann man
einen solchen Dienst einsetzen.
ENDE