Current Page: Greybox » Authoring » Course ID: medieninformatik » Modules » Module ID: m04 » Learning Units » Unit ID: 05_29
Last Modified:Tuesday, 2015-05-05 - 08:09:08
 
Tools: ValidatePreview XML Preview HTML Preview PDF
Alternative: Printable HTML

 

Learning Unit ID: 05_29
Title: MPEG Video Kodierungsprinzip
Abstract: Videosequenzen bestehen aus einer großen Anzahl aufeinander folgender Standbilder. Will man Videosequenzen digital speichern und wiedergeben, kann man jedes Bild separat kodieren und die Videosequenz als Folge dieser kodierten Bilder darstellen. Die sich daraus ergebende Datenmenge ist aber enorm. MPEG Video nutzt zur Datenreduktion örtliche und zeitliche Redundanzen
 
Status: Captions missing, 2 dead links Version: 2005-01-17
History: 2005-02-21 (Martin Hon): applet-m4_05_29_02 nicht erlaubte attribute entfernt
2005-02-21 (Martin Hon): codebase für applet-m4_05_29_02 hinzugefügt
2005-01-17 (thomas Migl): math-xml hinzugefügt
2005-01-07 (Robert Fuchs): Captions missing, two links dead; added applet-m4_05_29_02.
2004-11-15 (Thomas Migl): Flash Applet eingefügt
2004-11-09 (Thomas Migl): Instruktionen für applet hinzugefügt
2004-11-08 (Thomas Migl): fehlende PDA-Abb. hinzugefügt
2004-11-04 (Thomas Migl): Applet instructions added, acro added
2004-10-14 (Thomas Migl): pda Abb hinzugefügt
2004-09-23 (Thomas Migl): inhaltlichen Fehler ausgebessert
2004-09-22 (Thomas Migl): Applettext implementiert
2004-09-16 (Thomas Migl): PDA Abb. hinzugefügt
2004-09-13 (Thomas Migl): Text für Applet
2004-08-16 (Robert Fuchs): Checked, fixed and exported for Review #2.
2004-08-10 (Thomas Migl): In greybox importiert, finalisiert, Abb für PDA fehlen
2004-03-12 (Robert Fuchs): Closed for 50% Content Deadline import in Scholion.
2004-03-12 (Robert Fuchs): Fixed bugs in content tagging; nested lists bug.
2004-03-11 (Thomas Migl): LOD1 Headers added
2004-03-09 (Thomas Migl): LOD1 und Abstract hinzugefügt
2004-03-05 (Robert Fuchs): Added links.
2004-03-04 (Robert Fuchs): Imported and tagged content from "m4-LU29-Videokomprimierungsprinzip-fertig.doc"; some changes to structure, more CorPUs than in Word document.
2004-02-25 (HTMLContentTools):Created skeleton page

Author
Author 1: Thomas Migl E-Mail: migl@ims.tuwien.ac.at
Author 2: Chrisitan Ritzinger E-Mail: (empty)
Author 3: Eva Wohlfart E-Mail: (empty)
Author 4: (empty) E-Mail: (empty)
Author 5: (empty) E-Mail: (empty)
Organization: Technische Universität Wien; Institut für Softwaretechnik und Interaktive Systeme; Arbeitsgruppe für Interaktive Multimediale Systeme; http://www.ims.tuwien.ac.at/

Content

Einführung

1

Speicherbedarf PAL Fernsehen

  • PAL 167 Bildauflösung 576x720 (siehe Modul1)
  • Jedes Bild benötigt 1,08MB
  • 26 Sekunden unkomprimiertes Video auf eine CD
  • 3 Minuten unkomprimiertes Video auf eine 4,7 GB DVD

Redundanzen

  • Zeitliche Redundanzen - Ähnlichkeiten zwischen aufeinanderfolgende Bilder
  • Örtliche Redundanzen - Datenredundanz innerhalb eines Bildes

2

auto

Videosequenzen bestehen aus einer großen Anzahl aufeinander folgender Standbilder. Ab einer bestimmten Bildfrequenz (z.B. Pal-TV 25 Bilder/s) werden Bild-zu-Bild-Änderungen von unserem Gehirn als Bewegung wahrgenommen. Die Abfolge statischer Bilder suggeriert uns einen zeitlich kontinuierlichen Bildverlauf. Will man Videosequenzen digital speichern und wiedergeben, kann man jedes Bild separat kodieren und die Videosequenz als Folge dieser kodierten Bilder darstellen. Die sich daraus ergebende Datenmenge ist aber enorm.

Speicherbedarf für PAL Fernsehen

Ein Fernsehbild besteht aus 370.944 Pixel. Um die Farbinformationen jedes Pixels speichern zu können, benötigt man 8 Bit pro Grundfarbe. Daraus ergeben sich erforderliche 24 Bit pro Pixel. Für ein einziges Bild benötigte man dann 1,08 MB Speicherplatz, für eine Sekunde Film (ohne Ton) das 25-fache, nämlich 27MB. Auf einer CD könnte gerade eine 26 sekundenlange Filmsequenz gespeichert werden, auf einer DVD mit 4,7GB knappe 3 Minuten. reyn2004

Zeitliche und örtliche Redundanz

Ziel der MPEG 31 -Kodierung ist ist es nun, diese hohen Bitraten ohne wesentliche Qualitätseinbußen des Videosignals zu reduzieren. Dabei betrachtet man die Redundanzen einer Videosequenz sowohl in örtlicher als auch in zeitlicher Richtung. siko1997

  • Zeitliche Redundanzen ergeben sich dadurch, daß aufeinanderfolgende Bilder sich in der Regel sehr ähneln, beziehungsweise sogar ident sind. MPEG verwendet eine Prädiktionstechnik basierend auf Bewegungskompensation, die sich diese zeitlichen Redundanzen zu Nutze macht und mit Hilfe einer Interframe Kodierung wesentliche Datenreduktion erreicht.
  • Örtliche Redundanzen , das heißt Redundanzen innerhalb eines Bildes, werden durch eine Intraframe Kodierung ähnlich der der JPEG Kompression in Datenreduktion umgemünzt.

Differenzbild

1

auto

<math> <semantics> <mrow> <msub> <mi>g</mi> <mi>d</mi> </msub> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo><mo>=</mo><mrow><mo>|</mo> <mrow> <msub> <mi>g</mi> <mn>1</mn> </msub> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo><mo>&#x2212;</mo><msub> <mi>g</mi> <mn>2</mn> </msub> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo> </mrow> <mo>|</mo></mrow> </mrow> <annotation encoding='MathType-MTEF'> </annotation> </semantics> </math>

<math> <semantics> <mrow> <msub> <mi>g</mi> <mi>d</mi> </msub> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo> </mrow> <annotation encoding='MathType-MTEF'> </annotation> </semantics> </math> ... Grauwert des Pixels am Ort <math> <semantics> <mrow> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo> </mrow> <annotation encoding='MathType-MTEF'> </annotation> </semantics> </math> im Differenzbild
<math> <semantics> <mrow> <msub> <mi>g</mi> <mn>1</mn> </msub> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo> </mrow> <annotation encoding='MathType-MTEF'> </annotation> </semantics> </math> ... Grauwert des Pixels am Ort <math> <semantics> <mrow> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo> </mrow> <annotation encoding='MathType-MTEF'> </annotation> </semantics> </math> im Bild 1
<math> <semantics> <mrow> <msub> <mi>g</mi> <mn>2</mn> </msub> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo> </mrow> <annotation encoding='MathType-MTEF'> </annotation> </semantics> </math> ... Grauwert des Pixels am Ort <math> <semantics> <mrow> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo> </mrow> <annotation encoding='MathType-MTEF'> </annotation> </semantics> </math> im Bild 2

2

auto

Da aufeinanderfolgende Bilder einer Videosequenz gewöhlich einen ähnlichen Bildinhalt aufweisen, liegt es nahe, sich der Differenzkodierung zu bedienen. Es wird dabei nicht jedes Bild für sich kodiert. Vielmehr versucht man ein Bild aus einem vorhergehenden Referenzbild zu rekonstruieren. Anstelle der gesamten Bilder werden nur dessen Differenzen gegenüber einem Referenzbild gespeichert.

Algorithmus für Differenzbild

Zur Differenzbildung werden bei Video MPEG nur die Grauwerte der einzelnen Pixel verwendet. Die Farbwerte spielen dabei keine Rolle. Bild 2 ist das Bild1 unmittelbar folgende Bild.

<math> <semantics> <mrow> <msub> <mi>g</mi> <mi>d</mi> </msub> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo><mo>=</mo><mrow><mo>|</mo> <mrow> <msub> <mi>g</mi> <mn>1</mn> </msub> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo><mo>&#x2212;</mo><msub> <mi>g</mi> <mn>2</mn> </msub> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo> </mrow> <mo>|</mo></mrow> </mrow> <annotation encoding='MathType-MTEF'> </annotation> </semantics> </math>

mit

<math> <semantics> <mrow> <msub> <mi>g</mi> <mi>d</mi> </msub> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo> </mrow> <annotation encoding='MathType-MTEF'> </annotation> </semantics> </math> ... Grauwert des Pixels am Ort <math> <semantics> <mrow> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo> </mrow> <annotation encoding='MathType-MTEF'> </annotation> </semantics> </math> im Differenzbild
<math> <semantics> <mrow> <msub> <mi>g</mi> <mn>1</mn> </msub> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo> </mrow> <annotation encoding='MathType-MTEF'> </annotation> </semantics> </math> ... Grauwert des Pixels am Ort <math> <semantics> <mrow> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo> </mrow> <annotation encoding='MathType-MTEF'> </annotation> </semantics> </math> im Bild 1
<math> <semantics> <mrow> <msub> <mi>g</mi> <mn>2</mn> </msub> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo> </mrow> <annotation encoding='MathType-MTEF'> </annotation> </semantics> </math> ... Grauwert des Pixels am Ort <math> <semantics> <mrow> <mo stretchy='false'>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy='false'>)</mo> </mrow> <annotation encoding='MathType-MTEF'> </annotation> </semantics> </math> im Bild 2

Bild 1 und Bild 2 sind ident

1

Errechnung des Diferenzbildes

auto PC

auto PDA_Phone

Decodierung des Bildes 2 aus Bild 1 und Differenzbild

auto PC

auto PDA_Phone

2

Errechnung des Differenzbildes

Sind nun das Referenzbild und dessen nachfolgendes Bild absolut gleich und man bildet die Differenz der beiden, ergibt sich ein homogenes schwarzes Differenzbild (Pixelwerte sind alle gleich Null). Bild 1 ist das Referenzbild, Bild 2 das in der Videosequenz zeitlich darauffolgende. In der Videosequenz sitzt die Person regungslos auf ihrem Bürosessel. Referenzbild und das darauffolgende Bild sind absolut gleich. Das daraus resultierende Differenzbild ist schwarz.

auto PC

auto PDA_Phone

Kodierung gleicher Bilder

Bei der Kodierung der Videosequenz wird bei MPEG-Video nur das Referenzbild und das Differenzbild kodiert. Da eine schwarze Fläche nur wenig Information enthält, lässt sich dieses durch Lauflängenkodierung etc. auf ein Minimum von Daten komprimieren. Die Dateigröße von Bild 1 und Differenzbild entspricht fast nur mehr der Hälfte jener, als wenn man Bild 1 und Bild 2 kodierte. Sind die folgenden Bilder der Videosequenz Bild 3, Bild 4....auch ident mit Bild 1, so werden auch diese für die MPEG-Kodierung durch ihre Differenzbilder bezogen auf das Referenzbild 1 ersetzt. Dabei gilt, je mehr Bilder, desto höher die Kompression.

Decodierung des Bildes 2 aus Bild 1 und Differenzbild

Bei der Wiedergabe errechnet der MPEG-Dekoder Bild 2 aus dem Differenz- und dem Referenzbild.

auto PC

auto PDA_Phone

Bild 1 und Bild 2 nicht ident

1

Errechnung des Differenzbildes

auto PC

auto PDA_Phone

2

Errechnung des Differenzbildes

Die Person bewegt sich mit ihrem Bürosessel Richtung Schreibtisch. Bild 2 ist dabei wieder das dem Referenzbild Bild 1 zeitlich folgende Bild. Das resultierende Differenzbild ist nicht mehr eine homogene schwarze Fläche, sondern es sind je nach dem Ausmaß der Bewegung Strukturen im Bild sichtbar. Überall dort, wo durch Bewegung verursachte veränderte Bildinhalte im Bild 2 gegenüber Bild 1 auftreten (Person und Sessel), sind im Differenzbild Strukturen erkennbar. Bildbereiche, in denen keine Veränderungen stattgefunden haben, bleiben auch hier schwarz (Hintergrund).

auto PC

auto PDA_Phone

Kodierung nicht identer Bilder

Da in diesem Fall das Differenzbild mehr Information als eine homogene schwarze Fläche enthält, kann das Differenzbild nicht mehr so stark komprimiert werden. Dabei gilt, je mehr Bewegung, desto mehr Information und desto schlechter komprimierbar. Die Technik der Kodierung des Differenzbildes kann in diesem Fall nicht mehr so eine hohe Kompression erzielen.

Bewegungsvektor, Prädiktionsbild, Prädiktionsfehler

1

Bewegungsvektor

  • Bewegungsvektor
    • Gibt an, wohin ein bestimmter Bildausschnitt aus Bild 1 im Bild 2 verschoben ist

Veranschaulichung Bewegungsvektor PC

Veranschaulichung Bewegungsvektor PDA_Phone

Prädiktionsbild

  • Blockmatching (siehe Bewegungskompensation)
  • Bewegungskompensation (siehe Bewegungskompensation)
  • Prädiktionsbild = Originalbild - bewegungskompensiertes Referenzbild
  • Idealfall - Prädiktionsbild ist einheitlich schwarz

Prädiktionsfehler

Differenzbild zwischen Prädiktionsbild und Origonalbild

2

Bewegungsvektor

Um möglichst ein schwarzes homogenes Differenzbild auch im Fall einer Bewegung zu erhalten, arbeitet man bei MPEG-Video mit Bewegungsvektoren. Der Bewegungsvektor gibt an, wohin sich ein bestimmter Bildbreich aus Bild 2 relativ zu Bild 1 verschoben hat. (siehe Bewegungskompensation)

Veranschaulichung Bewegungsvektor PC

Die Abbildung veranschaulicht den Bewegungsvektor, der die örtliche Änderung der Lehne des Bürosessels beschreibt.

Veranschaulichung Bewegungsvektor PDA_Phone

Prädiktionsbild

Man verwendet nun für die Erzeugung des Differenzbildes statt des Referenzbildes das durch Bewegungskompensation errechnete Prädiktionsbild. siehe Bewegungskompensation) Der MPEG-Standard benützt zur Erzeugung eines Prädiktionsbildes das Block-Matchingverfahren (siehe Bewegungsschätzung und -kompensation) Bei optimaler Bewegungskompensation ist das Differenzbild wieder einheitlich schwarz, was eine optimale Komprimierung bewirkt. Das Originalbild kann in diesem idealen Fall allein durch Kenntnis des Referenzbildes und den Bewegungsvektoren originalgetreu rekonstruiert werden.

Prädikitonsfehler

Da es sich bei den Bewegungsvektoren um Schätzwerte handelt, werden Prädiktionsbild und Originalbild je nach Qualität der Schätzung mehr oder weniger von einander abweichen. Um das Originalbild trotzdem verlustlos rekonstruieren zu können, muss neben Referenzbild und Bewegungsvektoren zusätzlich der Prädiktionsfehler bekannt sein. Der Prädiktionsfehler ist dabei das Differenzbild von Originalbild und Prädiktionsbild.

Group of Pictures siko1997 stru2002,192

1

auto

  • GOP- Group of Pictures
  • Eine MPEG Videosequenz besteht aus Aneinanderfolge immer der selben GOP
  • Struktur der GOP frei wählbar

GOP kann enhalten:

  • Nur I-Frames - Beispiel: IIIIIIIIIIIII
  • I- und P-Frames - Beispiel: IPPPPPPPP
  • I-, P- und B-Frames - Beispiel: IBBPBBP

Kodierung einer GOP PC

Kodierung einer GOP PDA_Phone

geschlossene/offene GOP

  • offene GOP
    • Beginnt mit I-Frame, endet mit P oder B Frame
    • schlechte Editierbarkeit, gute Kompression
  • geschlossene GOP -
    • Beginnt und endet mit I-Frame
    • gute Editierbarkeit, schlechtere Kompression

Geschlossene/offene GOP

  • offene GOP
    • Videostream - IBBPBBPIBBPBBPIBBPBBPIBBPBBP etc.
    • offene GOP - IBBPBBP
  • geschlossene GOP
    • Videostream IBBPBBIIBBPBBIIBBPBBIIBBPBBI etc.
    • geschlossene GOP: IBBPBBI

 

2

auto

Die GOP (Group of Pictures) beschreibt die Anordnung der im MPEG-Standard definierten Frametypen (siehe Frames inMPEG Video) in einer MPEG-Videosequenz. Jede Gruppe muß mit einem I-Frame beginnen. Anzahl, Typen und Anordnung die innerhalb einer GOP enthalten sind, kann frei gewählt werden. Unterschiedliche GOPs sind jeweils für verschiedene Anwendungen geeignet.

GOP nur mit I-Frames

Nur mäßige Kompression. Bietet höchsten Grad an Editierbarkeit, da man auf jedes einzelne Bild zugreifen kann.

GOP nur mit I-Frames

IIIIIIIIIII

GOP mit I und P- Frames

Ergibt bessere Kompression, aber eingeschränkte Editierbarkeit.

GOP mit I und P- Frames

IPPPPPPPPPPPIPPPPP etc.

GOP mit I,P und B-Frames

Für maximale Kompression. Beim Einsatz von B-Frames müssen allerdings einige Dinge beachtet werden. Sie müssen so lange zwischengespeichert werden, bis das nächste P oder I Frame kommt. Das bedeutet neben erhöhtem Speicheraufwand eine Zeitverzögerung. Diese Tatsache machen diese GOP Struktur für Videotelefonie und anderen Echtzeitanwendungen unbrauchbar. Weiters ist zu bedenken, je mehr B-Frames zwischen einem I und einem P-Frame liegen, umso mehr verschlechtert sich durch den vergrößerten Zeitabstand die Prädiktionsmöglichkeit des P-Frames.

GOP mit I, P und B Frames

IBBPBBP

Kodierung einer GOP PC

Die Grafik zeigt exemplarisch eine GOP. Die I, P und B Frames enthält. Weiters ist für dieses Beispiel die Kodierungsabfolge angegeben.

Kodierung einer GOP PDA_Phone

Die Grafik zeigt exemplarisch eine GOP. Die I, P und B Frames enthält. Weiters ist für dieses Beispiel die Kodierungsabfolge angegeben.

Offene/geschlossene GOPs

Offene GOP

In einer "offenen GOP" ist das letzte Frame stets ein B-Frame. Da das Schluss B-Frame dieser GOP nur mit Hilfe des Start I-Frames der nächsten GOP encodet werden kann ist eine direkte Editierbarkeit eines solchen Datenstroms nicht möglich.

Offene GOP

Videostream: IBBPBBPIBBPBBPIBBPBBPIBBPBBP etc.

offene GOP: IBBPBBP

Geschlossene GOP

Eine "geschlossene GOP" endet stets mit einem P-Frame. Ein solcher MPEG-Datenstrom kann editiert werden. Eine Videosequenz kann am Enpunkt jeder GOP geschnitten werden, ohne das Information verloren geht.

Geschlossene GOP

Videostream: IBBPBBIIBBPBBIIBBPBBIIBBPBBI etc.

geschlossene GOP: IBBPBBI

3

Downloads

untere www.tmpgenc.net kann man einen MPEG Encoder downloaden, mit dessen Hilfe man in den Kodierungsvorgang in Bezug auf GOP, Vidoepuffergröße, Quantisierungstabelle etc. sehr genau eingreifen kann.

Videopuffer

1

Wozu dient der Videopuffer?

  • trotz unterschiedlicher Bildänderungen konstante Bitrate des MPEG Datenstroms
  • Eingang Puffer - unterschiedlich hohe Bitrate
  • Ausgang Puffer - konstanter MPEG Strom

Funktionsweise

  • Videopuffer beinhaltet Datenspeicher
  • Vidoepuffer regelt die Quantisierungsgenauigkeit des Quantisierers
  • wenn Eingangsdatenrate gering, Puffer geleert
  • wenn Datenrate hoch, Puffer aufgefüllt
  • um Überlaufen des Puffers zu vermeiden, wird Quantisierungsgenauigkeit reduziert

Puffergröße

  • Vorteil großer Puffer
    • Je größer, desto bessere Abfederung von Datenspitzen
  • Nachteil zu großer Puffer
    • Steigende Hardwarekosten
    • Zeitverzögerung

Videopuffergröße im MPEG-Standard

  • MPEG Standard definiert Maximalgröße
  • Größe kann individuell angepasst werden
  • größe wird im Datenstrom mitgeschickt

2

Wozu dient der Videopuffer?

Der Videopuffer ist dafür verantwortlich, dass eine Videosequenz unabhängig von Bildinhalt, der Art der Bewegungen usw...in einem MPEG-Datenstrom konstanter Datenrate kodiert wird.

Funktionsweise des Videopuffers

Ein besonderes Feature von MPEG-1 ist es, dass unabhängig vom Bildinhalt die Datenstromrate immer konstant ist. Diese Aufgabe übernimmt der Videopuffer, der über eine Rückkopplung Einfluss auf die Quantisierungsgröße der DCT 242 -Koeffizienten nimmt. Der Videopuffer selbst ist nichts anderes, als ein Zwischenspeicher. An seinem Ausgang werden die Daten in der vorgeschriebenen konstanten Datenrate ausgelesen und an den Decoder gesandt. Ist eingangseitig eine erhöhte Datenrate, wird der Puffer aufgefüllt. Um ein Überlaufen des Puffers zu vermeiden, wird eine gröbere Quantisierung der Koeffizienten gewählt, was eine Verschlechterung der Bildqualität aber auch eine Reduktion des Datenstromes bewirkt. Liegt der Datenstrom unterhalb der gewünschten Ausgangsrate, sinkt der Füllstand des Puffers. Jetzt wird die Quantisierung verfeinert, die Bildqualität und damit wieder die Datenrate am VP 524 -Eingang erhöht.

Puffergröße

Kriterien zur Dimensionierung des Puffers:

  • je größer man seine Speicherkapazität wählt, umso besser können Datenratenspitzen abgefedert werden und somit die Artefakte vermindert werden
  • aber auch umso größer wird der physikalische Speicherbedarf für Kodierer und Decoder. Neben der komplexen Hardwareanforderung bringt eine zu große Pufferung auch eine merkliche Zeitverzögerung mit sich. Echtzeitanwendungen verlangen daher nach einen möglichst klein dimensionierten Videopuffer.

Videopuffergröße im MPEG-Standard

MPEG Standard definiert einen Maximalwert für die Größe des Videopuffers. Jeder MPEG-Decoder muss über einen Puffer dieser Größe verfügen. Auf Encoderseite steht es dem Produzenten frei, auch eine kleinere Puffergröße zu verwenden. Dazu wird im Encoder eine virtuelle Puffergröße angegeben. Diese wird mit dem MPEG-Datenstrom mit übertragen.

3

Downloads

Unter http://www.tmpgenc.net/ kann man einen MPEG Encoder downloaden, mit dessen Hilfe man in den Kodierungsvorgang in Bezug auf GOP, Vidoepuffergröße, Quantisierungstabelle etc. sehr genau eingreifen kann.

MPEG Kodierer/Decoder

1

Blockschaltbild PC

Blockschaltbild PDA_Phone

2

Blockschaltbild

Das Blockbild zeigt Prinzip eines MPEG- Encoders und Decoders. Es wird dabei jeder 8x8-Pixel Block separat verarbeitet. siko1997

Abbildung: MPEG Codec PC

Blockschaltbild PDA_Phone

Blockschaltbild MPEG Codec

Kodierung I Frame

Das erste Bild, das kodiert wird ist ein I-Frame. Mit dem ersten Block beginnend wird jeder Block einer DCT unterzogen, dessen resultierenden Koeffizienten quantisiert, und nach Entropykodierung (im Blockbild VLC) an den Eingang des Videopuffers gelegt. Je nach Beschaffenheit des soeben kodierten Bildblockes ist die Datenrate am Eingang des VB verschieden groß. Sind im Bildblock starke Konturen enthalten, wird die Datenrate groß sein, ist nur wenig Bildinhalt enthalten, wird sie klein sein. Ein besonderes Feature von MPEG-1 ist nun aber, dass unabhängig vom Bildinhalt die Datenstromrate immer konstant ist.

Kodierung P-Frame

Für die Kodierung eines P-Frames muss zuerst das vorangegangene I- oder P-Frame in einem Speicher (FS) abgelegt werden. Durch Bewegungsschätzung wird für jeden 16x16-Pixel Makroblock der Bewegungsvektor eruiert. Dieser wird kodiert an den Decoder weitergesendet. Der Prädiktionsfehler jedes Makroblockes ergibt sich aus dem Differenzbild Original- Prädiktionsbild. Jeder Makroblock wird in vier 8x8-Pixel Luminanzblöcke und in einer der Anwendung entsprechenden Anzahl an Chrominanzblöcken (für MPEG-1 je 1, für MPEG-2 je 1,2 oder 4) unterteilt. Für jeden dieser 8x8-Pixel-Blöcke wird die selbe Prozedur wie die bei I-Frame Kodierung angewandt. Für die Quantisierungssteuerung gilt, daß für jeden Makroblock eine eigene Quantisierungsgenauigkeit eingestellt werden kann.

Kodierung B-Frame

Für die Kodierung eines B-Frame müssen das vorangegangene und das nachfolgende Bild im Speicher FS abgelegt werden. Es werden zuerst die beiden Bewegungsvektoren pro Makroblock, dann alle 3 möglichen Prädiktionsbilder (vor-, rückwärtsprädiziert oder gemittelt) und deren Prädiktionsfehler berechnet. Für jeden Makroblock wird jener Vektor zur darauffolgenden Kodierung verwendet, der den geringsten Prädiktionsfehler ergeben hat.

Applet Grundprinzip Videokomprimierung

1

Applet Bewegungskompensation: Vollbild applet-m4_05_29_02

Online Alternative

2

Applet Bewegungskompensation applet-m4_05_29_02

Dieses Applet zeigt, wie zeitliche Redundanz zweier aufeinanderfolgender Bilder innnerhalb einer Videosequenz durch Errechen von Bewegungsvektoren und dazugehörigen Prädiktionsfehler von MPEG Encodern beseitigt werden. Es kann eine Videosequenz gewählt werden, eine gewünschte Costfunction (siehe Lerneinheit Bewegungsschätzung und-kompensation, Teil 1) und Suchmethode (siehe Lerneinheit Bewegungsschätzung und-kompensation, Teil 2).

Applet Blockmatching (Vollbild)

Mit dem Applet Bewegungskompensation, Reiter Vollbild, kann man nachvollziehen, wie sich bei zwei aufeinanderfolgenden Bilder einer Videosequenz sich die Bewegungsvektoren und der Prädiktionsfehler ergeben. Man kann eine bestimmte Videosequenz, die Costfunction und die Suchmethode, die bei der Blocksuche verwendet werden sollen, wählen . Angezeigt werden die errechneten Bewegungsvektoren, das Differenzbild (durch Schaltfläche Change wahlweise bewegungskompensiert oder nicht bewegungskompensiert), und ein Bild, das nur anhand der Bewegungsvektoren rekonstruiert worden ist (ohne Prädiktionsfehler). Der Prädiktionsfehler ist das Differenzbild bei Bewegungskompensation. Für Karteireiter Makro siehe Lerneinheit Bewegungsschätzung und -kompensation 2.

Instruktionen

  1. Wähle den Karteireiter Vollbild.
  2. Wähle ein Bild aus der Auswahlliste und bestätige dieses mit dem rechts davon befindlichen _Laden Button.
  3. Selektiere nun den von Dir gewünschten Algorithmus und die passende Funktion.
  4. Betätige nun den _Start Button zur Anzeige des Ergebnisses.
    1. Oberes linkes Bild ist das I Frame
    2. Im rechten oberen Bild (Originalbild) werden die errechneten Bewegungsvektoren angezeigt
    3. im linken unteren wird das Bild gezeigt, das sich aus dem I-Frame und den Bewegungsvektoren (ohne Prädiktionsfehler) ergibt
    4. Das rechte untere Bild zeigt wahlweise (mittels Wechseln-Schalter)
      1. Das Differenzbild zwischen Originalbild und linkem Bild (Prädiktionsfehler bei Bewegungskompensation))
      2. Das Differenzbild Originalbild und I-Frame (keine Bewegungskompensation) wähle
  5. Wähle die verschiedenen Videosequenzen
  6. Betrachte die Bewegungsvektoren
  7. Verifiziere durch hin und herschalten des Wechsel- Schalters die Effektivität der Bewegungskompensation zur Reduktion von zeitlicher Redundanz.
  8. Für welche Bildsequenz funktioniert die Bewegungskompensation besonders gut, für welche weniger und für welche überhaupt nicht? Warum ist das so?
  9. Beachte Bewegungsvektoren an konturlosen, einfärbigen Flächen. Warum ergeben sich hier Bewegungsvektoren, auch wenn keine Bewegung? Hat dieser Umstand einen Einfluss auf die Qualität der Komprimierung?

Bildsequenzen, die zur Auswahl stehen

  • Bewegung
    • Hier wird die Maus am rechten Bildschirmrand um ca 25 Pixel nach links bewegt.
  • Drehung
    • Bei dieser Bilderserie wurde die Kamera um die eigene Achse gedreht
  • Helligkeit
    • Diese beiden Bilder weisen unterschiedliche Helligkeitswerte auf
  • Objektdrehung
    • Das Objekt in der Mitte wird gedreht.
  • Verschiebung
    • Das zweite Bild wird 3 Pixel nach links unten verschoben
  • Objektverschiebung (Verschiebung 2)
    • Der Elefant wandert um 3 Pixel nach links, sonst bleibt das Bild gleich.

Online Alternative

MPEG-Video Bitratensteuerung

1

CBR/VBR

  • MPEG kennt zwei Modi
    • CBR 449-Kodierung
      • Bitrate bleibt immer gleich
    • VBR 450 -Kodierung
      • hohe Bitrate bei viel Bewegung, niedrige Bitrate bei wenig Bewegung
      • Es ergibt sich durchschnittliche Bitrate
  • Vergleich CBR/VBR
    • VBR bessere Qualität als CBR
    • VBR für Videospeicherung sehr gut geeignet (z.B. Video DVD)
    • Broadcasting, Videokonferenz, Streaming etc. nur mit CBR möglich

Applet: MPEG-Video Bitratensteuerung CBR/VBR applet-m4_05_29_01

2

CBR/VBR

Bei MPEG-Videokodierung wird die Bitrate vom Encoder aktiv gesteuert. Bisher wurde nur der Fall betrachtet, dass der Encoder unabhängig vom Videoinhalt die Datenrate immer konstant hält. MPEG Video erlaubt aber auch einen Betriebsmodus, in welchem der Encoder im Bedarfsfalle die Datenrate erhöhen bzw. reduzieren kann. Diese Technik bezeichnet man als VBR 450 - Kodierung (im Gegensatz zur CBR 449-Kodierung). Der Encoder kann nun bei Szenen, die viel Bewegung beinhalten, die Datenrate dementsprechend erhöhen, bei Szenen, die eher statisch sind, die Datenrate reduzieren. Es ergibt sich dadurch eine durchschnittliche Datenrate, die bei den meisten Decoder die Benützerin vorgeben kann. In der Regel sind VBR kodierte Videos qualitativ besser als CBR kodierte, obwohl die durchschnittliche Datenrate der VBR-Kodierung gleich der Datenrate der CBR- Kodierung ist. Verwendet wird der VBR Modus zum Beispiel zur Speicherung von Videomaterial auf DVD 311 . Für Broadcasting-Anwendungen, Videokonferenzen, Streaming etc. hingegen ist die VBR Kodierung nicht geeignet, da sich hier die Datenrate nach der zu Verfügung stehenden Bandbreite des Nachrichtenkanals ergibt, aber diese nicht variiert werden kann.

Applet: MPEG-Video Bitratensteuerung CBR/VBR applet-m4_05_29_01

Beschreibung

In diesem Applet werden Videodaten und die grafische Repräsentation der Bitrate und Quantisierung dargestellt. Zu Beginn erfolgt die Videoauswahl, es stehen 6 Videos zur Verfügung. Von jedem Video gibt es jeweils eine VBR und eine CBR Variante, die gleichzeitig abgespielt werden. Unter den Videobildern befinden sich die Grafiken, bei denen auch die Peaks und Durchschnittswerte für Bitrate und Quantisierung angegeben sind. Mittels Scroll-Leiste kann man beliebige Videostellen anwählen.

Instruktionen

Gehen Sie die verschiedenen Videos durch und beobachten Sie, wodurch Quantisierung und Bitrate beeinflusst werden.

  • Die Videos wurden mit MPEG-1 kodiert. Wo treten besondere Probleme auf? Welche Videos kodiert MPEG-1 einwandfrei, aber welche Videos weisen deutliche Blockartefakte auf und wodurch werden diese verursacht?
  • Achten Sie auch auf den Zusammenhang zwischen Quantisierung und Bitrate. Was passiert, wenn die Bitrate ansteigt?
  • Wo liegen die Unterschiede zwischen CBR- und VBR-Kodierung? Bei welchen Videos sind durch VBR-Kodierung deutliche Qualitätsverbesserungen erreicht worden?
  • Finden Sie Videostellen, wo auch VBR keine Besserung gegenüber der CBR Kodierung bringt
    • Warum ist das so?
  • Warum liegt der Quantisierungsfaktor bei der Kodierung mit konstanter Bitrate viel höher als bei VBR?


Notes
(empty)