Medienströme - Kleines Begriffelexikon
Das folgende Begriffslexikon beleuchtet nur einen kleinen Bereich. Es legt keinen Wert auf Vollständigkeit. Möglicherweise sind auch jede Menge Fehler enthalten. Die könnt ihr mir gern mittleilen (Kontakt).
Was ihr hier nicht findet, das findet ihr höchstwahrscheinlich dort:
de.wikipedia.org
www.itwissen.info
www.mediendaten.de
In Anbetracht dessen, dass ich die Klausur Medien und Medienströme nicht im ersten Anlauf bestanden habe, möchte ich noch einmal darauf hinweisen, dass die folgenden Texte inhaltlich nicht richtig sein müssen.
Inhalt
Audiotechniken, -formate und -schnittsysteme
Bildformate und -kompressionsverfahren
3D-Grafikformate
QuickTime VR - Technik, Formate, Methodik
Videoformate und Videokompression
Komplexe Medienobjekte
Audiotechniken, -formate und -schnittsysteme
Schall
Es gibt vier verschiedene Arten von Schall: Geräusche, Klang, Ton und Knall. Der Schall breitet sich als Longitudinalwelle aus, das heißt dass die Moleküle des Mediums in Ausbreitungsrichtung schwingen. Damit kommt es in dem Medium zu Druck- und Dichteschwankungen, die sich in alle Richtungen von der Schallquelle fortpflanzen. Die Ausbreitungsgeschwindigkeit (Schallgeschwindigkeit) in Luft beträgt 343 m/s. In drei Sekunden legt der Schall also einen Kilometer zurück. (Das ist übrigens interessant bei Gewittern: Folgt auf einen Blitz nach drei Sekunden der Donner, so ist das Gewitter einen Kilometer entfernt.)
Man teilt Schall auch in Nutzschall und Störschall (Lärm) ein.
Schalldruck
Durch die Molekülbewegungen (Schall) kommt es zu Druckschwankungen im Medium. Diese Druckschwankungen bezeichnet man als Schalldruck. Der Schalldruck ist ein Wechseldruck, der den statischen Druck des umgebenden Mediums überlagert.
Also: Schalldruck = Gesamtdruck - Normaldruck
Die Druckschwankungen bringen feine Härchen im Trommelfell in Bewegung und werden so in Nervensignale umgesetzt.
Die übliche Einheit des Drucks ist Pascal (Pa).
Frequenzgang
Der Frequenzgang ist der Vergleich zwischen Eingangs- und Ausgangsgröße eines elektrischen Gerätes in Abhängigkeit von der Frequenz. Häufig betrachtet man den Amplitudengang. Dabei wird am Eingang des Geräts ein Sinussignal angelegt, dessen Frequenz kontinuierlich verändert wird. Gemessen wird dann die Amplitude am Eingang und am Ausgang. Der Amplitudengang ist der Quotient aus der Amplitude des Eingangssignals und der Amplitude des Ausgangssignals.
Beispiel: Bei einem Tiefpassfilter werden hohe Frequenzen unterdrückt. Bei niedriger Eingangsfrequenz bleibt die Amplitude etwa gleich. Der Quotient ist klein. Bei hoher Eingagnsfrequenz ist die Amplitude des Ausgangssignals deutlich kleiner als die des Eingangssignals. Der Quotient ist groß.
Genauso kann man auch den Phasengang eines Gerätes ermitteln. Der Frequenzgang ist somit eine Beschreibung für den Eigenklang eines Systems.
Einheit: Dezibel (dB)
Klirrfaktor
Der Klirrfaktor ist ein Maß für die unerwünschte Verzerrung eines Signals durch elektronische Bauteile. Das Klirren entsteht insbesondere in Halbleiterbauelementen, deren Widerstand sich mit der Temperatur ändert.
Der Klirrfaktor ist das Verhältnis zwischen Harmonischen (Oberschwingungen) und Gesamtsignal. Harmonische sind ganzzahlige Vielfache der Grundschwingung. Sie liegen jeweils in Oktavenabständen auseinander.
Einheit: Prozent (%)
Fourier-Analyse
Bei der Fourier-Analyse wird ein beliebiges Signal in eine unendliche Summe aus Sinus- und Cosinussignalen zerlegt oder mit einer endlichen Summe angenähert.
Dabei wird für die einzelnen Sinus- und Cosinussignale jeweils eine Frequenz angegeben und ein Faktor, der die Amplitude bestimmt.
Da das Signal nach der Transformation nicht mehr zeitabhängig ist, sondern frequenzabhängig, spricht man von einer Transformation vom Zeit- in den Frequenzraum.
ADSR-Modell
ADSR ist ein Modell für die Erzeugung von Tönen in Musikinstrumenten. Es wird in Synthesizern eingesetzt.
- A = Attack (Anschlag der Taste): Ton steigt bis auf sein Maximum an. Die Frequenzen sind noch etwas chaotisch.
- D = Decay (Abklingen): Die Lautstärke sinkt etwas ab. Die Frequenzen ordnen sich und der Ton klingt harmonisch.
- S = Sustain (Erhalten des Tones): Die Lautstärke des Tons bleibt konstant, solange er gehalten wird. Der Ton klingt sauber.
- R = Release (Freigabe/Nachklang): Die Taste wird losgelassen, der Ton schwillt langsam ab.
Attack und Release sind dabei entscheident für den natürlichen Klang des Tons.
Digitalisierung
Die Digitalisierung eines Analogen Signals gliedert sich in zeitliche Diskretisierung und Wert-Diskretisierung.
Bei der zeitlichen Diskretisierung (Sampling) wird das zeitkontinuierliche Signal abgetastet. Die Zeitspanne zwischen den Abtastpunkten wird durch die Abtastfrequenz gegeben. Damit das Signal eindeutig rekonstruiert werden kann, muss diese mehr als doppelt so groß sein wie die höchste Frequenz des Signals (Grenzfrequenz), welches abgetastet werden soll. (Nyquist-Shannon-Abtasttheorem) Frequenzen die über der halben Abtastfrequenz liegen, z.B. Störsignale, müssen vorher durch einen Tiefpassfilter entfernt werden, um unangenehme Artefakte zu vermeiden.
Die Wert-Diskretisierung bezeichnet man als Quantisierung. Bei linearer Quantisierung sind die Quantisierungsstufen (die möglichen Werte, die das Signal annehmen kann) gleichmäßig verteilt. Für die Audioquantisierung von Sprache hat sich dagegen die logarithmische Quantisierung als nützlich erwiesen, weil das Ohr in den niedrigen Frequenzbereichen besser hört.
Zur Binärcodierung des Signals kann dann zum Beispiel Puls Code Modulation (PCM) oder Adaptive Differential Pulse Code Modulation eingesetzt werden.
Pulse Code Modulation (PCM)
Mit PCM kann man ein zeit- und wertdiskretes Signal binär codieren. Dabei wird aus jedem Amplitudenwert ein Codewort erzeugt. Die Länge n des Codewortes begrenzt damit auch die Anzahl der Quantisierungsstufen auf 2n.
Varianten der PCM sind:
- Differential Pulse Code Modulation (DPCM): Codiert wird nur die Differenz zwischen dem quantisierten Wert und einem Schätzwert. Der Schätzwert ergibt sich aus den vorhergehenden Werten. Beim Dekodieren wird der Schätzwert aus den zuvor dekodierten Werten berechnet und die kodierte Differenz addiert.
- Adaptive Differential Pulse Code Modulation (ADPCM): Codiert wird nur die Differenz zum vorhergehenden Wert. Dabei wird die Größe der Quantisierungsstufen in Abständen an das Signal angepasst. Kleinere Wertebereiche (leise Töne) können dadurch genauer Quantisiert werden, als große (laute Töne).
Aliasing (Audiosignale)
Aliasing entsteht durch Unterabtastung bei der Digitalisierung eines analogen Signals. Es handelt sich dabei um Scheinfrequenzen oder Störgeräusche.
Dithering (Audiosignale)
Dithering ist ein Verfahren zur Reduzierung von Quantisierungsfehlern. Dabei wird dem Signal bei der Quantisierung zufällig ein künstliches Rauschen hinzugefügt um dem Quantisierungsrauschen entgegen zu wirken.
Oversampling
Überabtastung wird zur Vermeidung von Störungen (Aliasing) eingesetzt. Bei Digital-Analog-Wandlung werden mittels Oversampling Werte zwischen zwei vorgegebenen Quantisierungsstufen interpoliert.
CD-Digital Audio (CD-DA)
Der Audio-CD-Standard ist im Red Book der sogenannten Rainbow Books beschrieben. Audio CDs dürfen damit das Compact-Disc-Logo tragen.
Eine Audio CD ist 700MB groß. Das Audiosignal wird mit 44,1kHz abgetastet und durch Puls Code Modulation (PCM) codiert. Das Audiomaterial liegt unkomprimiert vor. Die CD-DA enthält zwei Kanäle (Stereo) zu je 16Bit. Daraus ergibt sich eine Datenrate von
44.100Hz · 2 · 16bit = 1.411.200bit/s = 10,09MB/min
Die Bandbreite einer Audio-CD beträgt 5Hz bis 20kHz. Die Daten befinden sich in Sektoren, die wiederum in Frames untergliedert sind. Die Frames enthalten die Audiosamples und Fehlerkorrekturdaten.
Viele Musik-CDs entsprechen heute (insbesondere wegen nicht konformen Kopierschutzes) nicht mehr dem CD-DA Standard.
Linear Puls Code Modulation (LPCM)
Bei LPCM wird eine verlustfreie Kompression (2:1) angewendet. LPCM ist Standard für Audio-DVDs und kann auch bei Video-DVDs eingesetzt werden. Es unterstützt einen bis sechs Kanäle (bei DVD-Video sogar acht). Die Sampletiefe beträgt 12, 16, 20 oder 24Bit. Das entspricht zwischen 4096 und 16.777.216 Quantisierungsstufen. Es werden Abtastraten von 44,1kHz und 48kHz unterstüzt. Bei DVD-Audio werden auch die doppelte (88,2kHz und 96kHz) und die dreifache Abtastrate (176,4kHz und 192kHz) unterstützt.
Den einzelnen Kanälen können unterschiedliche Abtastraten und Sampletiefen zugeordnet werden.
Dolby Digital - Audio Coding 3 (AC3)
Dolby Digital findet Verwendung bei High Definition Television (HDTV), Digital Video Broadcasting (DVB), DVD-Video und vor allem beim digitalen Lichtton für Kinofilme.
Dolby Digital nutzt Audio Coding 3, welches ein PCM-codiertes Signal weiterverarbeiteit. Dabei werden wie bei MP3 psychoakustische Effekte und kanalübergreifende Ähnlichkeiten ausgenutzt.
Dolby Digital unterstützt fünf Tonkanäle und einen Tieffrequenzkanal (5.1 Sound): left-front, center, right-front, left-surround, right-surround und subwoofer
Die Abtastung des Eingangssignals erfolgt mit 32kHz, 44,1kHz oder 48kHz. Die Samplingtiefe liegt bei 16 bis 24Bit, also 65.536 bis 16.777.216 Quantisierungsstufen. Damit ergeben sich Datenraten zwischen 512 und 1.152 KBit/s
Ein globaler Bit Pool sorgt dafür, dass Bits dynamisch über mehrere Kanäle verteilt werden können. Dem Bit-Bedarf eines kritischen Kanals kann damit mehr Aufmerksamkeit geschenkt werden, als einem, der aktuell nur grobe Quantisierung fordert.
MPEG Audio
Bei MPEG wird für die Kodierung des Tons eine verlustbehaftete Kompression mit drei Qualitätsstufen angewendet:
- Layer 1 hat eine geringe Kompressionsrate von etwa 4:1 und einen ebenso geringen Codieraufwand. Es findet Anwendung bei Digital Compact Cassette (DCC).
- Layer 2 hat einen höheren Codieraufwand und liefert Kompressionsraten von 6:1 bis 8:1. Es findet beim digitalen Rundfunk (Digital Audio Broadcasting - DAB und Digital Video Bradcasting - DVB) Anwendung.
- Layer 3 ist mit Abstand das bekannteste Format: MP3. Es liefert bei hohem Codieraufwand hohe Kompressionsraten bis 12:1.
Der Datenstrom wird nach psychoakustischen Gesichtspunkten beschnitten. Es werden verdeckte Signale und Signale außerhalb des Hörbereichs entfernt. Die Tonspuren werden gemultiplext. Bei Zweikanalton wird die Differenz der beiden Stereospuren fast-fourier-transformiert. Die Quantisierung erfolgt nur mit so vielen Bits, dass das Quantisierungsrauschen gerade noch unterdrückt wird (variable Datenrate - 32 bis 912kbps). Die Frames werden dann Huffman-kodiert. Die Kodierung ist stark asymetrisch: Hoher Kodieraufwand, geringer Dekodieraufwand.
MPEG-1 unterstützt zwei Kanäle und Abtastraten von 32kHz, 44,1kHz und 48kHz. MPEG-2 unterstützt bis 5 Tonkanäle und einen Tieffrequenzkanal (5.1-Sound) und bietet auch die Möglichkeit mit halber Rate abzutasten (16kHz, 22,05kHz oder 24kHz).
Seit MPEG-2 ist auch Advanced Audio Coding (AAC) möglich. (Siehe MPEG-2)
Digital Theater Sound (DTS) (auch Digital Theater System)
Beim Digital Theatre Sound wird der Ton getrennt vom Film gespeichert. Im Kino enthält der Film eine optische Steuerspur zur Synchronisation mit der CD. DTS unterstützt 5.1-Sound. Digital Theater Sound Extended Surround (DTS ES) unterstützt sogar einen zusätzlichen back-surround Kanal (6.1).
Es kann mit 48kHz oder 96kHz abgetastet werden. Die Quantisierung erfolgt mit bis zu 24Bit. Typische Datenraten bei DVD-Video sind deshalb mit 768kbps bis 1,536Mbps deutlich höher als bei MPEG. Dafür ist auch die Klangqualität höher. Die Kodierung erfolgt mit verlustbehafteter Puls Code Modulation.
Sony Dynamic Digital Sound (SDDS)
SDDS findet beim Kinofilm Anwendung. Das Signal liegt optisch codiert auf dem Rand des Filmstreifens vor. Zusätzlich zu den fünf Standardkanälen werden noch die Boxen vorn halblinks und halbrechts versorgt (7.1-Sound). Die Datenreduktion erfolgt mit Hilfe des ATRAC-Verfahrens (Adaptive Transform Acoustic Coding) unter Ausnutzung psychoakustischer Effekte. Die Kodierung erfolgt ausschließlich durch Hardwere. Es werden Datenraten bis 1,28Mbps erreicht.
Waveform Audio File Format (WAV)
Wave ist ein Container für Audio-Daten, der von Microsoft und IBM entwickelt wurde. Er kann mehrere Datenströme im RIFF-Format (Resource Interchange File Format) enthalten. RIFF ist ein verschachteltes Medienformat, das mehrere Formate, wie Videos, Audios, Bitmaps und Texte enthalten kann.
Wave enthält ursprünglich vor allem unkomprimierte PCM-Samples. Mittlerweile enthält es aber teilweise auch verlustbehaftet komprimierte Formate wie MP3.
Aufbau einer Wave-Datei:
- RIFF-Header mit Signatur (little/big endian), Dateigröße und RIFF-Typ (in diesem Fall Wave)
- FMT-Chunks (Format-Chunks beschreiben das Sample-Format) mit, Format-Typ (Mono/Stereo), Anzahl der Kanäle, Abtastrate, Datenrate
- Daten-Chunks mit Format-Typ (Mono/Stereo) und Daten
Audio Interchange File Format (AIFF)
AIFF ist wie Wave ein Container für Audio-Daten. AIFF wurde von Apple entwickelt. Es erlaubt ausschließlich die Speicherung PCM-kodierter Daten. Es existiert auch eine Erweiterung zur Speicherung komprimierter Audio-Daten, AIFF-C.
Aufbau einer AIFF-Datei:
- AIFF-Header mit Signatur, Dateigröße und IFF-Typ (hier AIFF)
- COMM-Chunks (Common-Chunks) mit Anzahl der Kanäle, Anzahl der Frames, Größe der Frames und Abtastrate.
- SNDD-Chunks (Sound Data Chunk) mit Offset (Beginn des ersten Frames), Blockgröße des ersten Frames und Daten
Außerdem gibt es noch Marker-Chunks, die auf eine bestimmte Stelle im Datenstrom verweisen (z.B. zur Wiedergabe von Schleifen), Comment-Chunks und Versions-Chunks.
Klangsynthese
Zur Klangsynthese gibt es verschiedene Verfahren. Dabei entstehen die Töne immer durch Oszillation, Filtern oder Mischen.
Synthesizer nutzen Oszillatoren. Der Pegelverlauf der Signale wird mit Filtern und Verstärkern nach dem ADSR-Modell variiert. Dieses Verfahren entspricht der Subtraktiven Synthese, bei der Oszillatoren Grundwellen erzeugen, deren Spektrum durch Filter verändert wird.
Bei der Additiven Synthese werden harmonische Schwingungen überlagert. Damit nutzt man die Erkenntnisse aus der Fourier-Analyse, dass man jedes Signal durch Addition harmonischer Schwingungen nachbilden kann.
Weitere Verfahren sind die FM-Synthese (Frequenzmodulation), Sampling-Synthese (im Studio aufgenommene Samples werden in Lautstärke, Tonhöhe und Filterung variiert), Wavetable-Synthese (es werden gespeicherte Klänge von Instrumenten genutzt), Granularsynthese (fügt Wavetable-Synthese dynamische Änderungen hinzu) und Acoustic Physical Modeling (Klangverhalten von Instrumenten wird durch Differentialgleichungen modelliert).
Musical Instrument Digital Interface (MIDI)
MIDI ist eine serielle unidirektionale Schnittstelle für digital steuerbare Musikinstrumente. Das heißt, es gibt einen Eingang (MIDI-IN) und einen Ausgang (MIDI-OUT), die Daten nacheinander übertragen können.
Das MIDI-Protokoll enthält Befehle, welcher Ton zu welcher Zeit und von welchem Instrument gespielt werden soll. Die Zeitangaben sind dabei relativ zum vorhergehenden Ton (Delta Time Value). Das Protokoll besteht aus einem Statusbyte und bis zu zwei Datenbytes. Das Statusbyte enthält die Betriebsart, und die Steuerung. Das Datenbyte enthält den Befehl.
Beispiele für MIDI-Befehle sind: 78h (All Sound Off) und 7Eh (Mono Mode)
MIDI-Instrumente (z.B. Synthesizer) können parallel oder in Reihe geschalten werden. Eine größere Reihenschaltung kann aber zu Zeitverzögerung führen und ist nicht zu empfehlen.
Extended General MIDI (XG) stellt weitere Instrumente und Effekte zur Verfügung.
Head Related Transfer Functions (HRTF)
... oder einfach Ohrsignal. Es geht darauf ein, dass je nach Richtung der Schallquelle Lautstärke, Phase und Ankunftszeit des Signals an beiden Ohren verschieden sind. Zur 3D-Klangsimulation für Kopfhörer werden deshalb bei der Aufnahme Kunstköpfe eingesetzt, in deren Gehörgängen sich die Mikrofone befinden. Vom Hörer kann aber im allgemeinen erkannt werden, dass die Form des Kunstkopfes von der seines eigenen Kopfes abweicht.
Raytracing oder Ray Tracing
Ist ein Algorithmus zur Verdeckungsberechnung von Strahlen. Dabei wird der Strahlenverlauf in einem Raum verfolgt. In der Audiotechnik dient Ray Tracing der Berechnung von Raumklang. Dabei müssen die Materialeigenschaften der jeweiligen Körper und die Dämpfungen durch die Luft beachtet werden.
Im Zusammenhang damit wird auch die Radiosität (Radiosity) betrachtet. Es ist die Eigenschaft eines Materials Strahlen, die es nicht absorbiert hat zu reflektieren. (Energieerhaltungssatz)
Die selbe Technik wird in der 3D-Modellierung zur Berechnung der Beleuchtung eingesetzt. Siehe Shading
Image Source Verfahren (ISV)
Beim Image Source Verfahren wird Raumklang erzeugt, indem die Reflektion an Gegenständen durch virtuelle Signalquellen simuliert wird. Das geschieht bis zu einer beliebeigen Tiefe.
Beam Tracing Verfahren (BTV)
Das Beam Tracing Verfahren ist dem Ray Tracing sehr ähnlich, nur dass hier nicht einzelne Strahlen, sondern ganze Strahlungskegel betrachtet werden. Wenn ein Kegel auf ein Objekt trifft entstehen neue Kegel. Das kann als Baum (Beamtree) dargestellt werden. Beam Tracing hat einen deutlich geringeren Rechenaufwand als das Image Source Verfahren (ISV).
Realitätsnaher Raumkang
Realistische 3D-Audio Sequenzen erzeugt man unter Beachtung folgender Punkte:
- Dopplereffekt: Frequenzverschiebung durch Bewegung von Schallquellen zum oder vom Betrachter.
- Dämpfung: Die Intensität des Schalls nimmt mit wachsender Entfernung durch Dämpfung der Luft ab. (etwa um 6dB bei Verdopplung der Entfernung)
- Windeffekte: Wind ändert die Geschwindigkeit des Schalls. Die Schallkugel verschiebt sich in Windrichtung.
- Echo: Schall wird reflektiert und aus anderer Richtung wahrgenommen
- Zeitverzögerung: Bei Audio in Verbindung mit Video ist zu Beachten, dass sich Licht schneller Ausbreitet als Schall, sodass es bei großen Entfernungen zu einer Zeitverzögerung kommt.
- Größe von Soundquellen: Reale Soundquellen sind nicht Punktförmig. Bei nahen Soundquellen sollten deshalb mehrere Punktquellen auf einer Körperoberfläche angeordnet werden.
- Stochastische Hintergrundgeräusche: z.B. Wind, Stimmen, Verkehrslärm
Bei nahen Soundquellen sollte auch die Head Related Transfer Function (HRTF) beachtet werden.
Audio Subsysteme
Audio Subsysteme sind Audio Schnittstellen, sowohl Hardwareschnittstellen, wie Soundkarten, als auch Softwareschnittstellen. Für diese hat die Interactive Audio Special Interest Group (IASIG) einen speziellen Anforderungskatalog I3D für Raumklang entworfen:
- Level 1 beinhaltet die Forderung nach acht gleichzeitigen 3D-Audiostreams mit mehr als 22kHz Abtastrate und 16Bit Quantisierung, die in Echtzeit decodiert und ohne hörbare Verzögerung wiedergegeben werden können. Es wird die Position von Hörer und Schallquelle berücksichtigt.
- Level 2 fordert mindestens 16 gleichzeitige 3D-Audiostreams. Es muss eine aufwendige Hallberechnung stattfinden, die die Eigenschaften des umgebenden Raumes simuliert.
Reflektionen und Verdeckungen werden in die Berechnung des Halls einbezogen. Bei Verdeckung wird eine virtuelle Soundquelle für die erste Reflektion berechnet.
Alle Sound-Schnittstellen erfüllen heute mindestens Level 1. Damit ist es möglich Hardware-unabhängig realistischen 3D Sound zu erzeugen.
Psychoakustische Effekte
Psychoakustische Effekte werden bei vielen Kompressionsverfahren ausgenutzt.
Hörschwelle: Alle Töne unterhalb der Hörschwelle werden nicht wahrgenommen und brauchen deshalb auch nicht kodiert werden. Die Hörschwelle liegt bei 0 Phon. Bei einem 1kHz-Ton entspricht das etwa 1dB.
Maskierung/Verdeckung: Ein Ton kann durch einen anderen Ton maskiert werden. Ein lauter Ton überdeckt einen kurz vorausgehenden oder einen unmittelbar nachfolgenden leisen Ton (Rückwärts-/Vorwärtsmaskierung). Bei der Simultanverdeckung wird ein gleichzeitiger leiserer Ton durch eine lauteren Ton einer nahen Freuenz verdeckt.
Bei MPEG Layer 1 findet die Simultanverdeckung Anwendung, bei MPEG Layer 2 außerdem die temporäre Verdeckung (Rückwärts- und Vorwärtsmaskierung) und bei Layer 3 sind zusätzlich die Quantisierungsstufen an das Hörvermögen angepasst. Bei allen wird die Maskierung durch die Hörschwelle berücksichtigt.
MPEG1 - Layer 3 (MP3)
Nocheinmal der obligatorische Hinweis: MP3 steht NICHT für MPEG-3, denn es gibt kein MPEG-3.
Für die MP3-Kompression wird das Audio-Signal mit der modifizierten diskreten Cosinustransformation (MDCT) vom Zeitbereich in den Frequenzbereich transformiert. Das Frequenzspektrum wird dann in 32 Bänder und insgesamt 576 Subbänder aufgeteilt. Die Frequenzbänder werden so aufgeteilt, dass jedes Band gleichviel zur Wahrnehmung beiträgt. Dann wird auf jedes der Bänder eine Komprimierung nach psychoakustischen Gesichtspunktenangewendet (Psychoakustische Effekte). Anschließend findet eine Kodierung mit variabler Datenrate so dass gerade so wenig Bits wie möglich verwendet werden, ohne dass ein Quantisierungsrauschen hörbar wird, statt. Die Differenz der beiden Stereo-Kanäle (Joint Stereo) wird dann Huffman-kodiert.
Siehe auch: MPEG
Bildformate und -kompressionsverfahren
Bildaufbau
Ein Bild ist durch folgende Faktoren gekennzeichnet:
- Auflösung: Anzahl der Bildpunkte bezogen auf die physikalische Größe des Bildes (Pixel per Inch oder Dots per Inch)
- Rasterweite: Anzahl der Rasterzeilen (Punkte) pro Inch
- Farbwert: Jeder Bildpunkt hat einen Farbwert. Ein Farbwert ist ein Punkt im Farbraum des jeweiligen Farbmodells.
- Farbtiefe: Information pro Bildpunkt - Die Farbtiefe kann in mehrere Ebenen gegliedert sein (z.B. R, G, B oder Y, Cr, Cb. Diese Ebenen können eine unterschiedliche Auflösung haben. Dann teilen sich möglicherweise mehrere Bildpunkte eine Information.
- Bildebenen: Farbebenen (siehe Farbtiefe) oder Bearbeitungsebenen - auch diese können unterschiedliche Auflösungen haben. Bildformate haben im allgemeinen eine oder drei Farbebenen und eine oder mehrere Bearbeitungsebenen.
Farbmodelle
LCH: Lightness (Helligkeit), Chroma (Sättigung), Hue (Farbton) - Ähnelt dem HLS-Modell. Beim HLS-Modell sind als Grundfarben Rot, Grün und Blau definiert, beim LCH-Modell dagegen Rot, Grün, Blau und Gelb. Mehr über HLS: MINFix
L*a*b: MINFix (CIE)
RGB: MINFix (RGB)
CMY: MINFix (CMY(K))
ICC-Profil
Das ICC ist das Internationale Color Consortium. Ziel ist die Vereinheitlichung von Farbmanagementsystemen. Das ICC-Profil ist ein anwendungsneutraler Standard. Es beschreibt den Farbraum des Gerätes.
Die Erstellung von ICC-Profilen erfolgt bei Scannern durch das Einscannen einer genormten Testvorlage. Diese kann mit einem speziellen Programm abgeglichen werden. Beim Monitor stellt eine Software zur Profilerstellung RGB-Werte dar. Ein Monitormessgerät (Spektralphotometer) misst die Farben und berechnet daraus ein Korrekturprofil. Ein Problem dabei ist die Kontrast- und Helligkeitseinstellung am Monitor. Für einen Drucker wird das Profil erstellt, indem ein Muster von Farbfeldern ausgedruckt und vermessen wird.
Link: ICC
Gammakorrektur
Die Farbwiedergabe von Fernsehern, Bildsschirmen und Druckern, aber auch bei analogen Aufnahmegeräten ist nicht linear. Die lineare Erhöhung der Spannung führt zu einer etwa exponentiellen Erhöhung der Helligkeit. Hinzu kommt, dass das menschliche Auge Helligkeitsunterschiede logarithmisch wahrnimmt. Die Abweichung von der Linearität nennt man Gammawert.
Die Gammakorrektur ist die Anpassung der Grauwerte. Weiß- und Schwarzpunkt bleiben dabei unverändert. Die Grauwerte dazwischen werden so verschoben, dass eine nichtlineare Korrekturfunktion zwischen Spannung und dargestelltem Grauwert entsteht. Es gilt: neuer Helligkeitswert = alter Helligkeitswert(1/γ)
Link: MINFix
Farbmanagement
Ziel des Farbmanagements ist es die Konsistenz von Farben von der Eingabe (z.B. Scanner) über die Bearbeitung (z.B. Monitor) bis zur Ausgabe (z.B. Drucker) zu erhalten. Dies ist schwierig, da z.B. Monitore und Drucker verschiedene Farbräume (RGB bzw. CMYK) verwenden und einen unterschiedlichen Farbumfang (Gamut) haben.
Ein System für das Farbmanagement muss unter anderem die Ausgabe am Bildschirm und am Drucker in Einklang bringen und ein reproduzierbares Druckergebnis liefern.
Eine Lösung für Heimanwender ist bereits im Betriebssystem MS Windows integriert. Dies verwaltet die vom Gerätehersteller mitgelieferten ICC-Profile. Allerdings unterliegt diese Variante einer (herstellerbedingten) Ungenauigkeit.
Eine Komplettlösung bieten spezielle Softwaresysteme, die genormte Farbprofile und Gerätetreiber beinhalten.
Link: MINFix
Bearbeitungsebenen
Ein Bild kann aus mehreren Bearbeitungsebenen bestehen. Diese sind dann etwa wie Folien übereinander angeordnet. Sie ermöglichen es dem Benutzer Bildbereiche (Ebenen) zu bearbeiten, ohne andere Bildbereiche zu beeinflussen. Die Ebenen sind voneinander unabhängig und haben im Regelfall die gleiche Auflösung und Farbtiefe. Den Ebenen kann eine bestimmte Deckungskraft zugewiesen sein.
Alpha-Kanal
Der Alpha-Kanal eines Bildes beinhaltet die Tranzparenz eines jeden Bildpunktes (Transparenzmaske).
Histogramm
Ein Histogramm ist die grafische Darstellung für die Anzahl der Bildpunkte einer Helligkeitsstufe. Es liefert zu jedem Grauwert dessen relative Häufigkeit. Bei Mehrkanalbildern wird für jeden Kanal ein Histogramm angefertigt. Es repräsentiert die Helligkeitsverteilung für die einzelnen Bildebenen.
Ein bimodales Histogramm enthält zwei überwiegende Graubereiche. Einer repräsentiert den Hintergrund und der andere ein Objekt im Vordergrund.
Ein kumulatives Histogramm veranschaulicht die Helligkeitsverteilung als arithmetische Reihe. Das heißt der Funktionswert einer Helligkeitsstufe berechnet sich aus der Summe aller Pixelanzahlen der vorangegangenen Helligkeitsstufen und dieser Helligkeitsstufe. Anders gesagt berechnet sich der Wert einer Helligkeitsstufe aus dem Wert der Vorgängerstufe plus der Anzahl der Pixel der Helligkeitsstufe.
Ein Histogramm kann man für zahlreiche Bildkorrekturen verwenden: Gradationskurve, Tonwertspreizung, linearer Histogrammausgleich.
Java-Applet: FHTW Berlin
Gradationskurve
Die Gradiationskurve eines Bildes dient der Korrektur von Unter- oder Überbelichtung. Damit lassen sich die Kontrastwerte verbessern.
Tonwertspreizung
Die Tonwertspreizung ist die Erhöhung des Unterschiedes zwischen hellster und dunkelster Bildpartie. Dazu wir jeweils der hellste und dunkelste Punkt (Weiß- und Schwarzpunkt) festgelgt. Alle Punkt, die mindestens so hell sind wie der Weißpunkt werden weiß. Alle Punkte, die mindestens so dunkel sind wie der Schwarzpunkt werden schwarz. Die dazwischen liegenden Helligkeitsstufen werden auseinandergezogen. Damit wird der Kontrast im gewählten Intervall verbessert.
Tonwertspreizung sollte man einsetzen, wenn viele Grauwerte in einem Bild überhaupt nicht vorkommen.
Linearer Histogrammausgleich (Histogrammäqualisation oder Histogrammeinebnung)
Der Kontrast eines Bildes wird dann als gut empfunden, wenn alle Farbwerte annähernd mit gleicher Häufigkeit vorkommen. Beim linearen Histogrammausgleich werden die Helligkeitswerte eines Bildkanals etwa gleich verteilt. Häufige Helligkeitswerte werden auseinander gezogen und seltene werden gestaucht.
Zuerst muss das kumulative Histogramm der relativen Häufigkeiten der Helligkeitswerte berechnte werden. Danach wird jeder Histogrammwert mit dem maximalen Helligkeitswert multipliziert.
Java-Applet: Universität Tübingen
Bildformate
Hier gibt es eine ausführliche Übersicht: Wikipedia
Tagged Image File Format (TIFF)
TIFF ist ein Bildformat, das speziell für gescannte Rastergrafiken entwickelt wurde. In einer Datei können mehrere Bilder gespeichert werden. Die Kompression ist verlustfrei z.B. mit LZW oder Lauflängenkodierung und verlustbehaftet z.B. mit JPEG möglich. Neben den eigentlichen Bilddaten können auch Informationen über die Transparenz (Alphakanal) abgespeichert werden. Die Datei besteht aus folgenden Komponenten:
- Signatur
- IFD1 (Image File Directory): Enthält Informationen (Tags) über das erste Bild und einen Verweis auf dieses.
- IFD2
- ...
- IFDn
- 0: Ende der Datei
Eine TIFF-Datei kann maximal Daten bis zu 4GB enthalten.
Entropiekodierung
Unter Entropiekodierung versteht man die verlustfreie Kompression von Daten. Alle Verfahren basieren auf der Reduktion von Redundanz. Dabei wird jedem Quellenzeichen eine unterschiedlich lange Bitfolge zugeordnet. Die Bitfolge kann nie kleiner sein, als die Entropie (Informationsgehalt).
Bei der Lauflängenkodierung (Run Length Encoding, RLE) werden aufeinanderfolgende gleiche Zeichen (Lauf) zusammengefasst. Im Regelfall sieht das so aus: Folgen mehr als drei gleiche Zeichen aufeinander wird ihre Anzahl kodiert. Davor wird ein Marker gesetzt. Andernfalls werden die Quellenzeichen übernommen.
Beispiel: 0000010000111111011 wird zu M051M04M16011
Die Huffman-Kodierung beruht darauf, dass häufig auftretende Quellenzeichen mit einer kurzen Bitfolge und seltene Quellenzeichen mit einer langen Bitfolge kodiert werden. Die Huffman-Kodierung liefert immer das optimalste Ergebnis für eine verlustfreie Kompression. Die Quellzeichen werden nach ihrer relativen Häufigkeit sortiert. Die zwei Zeichen mit der geringsten Wahrscheinlichkeit werden jeweils zusammengefasst. So entsteht ein Baum, dessen Äste binär kodiert werden können.
Beispiel: AAAABCC wird zu 1111000101 (A=1, B=00, C=01)
Bei LZW (Lempel, Ziv, Welch) wird die Wiederholung von Zeichenfolgen ausgenutzt.
Erklärung am Beispiel: AAABABAAAB
- Alle Quellenzeichen werden in ein Wörterbuch geschrieben: 1-A 2-B
- Die Codierung wird durchgeführt, indem immer nach dem längsten schon im Wörterbuch enthaltenen Abschnitt gesucht wird: (Quelle > Wörterbuch > Code)
AAABABAAAB > 1-A 2-B > 1 - Der nächst längere Abschnitt wird dem Wörterbuch hinzugefügt
AAABABAAAB > 1-A 2-B 3-AA > 1 - usw.:
AAABABAAAB > 1-A 2-B 3-AA > 13
AAABABAAAB > 1-A 2-B 3-AA 4-AAB > 13
AAABABAAAB > 1-A 2-B 3-AA 4-AAB > 132
AAABABAAAB > 1-A 2-B 3-AA 4-AAB 5-BA > 132
AAABABAAAB > 1-A 2-B 3-AA 4-AAB 5-BA > 1321
AAABABAAAB > 1-A 2-B 3-AA 4-AAB 5-BA 6-AB > 1321
AAABABAAAB > 1-A 2-B 3-AA 4-AAB 5-BA 6-AB > 13215
AAABABAAAB > 1-A 2-B 3-AA 4-AAB 5-BA 6-AB 7-BAA > 13215
AAABABAAAB > 1-A 2-B 3-AA 4-AAB 5-BA 6-AB 7-BAA > 132154 - Es wird nur das Codewort übertragen, nicht das Wörterbuch.
Andere Verfahren zur Datenreduktion sind Quellenkodierung und hybride Kompressionsverfahren, welche aber im Gegensatz zur Entropiekodierung verlustbehaftet sind.
Joint Photographic Expert Group (JPEG)
JPEG eignet sich für natürliche Bilder (z.B. Fotos). Für Strichzeichnungen ist es ungeeignet und liefert deutliche Artefakte. JPEG speichert Bilder im YCbCr-Farbraum. Es werden also drei Ebenen gespeichert: Helligkeit, Unterschied zwischen Blau und Helligkeit und Unterschied zwischen Rot und Helligkeit. Dabei wird Chromasubsampling angewendet. Und zwar 4:2:2-Subsampling, das heißt, dass die beiden Farbebenen nur mit halber Auflösung gespeichert werden. Die Kompressionsrate kann bei JPEG bis zu 50:1 betragen. Die Kompression erfolgt in folgenden Schritten:
- Der erste Schritt ist meistens die Umrechnung vom RGB- in den YCbCr-Farbraum und das darauffolgende Chromasubsampling
- Jede Bildebene wird in 8x8 Pixel große Blöcke unterteilt. Bei Überlappung des Bildrandes werden dort die Farbwerte der am Rand liegenden Pixel angenommen.
- Die Farbwerte eines jeden Blockes werden in einem dreidimensionalen Koordinatensystem (Matrix) aufgetragen. Diese Funktion wird durch Summation von Cosinusfunktionen angenähert (Diskrete Cosinustransformation, DCT). Damit wird jeder Block verlustfrei in den Frequenzraum transformiert.
- Die Faktoren der Cosinusfunktionen werden in eine Matrix übertragen und durch Multiplikation mit einer Quantisierungsmatrix gewichtet und abgerundet. Dabei wird viel Wert auf die Genauigkeit des Gleichanteils und weniger Wert auf die hochfrequenten Teile gelegt. Für den Gleichanteil wird jeweils nur die Differenz zum Gleichanteil der Nachbarblöcke codiert (DPCM). Die Quantisierungsmatrix bestimmt damit die Kompressionsrate.
- Die Matrix wird durch einen Zick-Zack-Scan in einen Zeilenvektor ausgelesen. Das geschieht so, dass möglichst viele Nullen am Ende stehen. Bei Bildern mit scharfen Kanten treten hier nur sehr wenige Nullen auf.
- Es erfolgt eine Lauflängenkodierung. Nullen am Ende werden nicht mit kodiert.
- Das Ergebnis wird entropiekodiert (Huffman-Kodierung).
Typische Artefakte sind Blockbildung (wegen der 8x8 Pixel-Blöcke, die unabhängig voneinander kodiert werden), stufige Übergänge und Farbeffekte an Graukeilen.
JPEG kann auch verlustfrei komprimieren. Der Kompressionsfaktor liegt dann aber nur bei etwa 2:1.
Fraktale Kompression
Die fraktale Bildkompression beruht auf der Suche nach Ähnlichkeiten in einem Bild. Sie ist verlustbehaftet.
Dazu wird das Bild vollständig in sogenannte Range-Blöcke zerlegt. Sie müssen das gesamte Bild abdecken und dürfen sich nicht überlappen. Range-Blöcke sind in der Regel viereckig (meist Quadrate fester oder verschiedener Größe) oder dreieckig. Für jeden Range-Block wird ein Bereich im Bild gesucht, der ihm durch Intensität, Skalierung, Drehung, Helligkeits- oder Kontrastveränderung ähnlich ist. Einen solchen Block nennt man Domain-Block.
Domain-Blöcke können sich überlappen und in beliebigen Bildbereichen liegen. Sie müssen aber stets größer sein, als ihre Range-Blöcke.
In der Datei (z.B. FIF) werden nur die Transformationen (Fraktale) abgespeichert.
Zur Rekonstruktion des Bildes wird ein beliebiges anderes Bild (Seed Image) in gleicher Größe genommen und der gespeicherte Algorithmus darauf ausgeführt. Je öfter der Algorithmus ausgeführt wird, desto ähnlicher wird das Bild dem Original. Dies geht jedoch nur bis zu einer bestimmten Grenze. Dann wird das Bild nicht mehr genauer.
Wavelet Kompression
Ziel der Wavelet Kompression ist es die Kanten eines Bildes mittels spezieller Filter zu extrahieren. Bei der Diskreten Wavelet Transformation (DWT) werden die Farbebenen eines Bildes getrennt transformiert. Es wird keine Blockbildung, wie bei JPEG vorgenommen. Die Transformation in den Frequenzbereich erfolgt mittels spezieller Wavelets (Funktionen, deren Integral 0 ist).
Das Bild wird dann durch vertikale und horizontale Tief- und Hochpassfilterung in Teilbänder (Subbands) zerlegt. Dadurch entstehen vier Teilbilder, von denen das zweifach tiefpassgefilterte Teilbild wieder zerlegt wird. Zuvor wird es durch Subsampling auf die halbe Auflösung verkleinert.
Das Originalbild lässt sich aus den vier Teilbildern vollständig rekonstruieren. Am Ende werden die Koeffizienten entlang einer Peanokurve ausgelesen. Das führt dazu, dass ähnliche oder gleiche Koeffizienten hintereinander stehen. Danach werden sie quantisiert, lauflängenkodiert (RLC) und entropiekodiert (Huffman-Kodierung).
Der Bildaufbau kann nach wachsender Größe, steigender Qualität oder Regions of Interest (ROI) gegliedert werden.
Dieses Java-Applet demonstriert die Zerlegung eines Bildes in Teilbänder: ETH Zürich
Diesen Vorgang nennt man auch Multi-Skalen-Analyse (Multiresolution Analysis, MRA). Dabei befindet sich links oben jeweils das vertikal und horizontal tiefpassgefilterte Teilbild (TT), eine geglättete und verkleinerte Version des Originals. Die Aufteilung nach der ersten Iteration ist folgende:
-
TT HT
TH HH
TH enthält besonders die horizontalen Bildelemente, HT die vertikalen. HH enthält die restlichen Details.
Bildkompression
Kompressionsrate : geeignetes Verfahren
- < 5 : Wavelet
- 5 - 20 : JPEG
- > 20 : Fraktale Kompression
- > 70 : Wavelet
Mögliche Artefakte:
- JPEG: Blockbildung, stufige Übergänge, Farbeffekte an Graukeilen
- Wavelet: Unschärfe / Weichzeichnung
- Fraktale Kompression: unruhige Kanten, fehlerhafte Reproduktion an den Blockgrenzen
Joint Picture Expert Group 2000 (JPEG 2000)
JPEG 2000 ist eine Weiterentwicklung von JPEG. Die Bilder werden mit Wavelet-Kompression gespeichert. JPEG 2000 unterstützt außerdem Regions of Interest (ROI) die mit höherer Qualität komprimiert werden können. Dazu ist es notwendig die Bilder in Bereiche aufzuteilen (Tiling). JPEG 2000 integriert mehrere Farbmodelle (z.B. RGB, CMYK, L*a*b).
Dadurch verbessern sich die Kompressionsraten und die Artefakte verringern sich.
3D-Grafikformate
Indizien der dritten Dimension
Es gibt direkte binokulare Indizien und indirekte monokulare Indizien.
Binokulare Indizien sind durch die zwei Augen gegeben (räumliches Sehen):
- Disparität: Beide Augen nehmen unterschiedliche Teilbilder wahr.
- Konvergenz: Beide Augen stehen je nach Raumtiefe in einem unterschiedlichen Winkel zueinander.
- Akkomodation: Die Augen müssen sich an die Raumtiefe anpassen, indem sie sich scharf stellen.
Monokulare statische Indizien sind die Perspektive und das Licht. Die Perspektive ist die Gesamtheit von Kantenbildung, Linear-Perspektive, Textur-Perspektive und Größen-Perspektive. Indizien für die dritte Dimension, die vom Licht ausgehen sind Objektverdeckung, Schattierung, Schattenwurf und Intensitätsgradient (depth cueing). Monokulare dynamische Indizien sind die Bewegungsparallaxe, der Verdeckungswechsel, das relative Größenwachstum (looming) und die Bewegungsunschärfe (motion blur).
Die Bewegungsparallaxe ist das Phänomen, dass sich nahe Objekte beim Vorbeifahren schneller bewegen als weit entfernte. Die scheinbare Bewegung der Objekte geht zum Horizont hin gegen Null.
Repräsentation von Objekten
Verfahren zur Repräsentation von 3D-Objekten:
- Oberflächenmodelle
- Volumenmodelle
- Partikelsysteme (Berücksichtigen Reibung, Gravitation, Luftwiderstand, ...)
- Implizite Oberflächen (Modellierung mit Hilfe von Feldfunktionen, Gegenstände sind abgerundet)
- Prozedurale Modelle (iterative Anwendung von Regeln, z.B. für Pflanzen)
Oberflächenmodelle
Oberflächenmodelle (surface modelling) dienen der 3D-Repräsentation. Es gibt
Siehe auch Volumenmodelle.
Polygonale Repräsentation
Die Repräsentation von 3D-Objekten durch Polygonnetze (polygon meshes) ist ein Näherungsverfahren. Ein Polygonnetz ist eine Menge von Ecken (vertices) und Kanten (edges). An einer Kante liegen maximal zwei Polygone. Da Polygone flach sind und nur gerade Kanten haben, können Rundungen und Wölbungen nur angenähert werden. Im einfachsten Fall werden die x-, y- und z-Koordinaten der Ecken jedes Polygons gespeichert. Für mehr Effizienz kann man die Tatsache ausnutzen, dass die meisten Kanten zwei Polygonen gemeinsam sind. Diese werden dann in sogenannten vertex, edge and polygon tables gespeichert.
Es gibt zwei Hauptformen für die Polygone: Dreiecke (triangle strips), bei denen n Vertexpunkte für n-2 Dreiecke reichen und Vierecke (quadrilateral meshes).
Die polygonale Repräsentation wird in der Computergrafik am häufigsten eingesetzt, weil sich beliebige Objekte einfach modellieren lassen. Die Polygonnetze lassen sich außerdem, abhängig von der Genauigketit der Objektannäherung, gut rendern. Bei guter Näherung von gewölbten Formen wird die Anzahl der Polygone allerdings unvertretbar hoch.
Bikubische Parameteroberflächen
Ein weiteres Oberflächenmodell zur Darstellung von 3D-Objekten sind bikubische Parameteroberflächen. Dabei werden die Objektoberflächen zuerst exakt durch mathematische Funktionen beschrieben. Erst beim Rendering erfolgt die Umwandlung in ein Polygonnetz beliebiger Genauigkeit (Tesselierung).
Die Objektoberfläche wird in sogenannte Patches zerlegt, welche jeweils getrennt durch meist kubische Funktionen beschrieben werden. Die Funktionen können mit dem Spline-Verfahren interpoliert werden. Diese Patches können dann aneinander gelegt werden. Die Kontinuität der Oberfläche kann durch stetige Ableitungen der der Funktionen gewährleistet werden. Dieses Verfahren wird vorallem im CAD-Bereich eingesetzt. Da es die nötigen Berechnungsgenauigkeiten besitzt.
Spline-Verfahren
Das Spline-Verfahren wird eingestzt, um mathematische Funktionen zur Beschreibung einer 3D-Oberfläche zu erzeugen. Im folgenden sind einige Verfahren dieser Art aufgelistet. Mit jedem folgenden Verfahren lässt sich auch das Vorangegangene nachbilden, indem man einfach einige Parameter konstant lässt.
- Bézier Patches: Kurven durch einen Anfangs und einen Endpunkt
- Basis-Splines (B-Splines): Definition einer Kurve über stückweise Kurvensegmente
- Periodic Uniform B-Splines: äquidistante Kontrollpunkte (gleiche Abstände zwischen den Kontrollpunkten)
- Rational B-Splines: Wichtung der Kontrollpunkte mittels eines Parameters
- β-Splines: mehr Freiheitsgrade (Parameter), mit denen sich der Abstand der Oberfläche zu den Kontrollpunkten und Assymetrien steuern lassen
- NURBS (non-uniformal rational B-Splines): leicht Transformation und Flexibilität, da lediglich die Kontrollpunkte neu berechnet werden müssen, nicht die ganzen Funktionen; aber speicherintensiv
Volumenmodelle
Volumenmodelle (solid modelling) dienen der Darstellung von Objekten im dreidimensionalen Raum. Es gibt unterschiedliche Verfahren:
Siehe auch Oberflächenmodelle
Instanzierung von Primitiven
Die Instanzierung von Primitiven (Constructive Solid Geometry) ist ein exaktes Verfahren zur Beschreibung von 3D-Objekten. Jedes Objekt wird dabei durch die logische Kombination elementarer Primitiven, wie Kugel, Zylinder, Würfel, Kegel, der unendlichen Ebene, dem unendlichen Zylinder und dem unendlichen Kegel zusammengestzt. Ein komplexes Objekt wird dann als Baum repräsentiert. Dabei sind die Blätter die Primitiven und die Knoten sind die booleschen Operationen, durch die das Oberobjekt aus den Unterobjekten entsteht.
Detailänderungen sind bei diesem Verfahren eher schwierig zu realisieren.
Zellzerlegung
Die Zellzerlegung (Space Subdivision Representation) ist ein Näherungsverfahren zur Repräsentation von 3D-Objekten. Dazu wird der gesamte Objektraum in Voxel (3D-Pixel) unterteilt. Die einzelnen Voxel werden dann den verschiedenen Objekten zugeordnet. Dabei kann der Objektraum entweder in acht gleich große Würfel unterteilt werden, die dann wieder in acht Würfel unterteilt werden können usw. (Octrees) oder der Raum wird jeweils halbiert. Das geschieht so, dass sich in jeder Hälfte gleich viele Objekte befinden (binary space partitioning).
Die Speicherung erfolgt in einer Baumhirarchie, was möglich ist, da die Oberräume immer wieder in Unterräume aufgespalten werden.
Mit diesem Verfahren können sehr viele aufwendige Objekte dargestellt werden. Es ist aber sehr rechenintensiv und es ergeben sich äußerst komplexe Datenstrukturen. Deshalb wird die Zellzerlegung meist nur als Hilfsrepräsentation, z.B. beim Ray Tracing (Strahlenverfolgung) genutzt.
Boundary Representation
Bei der B-Rep, wie die Boundary Representation auch genannt wird, stellt man einen Volumen-Körper durch die ihn begrenzenden Oberflächen dar. Die Menge der Oberflächen wird mit Informationen über ihre gegenseitige Lage abgespeichert. Es werden planare Oberflächen (facetted B-Rep), Oberflächen mit Kurven (elementary B-Rep) oder Spline-Oberflächen (advanced B-Rep) verwendet.
Sweep-Modelle
Sweep-Modelle repräsentieren Objekte mit Hilfe der Operationen extrude und revolve. Extrude bedeutet, dass ein Oberfläche beliebig oft hintereinander gesetzt wird (Translation). Bei revolve entsteht das Objekt durch Rotation einer Kurve.
Mapping-Verfahren
Um nicht jedes einzene Detail modellieren zu müssen wird jeder Oberfläche eine Textur zugewiesen (Mapping). Den gesamten Vorgang bezeichnet man auch als Texturing. Es gibt drei unterschiedliche Texturtypen: Rauhigkeit, Reliefbildung und Körperensemble (also mehrere gleichartige Objekte).
- Texture Mapping ist die Projektion von zweidimensionalen Strukturen auf die Oberfläche eines Körpers. Die Bildvorlagen können z.B. gescannt oder in einem Grafikprogramm erstellt werden.
- Environment Mapping ist die Nachbildung komplexer optischer Effekte durch Reflektion, Umgebung und Schatten. Dabei entfällt die exakte Zeitaufwändige Berechnung der Lichtverteilung (Ray Tracing).
- Bump-Mapping ist die Simulation von Oberflächen-Rauhigkeit. Dazu wird die Oberflächennormale leicht modifiziert, wodurch beim Rendern Strukturen entstehen.
- Displacement-Mapping ist das Verschieben der Vertices parallel zur Oberflächennormalen. Dadurch entsteht eine wirkliche Struktur in der Oberfläche, die auch bei der Betrachtung aus der Nähe nicht verloren geht.
- Procedural Mapping ist die mathematische Beschreibung eines 2D-Materials.
Beleuchtungsmodelle
Das Lichtmodell (Illumination) beschreibt die Lichtverteilung in einem 3D-Raum. Damit lässt sich die Lichtintensität an jedem beliebigen Punkt berechnen (Shading).
Das reflektierte Licht eines Objekts setzt sich zusammen aus der Summe des reflektierten Lichts der Lichtquellen und den Lichtanteilen anderer reflektierender Oberflächen.
Typische Lichtquellen sind:
- Punktlichtquelle (point light)
- Verteilte Lichtquelle (directional light)
- Kegelförmige Lichtquelle (spot light)
Außerdem enthält das Beleuchtungsmodell für eine 3D-Szene folgende Komponenten:
- Der ambiente Lichtanteil ist eine Annäherung an die globale diffuse Reflexion. Er ist also der Grundanteil an Licht, der auch dort vorhanden ist, wo keine Lichtquellen platziert sind und kein Licht von anderen Objekten reflektiert wird. Deshalb ist der ambiente Lichtanteil in der Regel konstant.
- Der diffuse Lichtanteil resultiert aus der Reflexion des Lichts an Objektoberflächen.
- Die spiegelnde Reflexion (specular) ist das Licht, welches unmittelbar von Lichtquellen stammend auf einer Oberfläche reflektiert wird. Abhängig vom Material ist dieser Anteil meist relativ gering.
Shading
Beim Rendern einer 3D-Szene werden Informationen über Lichtquellen, Hintergrundlicht, Reflexion an Oberflächen und der Position von Betrachter und Objekt verwendet, um ein 2D-Bild mit guter 3D-Wirkung zu generieren. Dazu gibt es verschiedene Verfahren zur Erzeugung der Beleuchtungsmodelle.
- Globale Beleuchtungsmodelle
- Beim Ray Tracing wird - wie in der Audiotechnik der Ton - der Strahlenverlauf des Lichts vom Betrachter zurückverfolgt. (siehe Ray Tracing - Audio). Das ist sehr realitätsnah, aber aufwendig. Es wird die direkte ideale Reflexion von Lichtstrahlen dargestellt.
- Bei Radiosity fasst man das Licht (oder beim 3D-Klang den Ton) als Energiebündel auf. Unter der Annahme, dass jedes Objekt Energie empfängt und abgibt (Energieerhaltungssatz) kann für jede Szene ein Energieverlauf berechnet werden. Dieses Modell dient der Berechnung der diffusen Reflexion.
- Lokale Beleuchtungsmodelle
- Beim Flat Shading wird einfach für jede Fläche in Abhängigkeit von der Lichtquelle eine Farbe berechnet. Damit ist das Verfahren sehr schnell aber ungenau und eignet sich zum Erstellen von Vorschaubildern.
- Beim Gouraud Shading wird für jeden Vertexpunkt eines Polygons aus dem Beleuchtungsmodell eine Farbe berechnet. Die Farben für die Punkte der Polygonfläche werden aus den Farben der Eckpunkte interpoliert. Dadurch wirken Wölbungen auch rund und nicht eckig.
- Beim Phong Shading wird die Farbe für jeden Punkt einzeln berechnet. Dadurch entsteht eine fotorealistische Abbildung.
Reflexionen oder Schatten müssen bei den lokalen Beleuchtungsmodellen durch Mappings erzeugt werden.
3D-Austauschformate
3D-Austauschformate bauen fast alle auf eine Szenenbeschreibungssprache (Scene Description Language) auf und haben eine einfache Syntax. Da die meisten Formate im ASCII-Code gespeichert werden, können sie mit einfachen Texteditoren bearbeitet werden. Typische Elemente dieser Sprachen sind: Verschiedene Objektrepräsentationen und geometrische Primitive, Spezifikationen von Normalen (Senkrechten auf eine Fläche), Koordinatentransformationen, Texturbeschreibungen, Gruppierungen und hierarchische Modelle, sowie Instanzierungskonstrukte.
Ein Beispiel für ein Austauschformat ist VRML (Virtual Reality Modeling Language). Die Dateien im ASCII-Format sind in einer Baumstruktur aufgebaut. Dadurch werden die Objekte hirarchisch geordnet und alle Operationen und Transformationen, die auf Objekte ausgeführt werden, werden auch auf ihre Unterobjekte ausgeführt.
Siehe 3D-Formate.
3D-API (Application Programming Interface)
3D-Programmierschnittstellen gestatten den Zugriff auf die Elemente einer Szene meist über einen hirarchisch angeordneten Szenengraphen. Dadurch sind Laufzeitänderungen beliebiger Parameter und komplexe Animationen möglich. Verschiedene Toolkits erlauben auch die Überführung in ein 3D-Austauschformat. Siehe 3D-Formate.
CAD-, CAM- und CAE-Formate
Die Formate für CAD (Computer Aided Design), CAM (Computer Aided Manufacturing) und CAE (Computer Aided Engineering) wurden für eine exakte Modellierung entwickelt. Der Szenenrealismus spielt hier in der Regel keine Rolle. Durch präzise Objektbeschreibungen können diese Formate meist auch in der Fertigung eingesetzt werden. Einige Formate sind:DXF (Drawing eXchange Format), IGES (Initial Graphics Exchange Specification), VDAIS (Vereinigung der Deutschen Automobilindustrie IGES Subset), SET (Standard d'Echange et de Transfert) usw. Die meisten genannten Formate sind genormt. Siehe 3D-Formate.
- Entwurf (CAD/CAM/CAE): Diese Formate dienen der reinen Objektmodellierung, mit möglichst hoher Präzision. Sie werden teilweise im Fertigungsprozess eingesetzt und müssen deshalb mit vielen Maschinen und anderen Programmen kompatibel sein.
- Modellierung und Animation: Formate die vor allem der Szenenmodellierung dienen, haben eine geringere Präzision und dafür bessere und reichere Ausdrucksmöglichkeiten für die Modellierung natürlicher Oberflächen.
- Echtzeitgrafik und Virtual Reality: Im Gegensatz zu anderen 3D-Formaten stehen hier Animation, Simulation und Interaktion im Vordergrund. Dazu sind besonders große Verarbeitungsgeschwindigkeiten nötig. Die erreicht man indem man Details weglässt (Level of Detail), Polygon, deren Rückseite dem Betrachter zugewandt ist, nicht anzeigt (Culling) und Polygonreduzierung.
- Internet: Dateiformate, die im Web zur Anwendung kommen, müssen geringe Dateigrößen haben und sollten Streaming-fähig sein. Deshalb sind sie verhältnismäßig unpräzise.
- Bildbasierte Pseudo-3D-Formate: Diese Formate bieten kleine Dateigrößen, aber sehr realistische Szenen, weil sie Foto-basiert sind. Allerdings sind sie ebenfalls sehr unpräzise.
Szenengraph
Szenengraphen dienen der Gliederung einer 3D-Szene. Sie bestehen aus einer Baumhirarchie. Der Wurzelknoten stellt die Gesamtszene dar. Jeder Knoten kann mehrere Unterbäume enthalten. Außerdem ist jeder Knoten von den übergeordneten Knoten abhängig. Dabei ist jedem Knoten eine Transformationsmatrix zugeordnet, die auch für alle darunter liegenden Knoten gilt. Jedes Teilobjekt hat dadurch relative Koordinaten zum übergeordneten Knoten (Objektkoordinaten) und absolute Koordinaten zum Wurzelknoten (Weltkoordinaten).
Nützlich ist es auch, dass man vor dem Rendern feststellen kann, ob ein Baum durch einen anderen verdeckt wird. Dann entfallen die gesamten Berechnungen für den verdeckten Baum.
Es gibt fünf verschiedene Knotenklassen:
- Shape (z.B. Cube, Sphere)
- Property (z.B. Drehung, Position)
- Group
- Light (z.B. Punktlichtquelle)
- Camera
Einige Szenengraph-basierte Toolkits sind Open Inventor, Java3D und OpenSG. Alle drei Systeme arbeiten auf Basis der OpenGL (Open Graphics Library).
Web3D - Virtual Reality im World Wide Web
Bei der Darstellung von 3D-Grafiken im Internet gibt es einige Probleme.
- Navigation und Interaktion sind meist nur mit der Maus möglich.
- Den meisten Benutzern stehen keine schnellen Grafikrechner zur Verfügung.
- Plattformunabhängige Systeme laufen im Browser nur als Plugin oder Applet.
- Java-Applets sind oft zu langsam.
- Zwischen Client und Server besteht häufig eine zu geringe Bandbreite. Eine Lösung sind Streaming- und Kompressions-Technologien. Außerdem können anfangs nicht benötigte Komponenten später nachgeladen werden (Modularisierung).
Im Regelfall wird ein Szenengraph als ASCII gespeichert und dann vom Browser in ein plattformabhängiges Format umgesetzt. Diese Daten werden dann auf dem lokalen Rechner, z.B. mittels OpenGL gerendert. Standards für Web3D-Formate sind VRML und X3D.
Streaming-Methoden (Web3D)
Ziele des Streamings sind eine verbesserte Bandbreitenausnutzung, eine sukzessive Verfeinerung der Szene (Interlacing) und die Erhöhung der Framerate für Animationen.
Streaming-Methoden sind:
- Nachladen von Szenenbestandteilen
- Stufenweise komprimierter Geometriestrom: Dabei wird die zuerst detailarme Grafik sukzessive verfeinert. Das geschieht zum Beispiel, indem man aus dem Dreiecksnetz unabhängige Eckpunkte entfernt und diese dann durch Eckpunktvorhersage und Verschiebungsvektoren wieder einfügt.
- Audio- und Videostreaming für 3D-Grafiken, die Audio- oder Videoströme enthalten.
- Zeitabhängige Updates der 3D-Szene: Durch den Server werden Teilszenen vollständig ersetzt.
VRML und X3D
Die VRML (Virtual Reality Modeling Language) ist ein Standard zur Erstellung von Szenengraphen für Web3D. VRML 2.0 (VRML97) kennt die folgenden Knotentypen:
- Geometrische Primitive: Box, Cone, Cylinder, ElevationGrid, Extrusion, IndexedFaceSet, IndexedLineSet, PointSet, Sphere, Text
- Erscheinungsbild-Knoten: Appearance, Material, MovieTexture, DirectionalLight, PointLight, SpotLight, ...
- Soundknoten: AudioClip, Sound, ...
- Gruppierungs- und Transformationsknoten: Transform, Switch, LOD (Level of Detail)
- Sensoren: ProximitySensor, VisibilitySensor, TouchSensor, CylinderSensor, PlaneSensor, SphereSensor, TimeSensor
- Interpolatoren: ColorInterpolator, CoordinateInterpolator, NormalInterpolator, OrientationInterpolator, PositionInterpolator, ScalarInterpolator
TimeSensoren, Interpolatoren und ROUTES dienen der Animation von 3D-Szenen. Jeder Knoten definiert Namen und Typen von Ereignissen, die er generieren oder empfangen kann. ROUTES sind die Ereignispfade zwischen Sender und Empfänger.
VRML wurde 2004 zu X3D (Extended 3D) weiterentwickelt. X3D nutzt das XML-Dateiformat.Das XML-Format bietet eine bessere Editierbarkeit, weil es universeller ist. Außerdem ist es besser lesbar. Das vom Web3D-Consortium entwickelte Format bietet mehrere Profile. Dadurch ist es auch zu VRML kompatibel (Kompatibilitätsprofil). X3D integriert außerdem Formate, wie DOM, GIF, JPEG, MP3 und MPEG. Der neue Standard ist plattformunabhängig, hat eine höhere Performance und Darstellbarkeit und ist objektorientiert.
Ein weiteres weit verbreitetes Format ist Java3D. Es nutzt verschienden Klassen für die Objektmanipulation. Java3D hat kein eigenes Austauschformat, kann aber VRML laden.
Bildbasierte 3D-Formate
Die bildbasierte 3D-Technik gewinnt 3D-Strukturen aus 2D-Fotos. Sie wird auch als Image Based Rendering (IBR) bezeichnet. Apple Quicktime VR gehört zu dieser Gruppe. Man nutzt diese Technik insbesondere dann, wenn eine echte geometrische Modellierung zu aufwändig oder zu teuer wäre. Außerdem bietet das Image Based Rendering einen höheren Realismus. Es werden einfache geometrische Modelle, wie Zylinder oder Kugel verwendet. Ihre Details erhalten diese Strukturen durch Fototexturen. Fehlende Bilder können durch geometrische Transformationen erzeugt werden. Der erzielbare Realismus und das Level of Detail (LOD) genügen aber einigen Anforderungen nicht, so dass bildbasierte 3D-Formate nicht für alle Einsatzbereiche geeignet sind.
QuickTime VR - Technik, Formate, Methodik
QuickTime
QuickTime ist eine 1990 von Apple entwickelte Erweiterung für das Macintosh-System zum Aufnehmen, Bearbeiten und Wiedergeben von Videos. Mit der Einführung der CD hat es sich auch auf anderen Systemen verbreitet, da es viele Medientypen unterstützt, wie z.B. Audio, Video, Animation, Text, Grafik, 3D, VR, MIDI, Flash, SMIL, Hyperlinks, Streams und Skins. Insgesamt bietet QuickTime Support für über 70 Im- und Exportformate.
Es ermöglicht den gesamten Produktionsprozess mit nur einem Format zu bewerkstelligen. Für eine interaktive Steuerung kann es unter anderem mit SMIL, HTML, Flash, Java, Java Script ausgestattet werden. QuickTime wird von zahlreichen Multimedia-Autorensystemen (z.B. Videobearbeitungsprogrammen wie Adobe Premiere) genutzt. Wegen seiner Vielfältigkeit wurde as auch als Grundlage für den MPEG-4-Standard gewählt.
QuickTime unterstützt auch das Streaming von Livesendungen oder Video on Demand über das Internet.
Jeder Movie (Film) kann mehrere parallel und sequentiell angeordnete Datenströme enthalten. Diese Datenströme bezeichnet man als Tracks. Jeder Movie enthält eine oder mehrere Layers (Ebenen). Jedes Layer wiederum enthält einen oder mehrere Tracks. Tracks sind Datenströme eines Medientyps (Media). Jeder Track wird mittels eines Time Coordinate Systems im Movie positioniert. Jeder Movie kann mehrere Tracks gleichen Typs enthalten, z.B. verschiedene Sprachen oder Audioqualitäten.
Mit Media bezeichnet man hier nicht das Speichermedium selbst, sondern eine allgemeine Datenstruktur. Sie enthält Metadaten, welche Verweise zu den eigentlichen Daten und Parameter zu den einzelnen Filmteilen enthalten. Solche Parameter können zum Beispiel Dauer, Position, Qualität und Anzahl der Wiederholungen sein.
Die QuickTime-Software enthält verschiedene Komponenten. Dazu zählt unter anderem die Movie Toolbox. Das ist ein Funktionssatz, der Funktionen zum Lesen, Manipulieren und Speichern von Tracks enthält. Des weiteren gibt es verschiedene Manager. Dazu zählen der Image Compression Manager, der Sound Manager und der Component Manager. Der Image Compression Manager enthält Funktionen zur Kompression und Dekompression von Bildern und Bildsequenzen. Der Component Manager enthält die Programmkomponenten. Diese Sammlung ist durch eine umfangreiche Programmierschnittstelle (Application Programming Interface - API) vom Anwender erweiterbar. Einige Standardkomponenten sind:
- Movie Controller Components (ermöglichen einer Anwendung Movies abzuspielen)
- Image-Compression Dialog Components (zum Setzen der Parameter für die Bildkompression)
- Image-Compressor Components (ermöglichen das (De-) Komprimieren von Bilddaten)
- Media Data-Exchange Components (ermöglichen das Hinzufügen und Entfernen von Mediendaten zum, bzw. vom Movie)
- Preview-Components (zum Erzeugen von Previews)
- Sequence Grabber Panel Components (ermöglicht die Steuerung des externen Grabber-Devices zur Digitalisierung analoger Videosignale)
Video- und Audiodaten eines QuickTime-Movies werden getrennt erstellt. Ein Movie kann einen Preview und ein Poster haben. Ein Preview ist eine ungefähr drei oder vier Sekunden lange Sequenz aus dem Film. Ein Poster ist ein charakteristisches Einzelbild, welches vor dem Start des Films gezeigt wird.
QuickTime VR (QTVR)
Quicktime VR dient der Darstellung von Panoramafilmen und Objektfilmen mittels QuickTime. Durch die Möglichkeit von interaktiven Bewegungen entsteht der Eindruck von Virtual Reality (VR). Panoramafilme entstehen indem sich die Kamera, bzw. der Beobachter um seinen eigenen Mittelpunkt dreht. Man unterscheidet zylindrische Panoramen, bei denen sich die Kamera lediglich um die vertikale Achse dreht und kubische, bzw. sphärische Panoramen, bei denen sich die Kameraperspektive in alle Richtungen um 360° drehen lässt.
Objektfilme entstehen, wenn sich die Kamera um den Mittelpunkt des Objekts dreht. Man kann auch mehrere QuickTime VR-Movies miteinander verknüpfen. Dabei wird jeder Movie durch einen Knoten (Node) repräsentiert. Es entstehen sogenannte Scenes, welche es dem Benutzer ermöglichen sich durch diese Welt zu bewegen. Das Verfahren, welches zur Erstellung solcher Pseudo-3D-Filme aus fotografischen Aufnahmen eingesetzt wird bezeichnet man als Image Based Rendering (IBR).
Detailierte Informationen zum Image Based Rendering findet man bei GLOSSAR.de.
Wie erstellt man nun einen QickTime VR-Movie?
Zuerst muss die Szene geplant und in Bildern festgehalten werden. Für Panoramafilme nutzt man üblicherweise für die Aufnahmen einen Fotoapparat mit Stativ. Die Rotationsachse des Stativs muss durch die Linse verlaufen. Die Fotos werden so aufgenommen, dass sie sich um 30% bis 40% überlappen. Noch besser, aber eben sehr speziell ist eine Panoramakamera. Die bewegt sich selbstständig und benötigt nur ungefähr 1/250 Sekunde für eine Aufnahme. Damit können auch Bewegtszenen festgehalten werden (photographic-rendered Movies). Eine weniger gute Möglichkeit ist es die Bilder aus einem Videofilm zu gewinnen, da hier die Auflösung sehr gering ist. Zu guter letzt kann man insbesondere für selbstmodellierte 3D-Objekte auch diverse 3D-Grafikprogramme nutzen (3D-rendered Movies).
Für den Panoramafilm erstellt man zuerst ein Panoramabild. Durch Stitching werden die Bilder zusammengefügt. Beim Stitching erfolgt ein Ausgleich von Ton- und Farbunterschieden an den Bildrändern. Außerdem werden die Bilder sphärisch verzerrt. Beim anschließenden Warping können Verzerrungen im Bild korrigiert werden, da sonst gerade Linien möglicherweise nicht mehr gerade erscheinen würden. Das Panorama wird als PICT-Datei abgespeichert und kann in einen QuickTime-Movie eingefügt werden. Ein Panoramafilm besteht immer nur aus einer PICT-Datei.
Für Objektfilme muss eine Sequenz von Ansichten (Views) erstellt werden. Das ist eine Menge von PICT- oder Videoframes, die sich nicht überlappen. Sie werden in einer Matrix angeordnet. Die Spalten charakterisieren die vertikale Rotation und die Zeilen die horizontale Rotation. Die Bilder in der Matrix können auch selbst Animationen sein.
Beispiel: Es soll ein Objektfilm erstellt werden, bei dem sich der Betrachter um 180° in der Horizontalen und um je 60° nach oben und unten bewegen kann. Die Bilder werden im Abstand von 30° gemacht. Dabei soll eine fünf Sekunden lange Animation mit 12 fps (Frames per Second) zu sehen sein. Es sind also pro Zeile sieben Bilder nötig, nämlich bei 0°, 30°, 60°, 90°, 120°, 150° und 180°. Für jede Spalte benötigen wir fünf Bilder, also für -60°, -30°, 0°, 30° und 60°. Ohne Animation bräuchten wir also 5 * 7 = 35 Bilder. Für die Animation benötigen wir pro Bildsequenz 12 * 5 = 60 Einzelbilder. Es muss aber nicht nur eine, sondern jedes der 35 Bilder animiert werden. Insgesamt sind also 35 * 60 = 2100 Einzelbilder für diesen Objektfilm nötig. Die Animation kann dann je nach Einstellung wiederholt werden, im Wechsel vorwärts und rückwärts ablaufen oder nur einmal gezeigt werden.
Ein QuickTime VR-Movie kann auch Sound enthalten. Der kann abhängig von der Position im Film verändert werden.
QuickTime VR Interaktionen
Bildgröße und -format (View State) eines Quicktime VR-Movies lassen sich mit Mausereignissen verknüpfen. Zum Beispiel wäre es möglich eine Szene bei gedrückter Maustaste mit doppelter Größe abzuspielen. Eine andere Möglichkeit für Interaktionen schaffen Hot Spots. Sie bilden den Übergang von einem Movie zu einem anderen oder zu einem anderen Medium, wie z.B. einer Texteinblendung oder einer Website. Hot Spots beinhalten Informationen über den Ausgangs- und den Zielort.
Hier gibt es einen QTVR-Movie der Cheops-Pyramide von Gizeh, mit Hot Spots: Public Broadcasting Service.
Videoformate und Videokompression
Analoge und digitale Videosignale
Analoge Videosignale können im Composite-Format oder im Component-Format vorliegen. Bei der Composite-Technik sind Chrominanz und Helligkeit in einem Signal. Diese Technik wird beim analogen Farbfernsehen verwendet. Bei der Component-Technik wird jeder Chrominanzkanal und der Helligkeitskanal in einem extra Signal übertragen. Diese Technik kommt vor allem in Studios zur Anwendung.
Die Digitalisierung des Signals erfolgt durch Abtastung, Quantisierung und Codierung. Für die Digitalisierung von Videosignalen im Composite-Format (Digital Composite) verwendet man zur Abtastung die vierfache Farbträgerfrequenz. Die Quantisierung erfolgt mit acht oder zehn Bit. Das entspricht 256, bzw. 1024 Quantisierungsstufen. Digital Components wird aus Videosignalen im Components-Format erzeugt. Dazu wird das vorliegende RGB-Signal in ein YPbPr-Signal (=YUV) umgewandelt. Y ist dabei die Helligkeit, PCb der Unterschied zwischen Helligkeit und Blau (Y-B) und Pr der Unterschied zwischen Helligkeit und Rot (Y-R). Alle drei Komponenten werden unabhängig digitalisiert. Die digitalisierten Komponenten heißen dann übrigens YCbCr. Beim einfachen Digital Components-Verfahren werden die Digitalsignale über drei parallele Leitungen übertragen. Wegen des hohen Kabelbedarfs eignet sich diese Technik nur für wenige Meter. Für die serielle Übertragung auf einer Leitung (Digital Serial Components) werden die drei Signale gezeitmultiplext. Digital Serial Components ist der digitale Produktionsstandard für TV-Studios.
Chroma Subsampling
Unter Chroma Subsampling versteht man die Unterabtastung von Farbinformationen bei Videosignalen. Dabei wird ausgenutzt, dass das menschliche Auge Farbunterschiede weniger genau wahrnimmt, als Helligkeitsunterschiede, um Bandbreite zu sparen. Chroma-Subsampling kann dann angewendet werden, wenn das Farbmodell den Helligkeitskanal enthält. Bei Videos (YCbCr) ist das der Fall. Hier ist die Aufteilung der Kanäle anhand eines JPEG-Bildes gezeigt: wikimedia.org.
- 4:4:4 - Kein Chroma Subsampling. Alle Kanäle werden gleich abgetastet.
- 4:2:2 - Die Chrominanz wird horizontal nur mit der halben Frequenz abgetastet. Nur jedes zweite Farbspalte wird kodiert.
- 4:1:1 - Es wird nur jede vierte Farbspalte kodiert.
- 4:2:0 - Die Abtastung der Chrominanz erfolgt horizontal und vertikal nur mit halber Frequenz. Bei MPEG1 wird der Farbwert dabei jeweils aus vier Pixeln gemittelt. Bei MPEG2 wird nur über die zwei übereinanderliegenden Pixel jeder zweiten Spalte gemittelt.
Hier findet man eine genaue Darstellung der Subsampling-Formate: www.techweb.com.
Zur weiteren Reduktion kann das Source Intermediate Format oder Source Input Format (SIF) verwendet werden. Dabei wird die horizontale und vertikale Auflösung des Bildes halbiert und danach noch 4:1:1-Subsampling angewendet.
Studionorm ITU-R BT.601 und CCIR 601
ITU-R BT.601 ist die Richtline für Fernsehen (broadcasting service / television) der International Telecommunications Union - Radiocommunication (ITU-R). Sie enthält Methoden zur Digitalisierung von PAL und NTSC-Videosignalen. Für Digitalsignale soll das YCbCr Farbmodell und ein 4:2:2 Chroma Subsampling verwendet werden. Die Übertragung einer Pixelzeile entspricht dann diesem Muster:
Cb1 Y1 Cr1 Y2 Cb3 Y3 Cr3 Y4 ...
Alle Kanäle werden gleichmäßig mit 8Bit oder im Studiobereich mit 10Bit quantisiert.
Die Vorgängerorganisation der ITU-R war das Comitée Consultatif International Radio (CCIR). CCIR 601 ist deshalb eine alte Bezeichnung für die Richtlinie ITU-R BT.601.
MPEG (Moving Picture Experts Group)
Die Moving Picture Experts Group (auch Motion Pictures Experts Group) ist eine Arbeitsgruppe der International Organisation for Standardisation (ISO). Ihre Aufgabe ist die Spezifikation eines Modells zur Kompression von Bewegtbildern und Tonspuren. Konkrete Algorithmen und Implementierungen gehören nur teilweise zu den Standards. Bei MPEG-1 wird nur das Modell spezifiziert. Genaue Informationen zur MPEG finden sich auf dieser Seite: www.cybersite.de. Zur Zeit gibt es die folgenden Standards:
- MPEG-1 für Video-CD (enthält Spezifikation für MP2 und MP3)
- MPEG-2 für digitales Fernsehen und DVD
- MPEG-4 für Multimediaanwendungen und Web
- MPEG-7 für die Beschreibung von Audio- und Videoinhalten
- MPEG-21, ein Multimedia Framework
Mehr Informationen zur Kodierung eines MPEG-Stromes finden sich im folgenden Artikel: MPEG-Kodierung.
MPEG-Kodierung
Das hier aufgezeigte Verfahren bildet die Grundlage für die Kodierung von MPEG-1- und MPEG-2-Strömen. Ziel ist es die geringe Differenz von Bildern, die in einer Sequenz aufeinander folgen, zur Kompression auszunutzen. Eine weitere Datenreduktion wird durch die Ausnutzung von Schwächen in der menschlichen Wahrnehmung erzielt. Bevor die eigentliche Verarbeitung beginnen kann muss der Datenstrom gegebenenfalls erst digitalisiert werden. (Siehe dazu analoge und digitale Videosignale.)
Bei MPEG-1 erfolgt nun zur Datenreduktion eine verlustbehaftete Videovorverarbeitung. Dabei wird die Abtastrate in horizontaler und vertikaler Richtung halbiert. Außerdem findet ein Chroma-Subsampling von 4:2:0 statt. PAL-Videos werden damit auf eine Größe von 352x288, bzw. 176x144 für die Farbkomponenten reduziert. Eventuell kann das Video auch mit einer Auflösung von 720x576 als MPEG-1+ kodiert werden. Die fehlenden Werte werden beim Dekodieren interpoliert. Das geschieht z.B. durch Mittlung zwischen den benachbarten Werten oder bei einfachen Verfahren durch Wiederholung.
Der nun folgende Teil ähnelt der JPEG-Kompression und ist bei allen MPEG-Strömen gleich. Zuerst erfolgt eine Aufteilung des Bildes (Frame) in 8x8 Pixel große Blöcke. Jeweils vier dieser Blöcke (16x16 Pixel) bilden einen Makroblock. Durch Bewegungskompensation (Motioncompensation) wird der Umstand ausgenutzt, dass sich in aufeinanderfolgenden Frames, Bildteile gleichen. Zum Beispiel kommen bei einem Kameraschwenk nur am Rand neue Bildinformationen hinzu. Die anderen Makroblöcke verschieben sich lediglich. Deshalb sucht der MPEG-Enkoder nach Ähnlichkeiten zwischen den Makroblöcken. Das bezeichnet man als Prädiktion. Die Suche nach solchen Bezugsblöcken ist sehr rechenaufwändig. Deshalb erfolgt sie nur in der Nähe des Ausgangsblocks und mittels komplexer Suchverfahren. Wird ein Bezugsblock mit ausreichend geringen Abweichungen gefunden, dann wird nur der Verschiebevektor und der Unterschied zum vorangegangenen Makroblock kodiert. Die Verschiebevektoren der Makroblöcke werden mittels Lauflängenkodierung (Run Length Coding - RLC) weiter komprimiert. Das ist sehr effektiv, da im Allgemeinen viele Verschiebevektoren in die gleiche Richtung zeigen. Wenn kein Bezugsblock gefunden wird, oder die Abweichungen zu groß sind, dann muss der Makroblock wie ein Standbild intrakodiert werden. Um den enormen Rechenaufwand bei der Bewgungskompensation zu verteilen wird das Bild in horizontale Streifen unterteilt, für die die Bewegungskompensation parallel durch mehrere Enkoder erfolgen kann.
Im zweiten Schritt erfolgt eine Diskrete Kosinustransformation (Discrete Cosine Transform - DCT). Dabei wird jeder 8x8-Block einzeln vom Orts- in den Frequenzraum transformiert. Der erste Koeffizient gibt den Gleichanteil (Direct Current - DC) an. Alle weiteren Koeffizienten bestimmen den AC-Anteil (Alternate Current). Monotone Bildteile haben große Koeffizienten im niederenfrequenten Spektrum. Detailreiche Bildteile haben große Koeffizienten im hochfrequenten Spektrum. Die Koeffizienten werden in einer 8x8-Matrix abgelegt. Es erfolgt eine Wichtung der Koeffizienten. Dazu wird die Koeffizientenmatrix mit einer Quantisierungsmatrix multipliziert. Die Quantisierung ist verlustbehaftet. Dabei werden wie bei der JPEG-Kompression möglichst viele Koeffizienten mit 0 angenähert, um später eine noch stärkere Kompression mittels Lauflängenodierung erreichen zu können. Im Gegensatz zur JPEG-Kompression ist die MPEG-Kompression nicht frei skalierbar. Es werden voreingestellte Profile genutzt. Dieser Schritt wird auch dazu genutzt Rauschanteile zu minimieren und wenig wahrnehmungsrelevante Informationen wegzufiltern. Das heißt, dass Bildinformationswechsel mit einer höheren Frequenz, als das Bildraster, also Detailstrukturen, entfernt werden, da sie sowieso nicht darstellbar sind. Bildinformationswechsel mit einer geringfügig unter dem Raster liegenden Wechselfrequenz werden auch gefiltert. Andernfalls könnte dies zu unschönen Effekten führen. (Moiré-Effekt: de.wikipedia.org)
Die gewichteten und quantisierten Koeffizienten werden in einer Zickzacklinie vom niederfrequenten Anteil (links oben) zum hochfrequenten Anteil (rechts unten) ausgelesen. Damit stehen möglichst viele gleiche Koeffizienten hintereinander, so dass bei der nun folgenden Lauflängenkodierung ein gutes Ergebnis erzielt wird. Zum Schluss erfolgt eine ebenfalls verlustfreie Huffman-Kodierung (Variable Length Coding - VLC).
Im Unterschied zu Motion-JPEG werden bei MPEG keine Einzelbildsequenzen, sondern zusammenhängende Bildfolgen kodiert. Um die Gemeinsamkeiten von aufeinanderfolgenden Bildern auszunutzen muss nicht jedes Bild vollständig kodiert werden. Deshalb unterscheidet man zwischen Intraframes und Interframes. Intraframes (I-Frames) kodieren ein komplettes Einzelbild. Ein Video, das nur I-Frames enthält entspricht also in etwa einem Motion-JPEG-Video. Ein Interframe kodiert nur den unterschied zu einem anderen Bild. So genannte Predicted Frames (P-Frames) kodieren die Bewegungsabschätzung und die Differenzblöcke zum vorangegangenen I- oder P-Frame (Backwardpredicted Frame) oder zum nachfolgenden I- oder P-Frame (Forwardpredicted Frame). Dazwischen können noch Bidirectional Predicted Frames (B-Frames) vorkommen. Sie kodieren die Bewegungsabschätzung und die Differenzblöcke zum vorangegangenen und zum nächsten I-, bzw. P-Frame. Frames, auf die bei der Interframekodierung Bezug genommen wird, können nicht direkt zur Ermittlung der Differenzmatrix herangezogen werden, da sich sonst der Quantisierungsfehler fortpflanzen würde. Es muss also die Differenz zum quantisierten Frame kodiert werden. Das geschieht, indem dieser cosinustransformiert und quantisiert und wieder invers cosinustransformiert wird. Als viertes Element gibt es noch so genannte Direct Frames (D-Frames). Sie kodieren nur einen Farbwert pro 8x8-Block und dienen dem schnellen Vor- und Rücklauf.
Die Bildfolge von einem zum nächsten I-Frame bezeichnet man als Group of Pictures (GoP). Als praktisch hat sich diese Anordnung von Frames (Elementary Stream) erwiesen: I BB P BB P BB (I BB P ...)
In Klammern befindet sich bereits das nächste Group of Pictures. Damit dieser Datenstrom in Echtzeit dekodiert werden kann muss die Reihenfolge der Frames so vertauscht werden, dass der Dekoder zuerst die zur Dekodierung eines P- oder B-Frames nötigen referenzierten Frames erhält. Jeder Frame erhält deshalb einen Presentation Time Stamp (PTS) und einen Decoding Time Stamp (DTS). Um diese auswerten zu können wir den Datenströmen im Multiplexer eine Zeitreferenz (Program Clock Reference) hinzugefügt. Eine mögliche Anordnung für den oben genannten Medienstrom wäre dieser Packetized Elementary Stream: I (BB) P BB P BB (I) BB (P BB ...)
Das erste B-Frame-Paar in Klammern gehört noch zum vorhergehenden Group of Pictures. Die anderen geklammerten Frames gehören wie oben zum nachfolgenden Group of Pictures. Zum besseren Überblick sei hier nochmal erklärt, wie sich ein MPEG-Video gliedert: Jedes Video lässt sich chronologisch in Groups of Pictures unterteilen. Jedes GoP besteht aus mehreren Frames, zu der genau ein I-Frame gehört. Ein Frame besteht aus mehreren Makroblöcken, die wiederum in vier Blöcke unterteilt sind. Eine chronologische Folge von Makroblöcken, die durch Bewegungsvektoren miteinander „verbunden” sind bezeichnet man als Slice. Übertragungsfehler können sich nur innerhalb eines Slices auswirken.
Auch wenn sich die Bildqualität im Idealfall bei MPEG-Komprimierung hinsichtlich ihrer Bildqualität nicht vom Ausgangsmaterial unterscheidet ist sie nicht verlustfrei. Verlustfrei sind lediglich die Redundanzreduktionen bei der Bewegungsabschätzung, Differenzkodierung, Lauflängenkodierung und Huffman-Kodierung. Die Irrelevanzreduktionen Chroma-Subsampling, diskrete Kosinustransformation und Quantisierung sind verlustbehaftet.
Die folgenden Parameter können, sofern es die Anwendung zulässt, beim Kodieren eines MPEG-Films vom Benutzer gewählt werden:
- Länge und Struktur des Group of Picture
- Bildröße
- maximale Datenrate
- Suchbereich für die Bewegungskompensation
- Quantisierungsmatrizen
Zur Dekodierung eines Packetized Elementary Stream wird das Prinzip der Kodierung einfach umgekehrt. Das Dekodieren geht jedoch deutlich schneller, da keine Bewegungsabschätzung nötig ist.
Ein Rechenbeispiel: 90min unkomprimierter PAL-Film (4:3), ohne Chroma-Subsampling sollen in einen MPEG-Film konvertiert werden. Bei PAL werde für die Luminanz eine Auflösung von 720x576 und für Chroma 360x288 verwendet. Wenn mit 8bit/Pixel kodiert wird ergibt sich für ein unkomprimiertes Bild eine Größe von
-
(720 · 576 + (2 · 360 · 288)) · 8bit = 4 976 640bit (= 607,5KB/Frame).
Im Mittel hat ein I-Frame von dieser Auflösung eine Größe von 800kbit, ein P-Frame 200kbit und ein B-Frame 80kbit. Geht man von einem GoP mit I BB P BB P BB P BB und einer Bildfrequenz von 25fps aus, ergibt sich die folgende Datenrate:
-
(3 I-Frames + 6 P-Frames + 16 B-Frames)/s
= (3 · 800kbit + 6 · 200kbit + 16 · 80kbit)/s = 4 880bit/s
MPEG-1
MPEG-1 ist der ISO-Standard für Video-CDs. Damit ein Video auch mit einem Laufwerk mit einfacher Geschwindigkeit abgespielt werden kann, darf die Datenrate 1,5Mbit/s nicht überschreiten. Um eine konstante Datenrate zu gewährleisten variiert MPEG-1 die Qualität. Angeblich kann eine Kompression von 100:1 bis 800:1 erreicht werden. Bei einem Test konnte ich „lediglich” eine Kompression von 55:1 erreichen. Dazu habe ich ein Video mit der Auflösung 720x576 und einer Länge von 96s (25fps) auf 52MB komprimiert.
Jeder der MPEG-Standards gliedert sich in bestimmte Teile. Im Part 1 (Systems) des MPEG-1-Standards sind die technischen Grundlagen für die Synchronisation der Datenströme mit Hilfe eines Timer-Signals und der Multiplex von Video- und Audioströmen festgelegt. Part 2 (Video) legt die Kodierung von Videos in VHS-Qualität fest. Die Halbbildtechnik (Interlacing oder Zeilensprungverfahren) wird dabei nicht unterstützt. Der Part 3 (Audio) definiert 3 verschiedene Layer. Layer 1 beschreibt die Kodierung nach dem MUSICAM-Verfahren, bei dem Teilbandkodierung und Irrelevanzreduktion zur Anwendung kommen. Layer 2 (MP2) ist der Standard beim Rundfunk. Am bekanntesten ist Layer 3 (MP3). Mehr dazu findet sich im Artikel MPEG Audio.
Part 4 (Conformance Testing) des MPEG-1-Standards spezifiziert Tests für Enkoder und Dekoder. Damit kann überprüft werden, ob diese den Parts 1 bis 3 entsprechen. Nachträglich wurde noch ein Teil 5 (Software Simulation) hinzugefügt, der aber nicht zum Standard gehört. Er enthält eine Softwareimplementation der ersten drei Teile.
MPEG-2
MPEG-2 ist der ISO-Standard für digitales Fernsehen (Digital Video Broadcasting - DVB) und Abrufvideos (Video on Demand - VoD). Als Video on Demand bezeichnet man Videos, die über Internet oder Breitbandkabelnetz abgerufen werden können. Ein MPEG-2-Strom kann mehrere Programme enthalten.
MPEG-2 bietet eine höhere Audio- und Videoqualität, als MPEG-1. Außerdem unterstützt es variable Datenraten, so dass eine konstante Qualität gewähreistet werden kann. Typisch sind 3 bis 10 Mbit/s. Um trotz variabler Bitrate des Video- und Audiostroms eine konstante Übertragungsrate zu erreichen wird dem Enkoder und dem Dekoder ein Puffer hinzugefügt. Damit kann der Enkoder mit variabler Bitrate in den Puffer schreiben und mit konstanter Bitrate aus dem Puffer lesen. Der Dekoder schreibt mit konstanter Bitrate in den Puffer und liest ihn mit variabler Bitrate aus. Dabei muss der Enkoder aber dafür Sorge tragen, dass der Puffer weder überläuft noch leer wird.
Der MPEG-2-Standard definiert ähnlich dem MPEG-1-Standard mehrere Teile. Part 1 (System) spezifiziert das Paketieren und Multiplexen verschiedener Audio- und Videoströme. Es gibt zwei verschiedene Arten von Streams, den Transport Stream und den Program Stream. Der Program Stream entspricht dem MPEG-1-Datenstrom. Er eignet sich für die digitale Speicherung, z.B. auf Video-CD oder DVD. Wegen der langen Datenpakete ist er fehleranfälliger und deshalb nicht für eine Netzwerkübertragung geeignet. Dafür gibt es den Transport Stream. Er nutzt kleinere Pakete, wodurch sich Übertragungsfehler nicht so stark auswirken. Deshalb ist der Transport Stream für die Übertragung über Wide Area Networks (WAN) besser geeignet. Um die verschiedenen Ströme und Programme auseinander halten zu können enthält jeder MPEG-2-Strom programmspezifische Informationen (Program Spezific Information). Diese beinhalten verschiedene Tabellen, zur Zuordung der einzelnen Teile.
Part 2 (Video) definiert Profile und Levels für verschiedene Auflösungen und Qualitätsstufen. Diese Profile sind nötig, um eine möglichst gute Übereinstimmung von Enkodern und Dekodern zu gewährleisten. Die Funktionalität ist im Vergleich zu MPEG-1 etwas erweitert. MPEG-2 unterstützt zusätzlich zum 4:2:0 Chroma-Subsampling auch 4:2:2 und 4:4:4. Es sind sogar verschiedene Auflösungen innerhalb eines Datenstroms möglich. Zusätzlich zum Vollbildmodus (Progressive Scan) wird bei MPEG-2 auch ein Halbbildmodus (Interlacing bzw. Zeilensprungverfahren) ermöglicht. Interlacing wirkt sich allerdings nachteilig auf die Kompression aus, da dadurch die Ähnlichkeiten der benachbarten Pixel minimiert werden.
Part 3 (Audio) ähnelt dem von MPEG-1 und ist zu diesem abwärtskompatibel. Eine Erweiterung befindet sich in Part 7 (Advanced Audio Coding - AAC). Bei AAC werden einige Ursachen für Artefakte, die z.B. bei MP3 auftreten besser erkannt und entfernt. AAC unterstützt bis zu 48 Kanäle. Es können deshalb ohne Probleme Mono, Stereo, 5.1 und 7.1 gleichzeitig kodiert werden. Die Datenreduktion gegenüber MP3 wurde noch um bis zu 50% gesteigert. Advanced Audio Coding ist nicht mehr abwärtskompatibel zum Vorgänger MP3.
Part 4 und 5 entsprechen etwa denen von MPEG-1. Nur, dass hier die Software Simulation zum Standard gehört. Part 6 (Digital Storage Media Command and Control) legt Protokolle fest, die die Steuerung von MPEG-1 und -2-Datenströmen unterstützen und wie die Daten auf Festspeicher geschrieben werden. Part 9 (Real Time Interface) spezifiziert einen Standard für die Echtzeitdekodierung von Transport Streams.
H.261
H.261 ist der Wegbereiter des MPEG-Standards und wurde 1990 von der International Telecommunication Union - Telecommunication Standardization Sector (ITU-T) veröffentlicht. Ziel war es analoge Videodaten digital zu komprimieren, um einen einheitlichen Standard für die Videotelefonie über ISDN zu schaffen.
H.261 kann nur progressive Bilder verarbeiten. Das heißt es unterstützt kein Zeilensprungverfahren (Interlacing). Die Framerate des Eingangsmaterials muss 29,97Hz (NTSC) betragen. Digitalisiert wird mittels Differential Pulse Code Modulation (DPCM).
Es sind zwei Formate möglich: Common Intermediate Format (CIF) und Quater Common Intermediate Format (QCIF). CIF bietet eine Auflösung von 352x288 und 4:2:2-Chroma Subsampling. CIF ist optional. QCIF hat eine geringere Auflösung von 176x144 für die Helligkeitskomponente und ein viertel für die Chroma-Komponenten (4:2:0). Für die Kodierung werden wie bei MPEG I-Frames (Intraframes) und P-Frames (Interframes) genutzt. Danach erfolgt eine Diskrete Kosinustransformation (DCT), Lauflängenkodierung (RLC) und Huffman-Kodierung. (Siehe MPEG-Kodierung)
Durch dieses Verfahren ist eine Kompression von 100:1 bis 2000:1 möglich. Da es sich bei H.621 um einen Standard für Dialog-Systeme handelt darf die Signalverzögerung durch Enkodierung und Dekodierung nicht größer als 150ms sein.
H.263
Diese Weiterentwicklung von H.261 für Videokonferenzen ist Bestandteil von H.320 (Videokonferenz über ISDN) und H.324 (Videokonferenz über niederartige, analoge Telefonverbindungen). Der Standard kann insbesondere Bilder mit geringen Veränderungen sehr gut komprimieren. Die Genauigkeit bei der Bewegungsabschätzung wurde von einem Pixel (H.261 und MPEG-1) auf ein halbes Pixel (wie bei MPEG-2) erhöht. Außerdem bietet H.263 eine bessere Fehlerkorrektur und Unterstützung für niedrigere Bitraten.
Die folgenden Optionen sind optional. Der Dekoder signalisiert dem Enkoder, welche er beherrscht. Dazu gehört unter anderem die Möglichkeit, dass sich Blöcke bei der Bewegungskompensation überlappen können. Außerdem kann an Stelle der Huffman-Kodierung eine syntaxbasierte arithmetische Kodierung verwendet werden, die im Mittel etwas kürzere Kodewörter liefert. Bei der arithmetischen Kodierung werden die Kodezeichen ebenfalls abhängig von ihrer relativen Häufigkeit kodiert. Für genauere Informationen siehe de.wikipedia.org.
Komplexe Medienobjekte
XML als Beschreibungssprache
Die Extensible Markup Language (XML) ist ein Standard des World Wide Web Consortium (W3C). XML ist ein Metagrammatik oder Metaauszeichnungssprache. Sie definiert Regeln zur Definition von Grammatiken. Klingt komisch, ist aber so. Die Definition der Grammatik kann entwerder als XML-Schema oder Als Document Type Definition (DTD) erfolgen. Sie kann direkt im XML-Dokument stehen oder in einer externen Datei. Alle Elemente, die in einem XML-Dokument vorkommen sollen müssen definiert werden. In DTD geschieht das so:
-
<!ELEMENT elementname (unterelement1?, (unterelement2 | unterelement3)*)>
Hier wird ein Element elementname definiert. Es kann einmal oder gar nicht das Unterelement unterelement1 enthalten und beliebig oft die Unterelemente unterelement2 und unterelement3. Ein Element kann verschiedene Attribute haben. Die werden so definiert:
-
<!ATTLIST elementname
attribut1 standard #REQUIRED
attribut2 standard #IMPLIED>
Für das Element elementname werden hier die Attribute attribut1 und attribut2 definiert. Falls sie im Dokument nicht genutzt werden ist ein Standardwert standard festgelegt. #REQUIRED bedeuted, dass das Attribut angegeben werden muss. #IMPLIED bedeutet, dass es optional ist.
Jedes XML-Dokument muss genau ein Wurzelelement enthalten. Jedes Element muss durch einen Begin- und einen End-Tag abgeschlossen sein. Wenn es keinen Inhalt hat, kann es auch direkt abgeschlossen werden.
-
<elementname ...> inhalt </elementname> oder <elementname .../>
Außerdem müssen die Begin- und End-Tags korrekt geschachtelt sein. Attributnamen dürfen in einem Element nicht mehrfach vorkommen.
SMIL
Die Synchronized Multimedia Integration Language (SMIL) ist ein vom World Wide Web Consortium (W3C) 1998 herausgegebener Standard für multimediale (Web-)Präsentationen. SMIL [smaɪl] ist eine XML-basierte Dokumentenbeschreibungssprache.
Um auch beim folgenden Teil den Durchblick zu behalten, habe ich mal ein kleines SMIL-Dokument erstellt: SMIL-Beispiel (Mit „Ziel speichern unter...” herunterladen!) Um die Datei abzuspielen könnt ihr sie im RealPlayer, QuickTimePlayer oder Helix DNA Client öffnen. Einige andere Player unterstützen das Abspielen von SMIL auch mit Plugins. Um den Inhalt der Datei zu betrachten öffnet ihr sie einfach in einem Texteditor.
SMIL fasst unabhängige Medienobjekte zu einer Präsentation zusammen. Wichtig ist dabei, dass SMIL selbst keine Medienobjekte erzeugt. Die Objekte werden lediglich über ihren URL (Uniform Resource Locator, also einen Link) eingebunden. Sie können räumlich getrennt, also auf verschiedenen Servern oder auch lokal, abgelegt sein. Das SMIL-Dokument kontrolliert den zeitlichen Ablauf und das Layout der Präsentation. Dadurch werden verschiedene Medienformate in einem Datenstrom gebündelt. Das Format eignet sich deshalb für Streaming über das Internet oder Intranet. Unter Streaming versteht man die Präsentation von Inhalten, bevor dieses vollständig geladen sind. Um auf Benutzerinteraktionen und technische Gegebenheiten eingehen zu können erfolgt ein Austausch von Steuerungsdaten zwischen Client und Server. So können in einem SMIL-Dokument zum Beispiel unterschiedlich komprimierte Clips für verschiedene Datenraten zur Verfügung gestellt werden. Auf der Seite des Client erfolgt eine Pufferung der Daten, die über das Netzwerk übertragen werden, um Schwankungen in der Datenrate auszugleichen. Außerdem werden die Daten vorausschauend von der Festplatte des Client gelesen. Das heißt beim Lesen werden immer bereits die benachbarten Daten mit ausgelesen und gecached, um später einen schnelleren Zugriff zu ermöglichen. Man nennt dieses Verfahren Read Ahead.
Da nicht alle Endanwendungen die volle SMIL-Spezifikation unterstützen gibt es verschiedene Profile. Einige Profile sind
- SMIL 2.0 Language Profile
- SMIL Basic Profile
- SMIL animation (für SVG)
- XHTML+SMIL
- SMIL 2.1 Mobile Profile (für MMS) uvm.
Jedes Profil enthält immer das Structure-Modul und beliebige andere Module. Module enthalten Funktionen für semantisch zusammengehörende Elemente, Attribute und Attributwerte. Das Structure-Modul definiert die Struktur und Kodierung von SMIL-Dokumenten. Es enthält das Wurzelelement smil und die Elemente head und body.
-
<smil>
<head> ... </head>
<body> ... </body>
</smil>
Es gibt vier Layout-Module. Sie Definieren die Darstellungseigenschaften und den Darstellungsbereich für die Präsentation. Die Deklaration des Layouts erfolgt im Kopf des SMIL-Dokuments mittels
-
<layout>
<root-layout width="800" height="600" />
...
</layout>
Nach der Definition des root-layout kann relativ dazu noch die Definition von Regions erfolgen. Regions sind Bereiche, in denen Medien-Objekte patziert werden können.
-
<region regionName="videobereich" left="20" width="100" top="20" bottom="250" fit="fill" z-index="15">
Eine Region wird durch den in regionName übergebenen Namen adressiert. Deshalb muss dieser Name eindeutig sein. Das Attribut z-index gibt die Ebene der Region an. Regions mit einem höheren z-index liegen bei Überlappung über dieser Region, Regions mit einem kleiner Index darunter. Das Attribut fit legt fest, wie ein Medienobjekt an die Region angepasst wird. Die folgenden Werte sind möglich: fill (Region wird voll ausgefüllt, Medienobjekt ggf. verzerrt), meet (Seitenverhältnis bleibt erhalten), slice (Objekt wird ggf. abgeschnitten) und scroll.
Es existieren die Layout-Module BasicLayout (ein Fenster) und die davon abgeleiteten Layouts AudioLayout (für Audiosteuerung), MultiWindowLayout (für Multifensterpräsentation) und HirarchicalLayout (für hirarchische Bereiche). Das Beispiel oben entspricht der Definition eines BasicLayout. Außerdem gibt es Timing und Synchronization-Modul, welche Funktionen zur Zeitsteuerung der Medienobjekte zur Verfügung stellen, Time Manipulations-Module, Content Control-Module, zur Anpassung an die technischen Voraussetzungen beim Endanwender, Linking-Module, Media Object-Module, Meta Information-Module und Transitions-Module für Überblendungen.
Die Einbindung von Medienobjekten in ein SMIL-Dokument erfolgt selbstverständlich auch über XML-Elemente. Die werden von den Media Object-Modulen zur Verfügung gestellt. In SMIL werden alle Elementnamen klein geschreiben, da SMIL case sensitive ist. Die folgenden Elemente können zum Einbinden von Medienobjekten genutzt werden: animation, audio, img, video, text und textstream. An Stelle der eben genannten Elemente kann aber auch das Element ref genutzt werden. Es ermöglicht das Einbinden beliebiger Medienobjekte. Die Elemente können folgende Attribute enthalten: src enthält die Quelldatei, clipBegin gibt an, an welcher Stelle des Clips die Wiedergabe einsetzt, dur enthält die Dauer der Wiedergabe und repeatCount die Anzahl der Wiederholungen.
Zusätzlich können Testattribute festgelegt werden. Dann wird das Medienobjekt nur wiedergegeben, wenn die Eigenschaften des Testattributs erfüllt sind. Mögliche Testattribute sind systemBitrate, systemLanguage, systemScreenDepth und systemScreenSize. Elemente mit Testattributen können in ein switch-Element eingeschlossen werden. Dann wird automatisch das passende Medienobjekt aus den eingeschlossenen Elementen ausgewählt.
Der Ablauf der Medien-Elemente wird durch die Elemente seq und par gesteuert. Alle Elemente die in einen seq-Block eingeschlossen sind werden nacheinander angezeigt. Elemente in einem par-Block werden parallel angezeigt (Multiclip-Präsentation). Für eine Multiclip-Präsentation lässt sich festlegen, ob alle Objekte nach dem Ende des ersten Medienobjekts abgebrochen werden, oder ob alle Objekte bis zum Ende laufen. Von Medienobjekten, die in ein excl-Element eingeschlossen sind wird zu einem Zeitpunkt immer nur eins wiedergegeben. Das ist nützlich für User-Interaktionen. Mittels priorityClass-Elementen wird die Priorität der Objekte festgelegt.
Eine ausführliche Anleitung zu SMIL findet sich unter www.hdm-stuttgart.de.
SMIL Layout-Module
Die Layout-Module legen die Darstellungseigenschaften und Darstellungsbereiche für die Präsentation des SMIL-Dokuments fest. Wie schon erwähnt gibt es die Module BasicLayout, AudioLayout, MultiWindowLayout und HirarchicalLayout. Das BasicLayout (Beispiel siehe SMIL) unterstützt die Elemente layout, root-layout und region. Beim AudioLayout kann zusätzlich zu im BasicLayout vorhandenen Attributen für region noch das Attribut soundlevel belegt werden. Es gibt die Grundlautstärke für Audioobjekte an, die in die Region eingebettet werden. Die Angabe der Lautstärke erfolgt in Prozent. Im folgenden Beispiel wird die eingebettete Soundquelle etwa mit halber Lautstärke wiedergegeben:
-
<smil>
<head>
<layout>
<root-layout width="400" height="200"/>
<region regionName="audioregion" soundLevel="50%"/>
</layout>
</head>
<body>
<audio src="audio.mp3" region="audioregion" dur="10s"/>
</body>
</smil>
Das MultiWindowLayout dient der Präsentation in mehreren Fenstern. Dazu wird ein neues Element topLayout definiert. Es wird statt des root-layout-Elements verwendet und darf im Gegensatz zu diesem mehrfach verwendet werden. Zusätzlich zu den Attributen des root-layout-Elements enthält es die Attribute open und close. Diese können die folgenden Werte haben:
- open="onStart" öffnet das Fenster beim Start der Präsentation (Standard)
- open="whenActive" öffnet das Fenster wenn darin ein Medienobjekt präsentiert werden soll
- close="onRequest" wartet, bis der Benutzer das Fenster schließt
- close="whenNotActive" schließt das Fenster nach der Präsentation eines Medienobjekts.
SMIL Media Object-Module
Die Media Object-Module von SMIL definieren die Elemente und Mechanismen zum Einbinden von Medienobjekten. Es stehen die folgenden Elemente zur Verfügung: animation, audio, video, text, textstream und ref. Einige wichtige Attribute für diese Elemente sind:
- id ist ein eindeutiger Identifikator zum Referenzieren des Medienobjekts
- region bezeichnet den regionName der Region in die das Objekt eingebettet werden soll
- src enthält den URL auf die Quelldatei des Medienobjekts
- erase="whenDone" setzt das Objekt zurück, wenn es wiedergegeben wurde
- erase="never" lässt das Objekt bis zum Ende der Präsentation stehen
- sensitivity="opaque" lässt das Objekt auf Benutzerinteraktionen reagieren
- sensitivity="transparent" verhindert die Reaktion auf Benutzereingaben
- param übermittelt Parameter an das Medienobjekt
Es gibt das MediaClipping-Modul (clipStart, clipEnd), das MediaClipMarkers-Modul (Variablen als Zeitmarken in den Medienobjekten), das BrushMedia-Modul (zusätzliches Element <brush color="#ff0000"> zum Einfärben des Medienobjektes), das MediaAccessibility-Modul (weitere Attribute alt, longdesc, readIndex) und das MediaDescription-Modul (weitere Attribute abstract, author, copyright, title und xml:lang).
SMIL Timing und Syncronization-Modul
Das Timing und Synchronization-Modul liefert vier neue Elemente für ein SMIL-Dokument: seq, par, excl und priorityClass. Die Elemente seq, par und excl dienen der Gruppierung von Elementen. Die Kindelemente von seq werden nacheinander präsentiert. Soweit nicht durch Attribute anders festgelegt ergibt sich die Gesamtspielzeit aus der Summe der Spielzeiten der einzelnen Clips. Die Kindelemente von par werden parallel abgespielt. Wenn es nicht durch Attribute anders festgelegt ist, dann entspricht die Gesamtabspielzeit der Wiedergabedauer des längsten Medienobjekts. Das Ende der Gruppe kann aber über das Attribut endsync geregelt werden. Dabei ist last der bereits erwähnte Default-Wert, first beendet alle Medienobjekte der Gruppe, wenn das erste Medienobjekt geendet hat. Außerdem ist es möglich dem Attribut als Wert die id eines der Medienobjekte zu übergeben. Die Gruppe wird dann beendet, wenn dieses Objekt zu Ende gespielt ist. Eine weitere Gruppierungsmöglichkeit bietet excl. Sie bietet die Möglichkeit eine Präsentation interaktiv zu gestalten, indem man ein Medienobjekt startet oder beendet, wenn man auf ein anderes klickt. Im folgenden Code wird das Video erst gestartet, wenn auf das Bild geklickt wurde:
-
<smil>
...
<region regionName="region1" width="800" height="450" top="100" left="0"/>
...
<body>
<excl>
<img src="img1.jpg" id="bild" region="region1" dur="indefinite"/>
<video src="video1.rm" id="video" region="region1" dur="indefinite" begin="bild.activateEvent"/>
</excl>
</body>
</smil>
Das Timing und Synchronization-Modul erlaubt folgende Attribute:
- begin Startzeitpunkt eines Medienobjektes oder einer Gruppe bezüglich der Zeitachse der Obergruppe
- end Endzeitpunkt eines Medienobjektes oder einer Gruppe bezüglich der Zeitachse der Obergruppe
- clipBegin Startzeitpunkt eines Clips bezüglich seiner eigenen Zeitachse
- clipEnd Endzeitpunkt eines Clips bezüglich seiner eigenen Zeitachse
- dur Wiedergabedauer eines Medienobjektes oder einer Gruppe
- repeatCount, bzw. repeatDur Anzahl oder Zeit für die Wiederholungen eines Clips oder einer Gruppe
- fill Sichtbarkeit eines Clips nach seiner Wiedergabe (remove, freeze, transition - bis überblendung vorbei)
- endsync (nur par) Beendigung anderer Objekte am Ende der Wiedergabe eines Medienobjekts (last, first oder id eines Objektes)
- syncBehavior (nur par) Verhalten bei Ausfall eines Objektes (canSlip - fortsetzen, locked - alle anhalten)
SMIL Time Manipulations-Modul
Das SMIL Time Manipulations-Module liefert weitere Attribute für die Medienobjekte. Um die Wiedergabe zu beschleunigen übergibt man dem Attibut accelerate einen Wert zwischen 0 und 1. Mit decelerate kann die Geschwindigkeit abgebremst werden. Mit speed kann die Geschwindigkeit festgelegt werden. Wenn man als Attribut autoReverse="true" verwendet läuft das Medium zuerst vorwärts und dann nocheinmal rückwärts. Das heißt, dass sich die Wiedergabezeit dur verdoppelt. Bedingt durch das Streaming der Medien sind diese Attribute nur eingeschränkt nutzbar.
SMIL Content Control-Module
In SMIL 2.0 gibt es vier Content Control Module. Sie dienen dem Einbinden und Vorausladen von Medienobjekten. Das Basic Content Control Modul definiert das swich-Element, mit dessen Hilfe einer von mehreren Clips anhand von Testattributen ausgewählt werden kann. Das bietet die Möglichkeit auf die technischen Voraussetzungen beim Anwender Rücksicht zu nehmen. Es können die folgenden Attribute verwendet werden: systemBitrate, systemLanguage, systemScreenDepth, systemScreenSize, systemAudioDesc (falls der Benutzer z.B. eine Sehgeschädigtenbeschreibung wünscht), systemCPU, systemComponent (z.B. Codec), systemCaptions (Untertitel), systemOperatingSystem und systemRequired.
-
...
<switch>
<video src="video-high.mpg" region="region1" systemBitrate="500000"/>
<video src="video-low.mpg" region="region1"/>
</switch>
...
Für weitere Testattribute gibt es noch das Custom Test Attributes-Modul.
Das Prefetch Control-Modul definiert das prefetch-Element. Das ermöglicht es Medienobjekte im Vorhinenin zu laden, um Störungen bei der Präsentation zu verhindern. Standardmäßig wird aber bereits die gesamte Präsentation vorher geladen. Das Skip Content-Modul bietet die Möglichkeit Inhalte zu überspringen.
SMIL Transition Effects-Module
Im SMIL-Standard sind drei Transition Effects-Module definiert. Das Basic Transitions-Modul, Inline Transitions-Modul, Transition Modiefiers-Modul. Das Basic Transitions-Modul definiert vier Standard-Überblendeffekte: barWipe, irisWipe, clockWipe und snakeWipe. Die Attribut transIn und transOut erwarten die ids der verknüpften Medienobjekte als Übergabewert. Normalerweise werden Überblendeffekte mit dem transition-Element definiert (style-like transitions). Das Inline-Transitions-Modul definiert außerdem ein transitionFilter-Element. Das kann direkt in die Medienelemente eingefügt werden. Damit ist der Überblendeffekt individuell konfigurierbar.
SMIL Animation-Module
Die SMIL-Spezifikation der Animation-Module erfolgte in engem Zusammenhang mit SVG (Scalable Vector Graphics). Das Basic Animation-Modul stellt das Element animate zur Verfügung, mit dem Attribute anderer Elemente zeitlich verändert werden können. Einige wichtige Attribute von animate sind:
- attributeName Name des Attributs, das geändert werden soll
- targetElement Zielelement
- calcMode Interpolierungsmodus (discrete, linear, paced)
- values mehrere Attributwerte oder
- from und to Startwert und Zielwert oder
- from und by Startwert und Erhöhung pro Schritt
- dur Dauer der Animation
Als Erweiterung gibt es noch das Spline Animation-Modul.
MPEG-4
MPEG-4 ist ein 1999 von der Moving Pictures Expert Group (MPEG) veröffentlichter Standard zur Kodierung von Audio- und Videoobjekten. Er wurde für Digital Video Broadcasting (DVB), mobile Anwendungen für PDA oder SmartPhone, interaktive Grafikanwendungen und interaktive Multimediaanwendungen entwickelt. Die Inhalte können dabei sowohl synthetisch, als auch natürlich sein. Ziel war es eine erweiterbare, plattformunabhängige Toolbox zur Verfügung zu stellen mit der sich multimediale Inhalte gut verbreiten und archivieren lassen. Dazu gehören die Präsentation von Videos, Audio und Text, sowie Grafiken aus 2D-Meshes oder 3D-Meshes und deren Animation. Es wird außerdem eine Nutzerinteraktion ermöglicht. Zum Beispiel können Objekte verschoben und Kamerapositionen geändert werden.
Im Gegensatz zu MPEG-1 und MPEG-2 ist MPEG-4 eine Sammlung von Kodierungs- und Kompressionsverfahren. Es kodiert verschiedene multimediale Daten in einem Format. Zusätzlich zu natürlichen Daten sind auch synthetische, am Rechner generierte, Daten darstellbar. MPEG-4 ermöglicht inhaltsbasierte Zugriffe und bietet einen verbesserten Urheberschutz. Die Verbreitung des Standards erfolgt durch das MPEG-4 Industrieforum (M4IF)
Ein MPEG-4-Strom besteht aus mehreren elementaren Datenströmen für einzelne Medienobjekte. Diese Medienobjekte werden durch einen Szenengraph zeitlich und räumlich angeordnet. Im Gegensatz zu vorherigen MPEG-Standards müssen die Medienobjekte nicht rechteckig sein. Medienobjekte können angepasst und mehrfach genutzt werden. Die Medieneigenschaften können durch den Nutzer manipuliert werden. Außerdem lassen sich die einzelnen Medienobjekte indexieren, suchen, browsen und hoch- und herunterladen (Content-based Interactivity).
Bei MPEG-4 wurde auch die Kompressionseffizienz gegenüber MPEG-2 verbessert. Bei gleicher Bitrate kann eine bessere Qualität erzielt werden, als zuvor. Außerdem gibt es vielseitige Synchronisationsmöglichkeiten für die verschiedenen Ströme. MPEG-4 bietet des weiteren universellen Zugriff. Darunter versteht man die Anpassung an Plattform- und Netzwerkeigenschaften und an die inividuellen Einstellungen des Nutzers.
MPEG-4 definiert die folgenden Parts:
- Part 1: System (Zeit- und Pufferverwaltung, Multiplex der elementaren Ströme)
- Part 2: Visual (Kodiertools und Profile)
- Part 3: Audio (Kodiertools natürliche und synthetische Musik)
- Part 4: Conformance Test (Tests ob Bitströme und Dekodierer Part 1-3 genügen)
- Part 5: Reference Software
- Part 6: Delivery Multimedia Integration Framework (DMIF)
- Part 7: Optimization Modell (u.a. schnelle Bewegungsvorhersage)
- Part 8: MP4 over IP (Übertragung von MPEG-4-Strömen über Internet Protocol)
- Part 9: Reference Hardware
- Part 10: Advanced Video Coding (stärkere Kompression für Streaming und RealTime-Kommunikation)
- und noch viele andere mehr ...
Bei der Definition des MPEG-4-Standards wurde auch auf andere Standards und Formate zurückgegriffen. Teile der Arbeit erfolgten gemeinsam mit der International Telecommunication Union - Telecommunication Standardization Sector (ITU-T). Die Bereiche für natürliches Audio und Video, sowie das Synchronisations- und Puffermanagement sind weitestgehend von MPEG-1 und MPEG-2 übernommen. Das Dateiformat ähnelt dem von Quicktime. Die Szenenbeschreibungssprache MPEG-4 Textural Format (XMT) basiert auf XML und zu guter letzt findet man mit MPEG-J auch Java in der Definition. In MPEG-J werden Steuerrungsroutinen und Datenverarbeitungsmechanismen für den Szenengraphen zur Verfügung gestellt.
Der Standard definiert mehrere Schichten. Im wesentlichen sind das Delivery Layer, Synchronization Layer und Decompression Layer. Die Delivery Layer ist für das Demultiplexen des eingehenden Datenstroms in die elementaren Ströme verantwortlich. Die Synchronization Layer ist - man glaubt es kaum - für die Synchronisation der Datenströme verantwortlich. Dazu werden entsprechende Zeitstempel gesetzt. Außerdem übernimmt die Synchronization Layer die Fehlererkennung und Korrektur. Die Decompression Layer sorgt für das Dekodieren der elementaren Ströme. Der Szenengraph wird ausgewertet und dargestellt.
MPEG-7
MPEG-7 definiert eine Schnittstelle für die Beschreibung multimedialer Inhalte (Multimedia Content Description Interface). Es enthält die „Informationen über die Informationen”. Durch Beschreibungen wird das gezielte Abrufen von audiovisuellen Daten möglich. MPEG-7 ist damit der Standard für Informationssuchsysteme.
In MPEG-7 spezifiziert die Moving Pictures Expert Group (MPEG) eine Sprache zur Definition von Beschreibungsschemata. Da diese XML-basiert sind ist auch eine breite Unterstützung durch Datenbanksysteme gegeben.
Beschreibungen bestehen unter anderem aus Deskriptoren und Beschreibungsstrukturen. Deskriptoren definieren die Merkmale der audiovisuellen Daten. Sie sind eingebettet in Beschreibungsstrukturen, die den Deskriptoren eine Bedeutung zuweisen.
MPEG-7 hat damit den Vorteil, dass die Beschreibung direkt den audiovisuellen Daten zugeordnet ist und nicht für jede Anwendung neu erstellt werden muss. Außerdem ermöglicht MPEG-7 das Streaming von XML-Daten.
Der MPEG-7 Standard definiert die folgenden Parts:
- Part 1: Systems (definiert Formate zum Speichern und Übertragen von MPEG-7, sowie die Kompression mittels BiM-Codec - Binary Format MPEG-7)
- Part 2: Data Definition Language (DDL - definiert Syntax der Beschreibungsstruktur)
- Part 3: Visual (automatisch generierte Deskriptoren für visuelle Komponenten)
- Part 4: Audio (definiert Beschreibung von Audioeigenschaften oder Instrumenten)
- Part 5: Multimedia Description Schemes (MDS - eine Bibliothek von Beschreibungsstrukturen)
- Part 6: Reference Software
- Part 7: Conformance (Richtlinien für Konformitätstests)
- Part 8: Extraction and use (Extraktion der Beschreibungen aus Datenströmen und Beispiele für die Benutzung der Beschreibungen)
