"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 (MP@HL) 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 (MP@ML) <=15 Mbits/s <=4 Mbits/s (MP@LL) <=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