Codierung von Bildern mit mehreren Komponenten


next up gif
Next: Das JPEG Interchange Up: Grundlegende Techniken im Previous: Arithmetische Codierung

Codierung von Bildern mit mehreren Komponenten

Der von mittels JPEG erzeugte Datenstrom enthält ein einziges Bild, dabei kann ein Bild aus bis zu 255 Komponenten zusammengesetzt sein. Die interne Darstellung einer Komponenten entspricht einem zweidimensionalen Array von Bildpunkten mit einer horizontalen und einer vertikalen Auflösung, welche aber von Komponente zu Komponente verschieden sein können. Am gebräuchlichsten sind bei Farbbildern die drei Komponenten Y, Cb, und Cr, es sind aber noch weitere denkbar, wie zum Beispiel die Durchsichtigkeit eines Bildes usw. Auch die Auflösungen der drei Farbbestandteile sind nicht gleich. So wird beispielsweise das Verhältnis Y:Cb:Cr durch Farbsubsampling mit 2 x 2 auf 2:1:1 reduziert, und durch 4 x 4 Farbsubsampling auf 4:1:1.

Für jede Komponente werden horizontale und vertikale Auflösungsfaktoren und definiert, indem man jeweils das Verhältnis der horizontalen und vertikalen Auflösungen bildet. Ist nun die Gesamtauflösung des Bildes und , so ergeben sich die Auflösungen der Komponenten i wie folgt:

und sind dabei die größten Werte für und . Diese Auflösungsfaktoren werden für jede Komponente im frame header (s. gif) angegeben.

Während die DCT-basierten Modi Blöcke zu 8 x 8 Bildpunkten bearbeiten, gehen die verlustlosen Modi Pixel für Pixel vor. JPEG definiert daher sogenannte Dateneinheiten (data units, DU). Im ersteren Fall ist dies ein 8 x 8 Block, im zweiten nur ein Pixel.

Für die Codierungsprozeduren werden Dateneinheiten zu minimal-codierten Einheiten (minimal coded units, MCU) zusammengefaßt. Hat ein Bild nur eine Komponente werden diese der Reihe nach codiert und eine MCU entspricht einer Dateneinheit. Umfaßt ein Bild jedoch mehrere Komponenten werden diese aus den oben genannten Gründen überlappt codiert. Eine MCU ist hier ein Paket mit jeweils x Dateneinheiten von jeder Komponente i. Abbildung gif veranschaulicht diesen Sachverhalt anhand von zwei kleinen Bildern. In Abbildung gif a) ist für den Y-Block und für die anderen, in Abbildung gif b) ist für den Y-Block.

  
Figure: Überlappte Codierung, MCUs

Die Entropie-Codierer verarbeiten nur ganze MCU. Entspricht die Auflösung eines Bildes nicht einem ganzzahligen Vielfachen von MCU, werden jeweils die letzten Spalten bzw. Zeilen wiederholt codiert. Der Decodierer löscht diese Redundanz wieder.


next up gif
Next: Das JPEG Interchange Up: Grundlegende Techniken im Previous: Arithmetische Codierung



Dietmar Baumstark
Tue May 2 11:16:33 MET DST 1995