You are on page 1of 27

Vorlesung Bildverarbeitung

Prof. Dr.-Ing. B. Lang FH Osnabrck

Bildreprsentation .............................................................................................................. 2 2.1 Eigenschaften digitaler Bilder.................................................................................... 2 2.1.1 Abtastraster......................................................................................................... 2 2.1.2 Nachbarschaft..................................................................................................... 2 2.1.3 Distanzmae ....................................................................................................... 3 2.1.4 Ortsauflsung ..................................................................................................... 4 2.1.5 Randbehandlung................................................................................................. 5 2.2 Farbdarstellung........................................................................................................... 7 2.2.1 Menschliches Sehen ........................................................................................... 7 2.2.2 Das CIE-1931 System ........................................................................................ 8 2.2.3 Anzeigen von Farben ....................................................................................... 12 2.2.4 HSV-Darstellung.............................................................................................. 13 2.2.5 Farbdifferenz-Darstellungen ............................................................................ 15 2.2.6 Abtastformate fr Digitales Video ................................................................... 17 2.3 BMP-Dateiformat..................................................................................................... 19 2.4 Bildpyramiden.......................................................................................................... 21 2.4.1 Gausspyramide ................................................................................................. 21 2.4.2 Laplacepyramide .............................................................................................. 22 2.5 Bildsequenzen .......................................................................................................... 23 2.5.1 Vollbildsequenzen............................................................................................ 24 2.5.2 Interlaced-Sequenzen ....................................................................................... 24 2.5.3 Differenzielle Kodierung.................................................................................. 25 2.6 Histogramm.............................................................................................................. 25

2 Bildreprsentation
Bevor mit der Verarbeitung von Bildern begonnen werden kann, ist es notwendig, sich mit den vielfltigen Reprsentationen und Eigenschaften von Bilddaten vertraut zu machen. Dieser Abschnitt gibt einen berblick ber verschiedenartige Bildreprsentationen, die bei der Bildverarbeitung zur Anwendung kommen.

2.1 Eigenschaften digitaler Bilder


Digitale Bilder besitzen vielfltige Eigenschaften, die von der Bildaufnahme und von den Verarbeitungsalgorithmen bestimmt sind. In diesem Abschnitt sollen wichtige Eigenschaften vorgestellt werden, auch wenn sich das Verstndnis teilweise erst durch die zugehrigen Algorithmen voll erschliet.

2.1.1 Abtastraster
Das Abtastraster wird bei der Bildaufnahme durch den verwendeten Sensor vorgegeben. Im Laufe der Verarbeitung knnen Bilder durch geeignete Algorithmen neu abgetastet werden, so dass sich neue Abtastraster ergeben. Typische Abtastraster der Bildverarbeitung sind: Quadratisch: Dieses Raster wird bevorzugt in der industriellen Bildverarbeitung verwendet, da es gleichen Abstand in horizontaler- und vertikaler Richtung aufweist. Geometrische Messergebnisse brauchen dann keine richtungsabhngige Kalibrierung. Rechteckig: Dieses Raster wird insbesondere Videodaten verwendet. Pixel besitzen dort beispielsweise ein Seitenverhltnis von 4:3. Dies spart Speicherplatz in der Zeilenrichtung. Bei geometrischen Transformationen (z.B. Bildrotation) und geometrischer Bildauswertung muss diese Asymmetrie jedoch bercksichtigt werden. Fr die Bildverarbeitung ist dieses Raster nicht gut geeignet. Es ist sinnvoll, solche Bilder vor der Verarbeitung mit quadratischem Raster neu abzutasten. Hexagonal: Das hexagonale Raster hat die angenehme Eigenschaft, dass ein Pixel gleichen Abstand zu allen seinen Nachbar-Pixeln besitzt.
Beispiel: Abtastraster

Quadratisches Raster

Rechteckiges Raster

Hexagonales Raster

2.1.2 Nachbarschaft
Die Nachbarschaft beschreibt die Beziehung zwischen den Pixeln eines Bilds. Die Nachbarschaft muss in Abhngigkeit vom gewhlten Raster definiert werden. Im Folgenden sollen nur die fr die Bildverarbeitung geeigneten quadratischen und hexagonalen Raster betrachtet werden Beim hexagonalen Raster ist die Nachbarschaft eindeutig. Jeder Pixel besitzt 6 Nachbarn und alle Nachbarn besitzen den gleichen Abstand. Bei quadratischem Raster sind auf jeden Fall die Pixel links, rechts, ober- und unterhalb vom aktuellen Pixel seine Nachbarn. Dies wird als 4er-Nachbarschaft beschrieben. Werden auch die diagonal angrenzenden Pixel zur Nachbarschaft hinzugenommen, erhlt man die 8er-Nachbarschaft.

Beispiel: Nachbarschaften

Quadratisches Raster 4er-Nachbarschaft

Quadratisches Raster 8er-Nachbarschaft

Hexagonales Raster Nachbarschaft

Nachbarschaft und Objekte in Binrbildern Bei Binrbildern (nur Pixelwerte 0 oder 1) werden Objekte ber die Nachbarschaft definiert. Alle Pixel mit Wert 0 bilden den Hintergrund des Bilds. Alle Pixel mit Wert 1 gehren zu den Objekten des Bilds. Die Menge aller Objektpixel, zwischen denen direkt oder indirekt eine Nachbarschaft besteht, bilden jeweils ein Objekt. Bei quadratischem Raster fhrt diese Objektdefinition zu Mehrdeutigkeiten. Abhngig von der gewhlten Nachbarschaft knnen unterschiedlich viele Objekte im Bild existieren.
Beispiel: Nachbarschaft und Objektanzahl

2 Objekte

1 Objekt

Quadratisches Raster 4er-Nachbarschaft

Quadratisches Raster 8er-Nachbarschaft

Durch die Definition binrer Objekte ber Nachbarschaft ergibt sich bei quadratischem Raster ein Problem im Hintergrund: Nimmt man 4er-Nachbarschaft der Objektpixel an, so sind diagonal angeordnete Objektpixel nicht benachbart. Dann mssen aber diagonal angeordnete Hintergrundpixel an dieser Stelle eine Verbindung besitzen. Damit muss im Hintergrund eine 8er-Nachbarschaft existieren. Bei 8er-Nachbarschaft sind diagonal angeordnete Objektpixel benachbart. Somit besitzt der Hintergrund senkrecht dazu keine Verbindung. Er weist somit eine 4er-Nachbarschaft auf.

Quadratisches Raster 4er-Nachbarschaft

Quadratisches Raster 8er-Nachbarschaft

Bei Binrbildern mit quadratischem Raster nimmt man somit fr Objektpixel und Hintergrund eine unterschiedliche Art der Nachbarschaft an: Meistens 8er-Nachbarschaft fr Objekte und 4er-Nachbarschaft fr Hintergrund, gelegentlich auch umgekehrt.

2.1.3 Distanzmae
Bei zwei gegebenen Bildpunkten a=(ax,ay) und b=( bx,by) interessiert die Distanz zwischen diesen Punkten. Dazu gibt es verschiedene Mae, die in Algorithmen der Bildverarbeitung Verwendung finden: Euklidsche Distanz City-Block Distanz Schachbrett-Distanz Euklidsche Distanz Die Euklidsche Distanz De(a,b) berechnet die direkte Verbindung (Luftlinie) zwischen den beiden Punkten: De (a, b) = (a x bx ) 2 + (a y by ) 2 (1)

City-Block Distanz Die City-Block Distanz (Manhattan Distanz, absolute Distanz) Dc(a,b) summiert den horizontalen und vertikalen Abstand zwischen den beiden Punkten: Dc (a, b) =| a x bx | + | a y by | Sie ist zur Distanzmessung bei 4er-Nachbarschaft geeignet. Schachbrett-Distanz Die Schachbrett-Distanz (Maximum-Distanz) Ds(a,b) sucht das Maximum aus horizontalem und vertikalem Abstand zwischen den beiden Punkten: Ds ( a, b) = max (| a x bx |, | a y by |) Sie ist zur Distanzmessung bei 8er-Nachbarschaft geeignet.
Beispiel: Vergleich der Distanzen
Euklidsche Distanz ay by ax bx ay by ax bx City-Block Distanz ay by ax bx Schachbrett-Distanz

(2)

(3)

Beispiel: Distanzen zu einem Bezugspunkt


City-Block Distanz 5 4 3 4 5 4 3 2 3 4 3 2 1 2 3 2 1 0 1 2 3 2 1 2 3 4 3 2 3 4 5 4 3 4 5 Schachbrett-Distanz 3 3 3 3 3 2 2 2 2 2 2 1 1 1 2 2 1 0 1 2 2 1 1 1 2 2 2 2 2 2 3 3 3 3 3

2.1.4 Ortsauflsung
Eine Szene wird mittels Optik in die Ebene des Bildsensors projiziert. Der Bildsensor wandelt den auf seine Sensorflche projizierten Ausschnitt in ein Bild, welches in jeder seiner Dimensionen (x,y bei zweidimensionalen Bildern) eine vom Sensor abhngige, feste Anzahl von Pixeln aufweist. Die Ortsauflsung eines Bildes kann somit durch die Anzahl der Pixel in x- und in y-Richtung angegeben werden.
Beispiel: Bild in unterschiedlichen Ortsauflsungen

128128 Pixel

6464 Pixel

3232 Pixel

Dem Bild kann zustzlich in jeder Dimension eine Gre pro Pixel zugeordnet werden. Diese Gren beschreiben die rumliche Ausdehnung des Pixels in der realen Welt.
Beispiel: Grenangaben fr Pixel Bei einfach gescannten Bildern wird meist eine Auflsung von 300 dpi in beiden Richtungen x,y verwendet. Dies bedeutet, pro Inch (2,54 cm) wurden 300 Pixel aufgelst. Umrechnung ergibt eine Hhe und Breite der Pixel von etwa 0,08467 mm.

2.1.5 Randbehandlung
Bei der Verarbeitung von Bildern mit lokalen Operatoren wird der Wert jedes Pixels im Ergebnisbild aus lokal benachbarten Pixeln (lokale Umgebung, Bildfenster) des Quellbilds berechnet. Die Positionen der Quellpixel sind somit relativ zum aktuellen Pixel definiert.
Quellbild Ergebnisbild

py

Algorithmus

py

Aus einer lokalen Umgebung des Quellbilds um Position p=(px,py) wird der Pixel am Position p im Ergebnisbild berechnet.

px

px

Probleme ergeben sich bei diesem Vorgehen am Rand des Bilds, da dort bentigte Quellpixel auerhalb des Quellbilds liegen.
Quellbild

py

Ein Teil der lokalen Umgebung liegt an dieser Position auerhalb des Quellbilds
px

Zur Lsung des Randproblems gibt es unterschiedliche Vorgehensweisen. Es hngt oft vom Algorithmus ab, welches Vorgehen sinnvoll ist. Mgliche Vorgehensweisen sind: Konstanter Wert: Pixel auerhalb des Rands auf einen konstanten Wert k setzen: k k k k k k k k k Vorteil dieses Vorgehens ist, dass die Pixelwerte k k k k k k k k k auerhalb des Bilds einfach zu ermitteln sind. k k 11 12 13 14 15 k k Bei manchen Algorithmen wirkt es sich nachteilig aus, k k 21 22 23 24 25 k k dass k nichts mit dem Bildinhalt zu tun hat. Andere k k 31 32 33 34 35 k k Algorithmen knnen durch geeignete Wahl von k auf k k k k k k k k k k k k k k k k k k den Bereich des Bilds beschrnkt werden. Randpixel: Das Bild mit den Pixelwerten des Bildrands auerhalb fortsetzen.
11 11 11 12 13 14 15 15 15 11 11 11 12 13 14 15 15 15 11 11 11 12 13 14 15 15 15 21 21 21 22 23 24 25 25 25 31 31 31 32 33 34 35 35 35 31 31 31 32 33 34 35 35 35 31 31 31 32 33 34 35 35 35

Vorteilhaft ist, dass die Pixel auerhalb des Bildes lokale Nhe zum Bildinhalt besitzen. Nachteilig ist, dass Randpunkte sehr stark gewichtet werden.

Zyklisch verschieben: Bild auerhalb des Rands zyklisch verschoben fortsetzen. Vorteilhaft ist die einfache Ermittlung der Pixel 24 25 21 22 23 24 25 21 22 auerhalb des Bilds. Eine Modulo-Operation auf den 34 35 31 32 33 34 35 31 32 14 15 11 12 13 14 15 11 12 Positionswerten px%Bildbreite und py%Bildhhe 24 25 21 22 23 24 25 21 22 liefert die Position der Ersatzwerte im Quellbild. 34 35 31 32 33 34 35 31 32 Diese Art der Randbehandlung ist kompatibel zur 14 15 11 12 13 14 15 11 12 spter vorgestellten Fouriertransformation. 24 25 21 22 23 24 25 21 22 Nachteilig ist, dass die ermittelten Werte keinen lokalen Bezug zu den Randwerten des Bilds haben.

Zyklisch spiegeln: Bild auerhalb des Rands gespiegelt fortsetzen. 22 21 21 22 23 24 25 25 24 Vorteil dieses Vorgehens ist der lokale Bezug, den 12 11 11 12 13 14 15 15 14 die Pixel auerhalb des Bildes zum nchstliegen12 11 11 12 13 14 15 15 14 den Bildrand erhalten. Dabei werden die 22 21 21 22 23 24 25 25 24 Randwerte nur moderat gewichtet. 32 31 31 32 33 34 35 35 34 Nachteilig ist der erhhte Berechnungsaufwand 32 31 31 32 33 34 35 35 34 22 21 21 22 23 24 25 25 24 zur Ermittlung der Positionen der Ersatzwerte. Zugriff verhindern: Zugriff auf Pixel auerhalb des Bildes verbieten (z. B. in diesem Fall eine Ausnahme werfen).
Beispiel: Randbehandlung mit den vorgestellten Vorgehensweisen

Konstanter Wert RGB=(255,128,128)

Mit Randpunkten fortsetzen

Zyklisch verschieben

Gespiegelt fortsetzen

Randbehandlung in der Image-Klasse der IPTLib Die im ersten Abschnitt vorgestellte Image-Klasse in der IPTLib untersttzt die vorgestellten Vorgehensweisen zur Randbehandlung. Sobald der Zugriff auf einen Pixel auerhalb des Bildbereichs erfolgt, wird der Wert entsprechend der voreingestellten Vorgehensweise ermittelt. Zum Umschalten zwischen den verschiedenen Vorgehensweisen dienen folgende Methoden der Image-Klasse: void Margin_Exception(): Beim Zugriff auf Pixel auerhalb des Bilds eine Ausnahme werfen. void Margin_Constant(const Pixel &p): Pixel auerhalb des Bilds auf den durch den Pixel p vorgegebenen konstanten Wert setzen. Der Datentyp Pixel ist der Pixeltyp des Bilds, der beim Anlegen eines Bilds gesetzt wird. void Margin_Continue(): Pixel auerhalb des Bilds mit den Pixelwerten des Bildrands fortsetzen. void Margin_Cyclic(): Behandlung von Pixeln auerhalb des Bilds durch zyklisches Verschieben. void Margin_Mirror(): Behandlung von Pixeln auerhalb des Bilds durch zyklisches Spiegeln.
Beispiel: Randbehandlung durch konstanten Wert bei einem RGB-Bild Das folgende Code-Beispiel legt ein RGB-Quellbild Bild an und fllt es aus einer BMP-Datei. Anschlieend wird als Vorgehen zur Randbehandlung ein konstanter Wert gewhlt. Der Bildinhalt wird in ein greres Bild NeuesBild umkopiert, dabei wird auf Pixel auerhalb von Bild zugegriffen. int main(int argc, char* argv[]) { Image<RGB_Pixel> Bild; // Farbbild anlegen BmpRead("Quellbild.bmp") >> Bild; // BMP-Bild einlesen int BildBreite(Bild.Width()); // Bildbreite aus Quellbild ermitteln int BildHoehe(Bild.Height()); // Bildhhe aus Quellbild ermitteln const int Rand(50); // Pixel auerhalb des Bildes Bild auf konstanten Wert setzen Bild.Margin_Constant(RGB_Pixel(255,128,128));

// Neues, greres Bild einrichten und mit Quellbild fllen. Dabei wird auf Pixel // auerhalb des Quellbilds zugegriffen

Image<RGB_Pixel> NeuesBild(BildBreite+2*Rand,BildHoehe+2*Rand); for (int y=0;y<BildHoehe+2*Rand;y++) { for (int x=0;x<BildBreite+2*Rand;x++) { NeuesBild[y][x] = Bild[y-Rand][x-Rand]; } } BmpWrite("NeuesBild.bmp", NeuesBild); // BMP-Objekt schreiben }

2.2 Farbdarstellung
Farbe ist in der DIN 5033 "Farbmessung", Teil 1 wie folgt definiert: Die Farbe ist diejenige Gesichtsempfindung, durch die sich zwei aneinandergrenzende, strukturlose Teile des Gesichtsfelds bei einugiger Betrachtung mit unbewegtem Auge allein unterscheiden knnen.

2.2.1 Menschliches Sehen


Elektromagnetische Strahlung Das menschliche Sehen basiert auf der Erfassung elektromagnetischer Strahlung im Wellenlngenbereich von etwa 380 nm bis 750 nm. Dieser Bereich der Strahlung bezeichnet man als sichtbares Licht.

(Quelle: de.wikipedia.org/wiki/Elektromagnetische_Welle)

Grundelemente des menschlichen Sehens: Zapfen und Stbchen Die Farbwahrnehmung beim Menschen ist ein physiologisch durch die Augen und das Gehirn bestimmter Vorgang. Er basiert auf Rezeptorzellen der Netzhaut, welche fr elektromagnetische Strahlungen in unterschiedlichen Wellenlngenbereichen sensitiv sind. Die Rezeptoren sind Zapfen in drei unterschiedlichen Ausprgungen und Stbchen. Die Zapfen ermglichen das Farbsehen bei guten Lichtverhltnissen im Spektralbereich 380760 nm. Die Stbchen sorgen fr das Helligkeitssehen in dunkler Umgebung. Die Netzhaut besteht aus ca. 6 Millionen Zapfen und ca. 120 Millionen Stbchen. Entstehung von Farbreizen Zapfen und Stbchen weisen gewichtete Empfindlichkeiten in festen Spektralbereichen auf. Auftreffende Strahlungen werden gewichtet akkumuliert. Dabei entstehen Reize, die vom Gehirn ausgewertet und zu einem Farbeindruck zusammengesetzt werden. Der Mensch bildet somit beliebige Strahlungen aufgrund seiner drei Zapfentypen in einen 3dimensionalen Farbraum ab. Nachfolgende Abbildung zeigt qualitativ die Empfindlichkeiten der drei Zapfentypen ber der Wellenlnge (Kurve des Zapfens mit Maximum bei 419 nm ist 4-fach berhht):

Empfindlichkeit

(4-fach berhht) Wellenlnge 419 nm 531 nm 558 nm

Der gleiche Reiz eines Zapfens kann alternativ mit monochromatischer oder mit breitbandiger Strahlung erzeugt werden. Der Mensch kann dies nicht unterscheiden. Beim Menschen kann somit ein Farbreiz, der durch breitbandige Strahlung erzeugt wurde, z.B. durch geschicktes berlagern weniger, monochromatischer Strahlungen nachgebildet werden. Genauere Untersuchungen zeigen, dass mindestens drei Grundfarben mit unterschiedlichen Farbreize bentigt werden, um einen beliebigen Farbreiz zu erzeugen. Sie werden als Tristimulus System oder als Trichromatisches System bezeichnet.

2.2.2 Das CIE-1931 System


RGB-Darstellung Die Internationale Beleuchtungskommission (franz.: Commision International de lEclairage, CIE) definierte 1931 ein Tristimulus System aus den Spektralfarben Rot (700 nm), Grn (546,1 nm) und Blau (435,8 nm). Bei einer gegebenen breitbandigen Intensitt I() errechnen sich die Farbkomponenten R, G und B, welche die Intensitten der Grundfarben beschreiben um einen quivalenten Farbreiz zu erzeugen, wie folgt: R = k I ( ) r ( ), G = k I ( ) g ( ), B = k I ( ) b( ). (4) Die Faktoren k dienen zur Normierung der Farbkomponenten, um diese beispielsweise im Wertebereich 0 bis 1 zu halten. Die zur Integration bentigten Gewichtfaktoren wurden fr das CIE-1931-System experimentell ermittelt wie folgt festgelegt:

b( ) g ( )

r ( )

Bei Spektralfarben entfllt das Integral zur Berechnung von R, G und B, da I() nur bei einer einzigen Wellenlnge von 0 verschieden ist. Fr die zu den Spektralfarben quivalenten Farbkomponenten gilt somit: Rs ( ) = k I ( ) r ( ), Gs ( ) = k I ( ) g ( ), Bs ( ) = k I ( ) b( ) (5)
In der Abbildung ist deutlich zu erkennen, dass etwa im Bereich 440 nm-545 nm eine negative Rot-Gewichtung existiert. Ebenso zeigt die Grn-Gewichtung unterhalb 440 nm eine leicht negative Gewichtung. Zu Spektralfarben quivalente Farbreize mssten in diesem Wellenbereichen mit negativer roter oder grner Intensitt (Rs() oder Gs()) erzeugt werden. Dies ist technisch nicht mglich. hnliches gilt fr breitbandige Strahlung mit hohen Strahlungsanteilen in den genannten Bereichen. Dieses Beispiel verdeutlicht die Tatsache, dass mit einem realen Tristimulus System technisch nur ein Unterbereich aller mglichen Farbreize erzeugt werden kann.

Farbwrfel Die RGB-Darstellung kann in Form eines Wrfels veranschaulicht werden. Jede Achse spannt eine Grundfarbe auf. Innerhalb des Wrfels, der durch den Ursprung und die maximalen Werte der Farbkomponenten (z.B. (1,1,1)) begrenzt ist, liegt jede darstellbare Farbe:
Gelb Weipunkt

G Grn Rot R

Cyan (verdeckt)

Magenta

Schwarz

B Blau

Im Ursprung findet sich die Farbe Schwarz, dem gegenberliegenden Eckpunkt des Wrfels ist die Farbe Wei zugeordnet (Weipunkt). Weitere Eckpunkte sind die Grundfarben Rot, Grn und Blau mit maximaler Intensitt und die additiven Mischfarben Gelb (Rot+Grn), Cyan (Grn+Blau) um Magenta (Rot+Blau).

Farbtafel Die Darstellung einer Farbe durch ein Tristimulus System erfolgt wie erlutert durch die gewichtete berlagerung von drei Grundfarben, z.B. Rot, Grn und Blau mit den Gewichten R, G und B. Es ist nun mglich, diese Komponenten mit der Intensitt I zu normieren, die sich aus der Summe der Komponenten ergibt. Man erhlt damit die Intensittsnormierten Komponenten r, g und b: R G B (mit I = R + G + B ) (6) r= , g= und b = I I I Es ist offensichtlich, dass die Intensittsnormierten Komponenten in der Summe den Wert 1 ergeben. Zur Charakterisierung einer Farbe gengen somit zwei dieser Komponenten, die zusammen mit der Intensitt I die Erzeugung des Farbreizes definieren. Im Folgenden werden die Komponenten r und g verwendet. In einem zweidimensionalen rg-Raum bilden die Komponenten rs() und gs(), mit denen die Farbreize der Spektralfarben erzeugt werden, eine Kurve in Abhngigkeit von der Wellenlnge . Verbindet man die Kurvenpunkte der niedrigsten und hchsten sichtbaren Strahlung mit einer Linie (Pupurlinie), wird die Kurve geschlossen und man erhlt in

ihrem Inneren eine Farbtafel. Jeder Punkt im Inneren der geschlossenen Kurve entspricht einem unterschiedlichen Farbreiz.
g

Grn

Cyan Wei

Gelb

Blau

Magenta

Rot

Die Grundfarben bilden ein Dreieck (in der Abbildung grau hinterlegte), in dessen Innerem die Intensitten positiv sind. Somit liegen die mit den Grundfarben physikalisch darstellbaren Farben im Inneren dieses Dreiecks.

XYZ-Darstellung Als Referenz zur Beschreibung von Farben ist innerhalb CIE-1931 ein Tristimulus System aus drei virtuellen Farbkomponenten X, Y und Z definiert. Entsprechend wie beim RGB-System werden die Komponenten mittels gewichteter Integration ermittelt: X = k I ( ) x( ), Y = k I ( ) y ( ), Z = k I ( ) z ( ). (7)
Ebenso werden Intensittsnormierte Komponenten x, y und z vereinbart: X Y Z (mit I = X + Y + Z ) (8) x = , y = und z = I I I Folgende Anforderungen wurden an das XYZ-System gestellt: 1. Die Gewichtsfunktionen x(), y() und z () sollen positiv sein. 2. Die Komponente Y soll die Luminanz (Helligkeit) der Farbe beschreiben. 3. Der Weipunkt soll bei x = y = z = 1/3 liegen. 4. Es wird ein linearer Zusammenhang zu den RGB-Komponenten von CIE-1931 angenommen. 5. Der Wertebereich der XYZ-Komponenten soll im Intervall 0 bis 1 liegen (bei gleichem Wertebereich fr RGB). Basierend auf diesen Anforderungen wurde der Zusammenhang zwischen RGB und XYZ festgelegt: 0,31 0,20 R X 0,49 1 (9) 0,17697 0,81240 0,010603 G Y = Z 0,17697 0 0,01 0,99 B

Damit lassen sich die Gewichtsfunktionen ermitteln:

(Quelle: en.wikipedia.org/wiki/CIE_1931_color_space)

Zeichnet man die Grundfarben des XYZ-Systems in die rg-Farbtafel ein, sieht man dass der Bereich der darstellbaren Farben vollstndig innerhalb des Dreiecks liegt, welches durch die XYZ-Grundfarben aufgespannt ist. Diese in der folgenden Abbildung mit Cr, Cg und Cb bezeichneten Grundfarben des YXZ-Systems liegen auerhalb der darstellbaren Farben und sind somit also nicht physikalisch darstellbar.

(Quelle: en.wikipedia.org/wiki/CIE_1931_color_space)

Meist wird die xy-Farbtafel zur Beschreibung von Farben verwendet. In der nachfolgenden Abbildung ist in der xy-Farbtafel wieder das Dreieck der RGB-Grundfarben eingezeichnet, welches auch in der rg-Farbtafel markiert war (siehe oben):

(Quelle: en.wikipedia.org/wiki/CIE_1931_color_space)

2.2.3 Anzeigen von Farben


Zur Anzeige von Farben stehen Lichtquellen zur Verfgung, welche Strahlung in verschiedenen Spektralbereichen aussenden.
Beispiel: Strahlungen von blauem, grnem und rotem Phosphor:

(Quelle: en.wikipedia.org/wiki/Phosphor)

Fr jede Strahlung knnen die Farbkomponenten nach Gleichung (4) oder (7) berechnet werden, damit ist der zugehrige Farbreiz ermittelt. Beispielsweise knnen fr jeden der oben gezeigten Strahlungsverlufe die XYZ-Farbkomponenten bestimmt und damit drei Orte in der Farbkarte ermittelt werden, welche den Strahlungen des roten, blauen und grnen Phosphors entsprechen:

(Quelle: en.wikipedia.org/wiki/Gamut)

Diese drei Strahlungen bilden ein technisches Tristimulus System, welches ein Farbgamut in Dreieckform aufspannt. Alle Farben innerhalb des Dreiecks knnen durch berlagerungen der drei technischen Lichtquellen mit unterschiedlichen Intensitten erzeugt werden.

Die Erzeugung von Farbreizen kann auch durch berlagerung von mehr als drei Grundfarben realisiert werden. Die verwendeten Farben spannen dann ein Gamut als Vieleck auf. Die darstellbaren Farben liegen innerhalb der konvexen Hlle der Farborte. Nachfolgende Abbildung zeigt eine xy-Farbkarte, in der ein Gamut aus drei und aus vier Grundfarben eingezeichnet ist:

Die graue Linie zeigt den CMYK-Gamut eines Druckers und die schwarze Linie den RGB-Gamut eines Monitors.

(Quelle: de.wikipedia.org/wiki/Gamut)

2.2.4 HSV-Darstellung
Das menschliche Gehirn verarbeitet die vom Auge aufgenommenen Farbreize und erzeugt beim Beobachter Eindrcke ber Helligkeit, Farbton und Sttigung (Farbintensitt) einer Szene. Dieses Empfinden wird in der HSV-Farbdarstellungen nachgebildet. Es bildet eine Farbe auf die folgenden drei Komponenten ab: H - Farbton dargestellt als Winkel im Farbkreis (z. B. 0 = Rot, 120 = Grn, 240 = Blau) S - Sttigung in Prozent (z. B. 0% = keine Farbe, 50% = ungesttigt, 100% = gesttigte, reine Farbe) V - Grauwert als Prozentwert (z. B. 0% = keine Helligkeit, 100% = volle Helligkeit) Durch Verformen des RGB-Farbwrfels kann man diesen in einen Kegel berfhren. Die Komponenten H und S bilden ein Polarkoordinatensystem, ber dem die Dimension des Grauwerts V aufgetragen wird. Der Ursprung des Koordinatensystems liegt in der Spitze des Kegels:

(Quelle: de.wikipedia.org/wiki/HSV-Farbraum)

Zur Umrechnung von RGB in HSV werden verschiedene Formeln vorgeschlagen. In de.wikipedia.org/wiki/HSV-Farbraum findet sich folgender Vorschlag zur Umrechnung von RGB-Werten mit Wertebereich [0,1]:
double M=Max(R,G,B); // Maximum aus RGB berechnen double m=min(R,G,B); // Minimum aus RGB berechnen double H,S,V; if (M==m) { H=0.0; } else { if (R==M) { H = (0.0+(G-B)/(M-m))*60.0; } else if (G==M) { H = (2.0+(B-R)/(M-m))*60.0; } else if (B==M) { H = (4.0+(R-G)/(M-m))*60.0; } } if (H<0.0) { H = H+360.0; } if (M==0.0) { S=0.0; } else { S = (M-m)/M; } V = M;

Der Pseudocode berechnet H im Winkelbereich [0,360] sowie S und V im Intervall [0,1].


Beispiel: Zuordnung von Farbtonwinkeln zu Farben
0 Rot 60 Gelb 120 Grn 180 Cyan 240 Blau 300 Magenta

Beispiel: Zerlegung eines Bilds in die Farbkomponenten H, S und V

Quellbild

Grauwerte V

Sttigung S

Farbwinkel H

Die zu obigem Pseudocode passende Rckrechnung von HSV nach RGB lautet:
int Hi=int(H/60.0); double f(H/60.0-Hi); double p(V*(1.0-S)); double q(V*(1.0-S*f)); double t(V*(1.0-S*(1.0-f))); double R,G,B; switch (Hi) { case 0: R=V; G=t; B=p; break; case 1: R=q; G=V; B=p; break; case 2: R=p; G=V; B=t; break; case 3: R=p; G=q; B=V; break; case 4: R=t; G=p; B=V; break; case 5: R=V; G=p; B=q; break; }

Beispiel: Klassendefinition fr HSV-Pixel mit Konversionen von und zur Klasse RGB_Pixel class HSV_Pixel { double _H,_S,_V; public: HSV_Pixel(); HSV_Pixel(double H, double S, double V); HSV_Pixel(const RGB_Pixel p); double H() const { return _H; } double S() const { return _S; } double V() const { return _V; } void H(double h) { _H=h; } void S(double s) { _S=s; } void V(double v) { _V=v; } operator RGB_Pixel () const; };

Alternative Darstellungen zur Zerlegung der Farbinformation in Farbton, Sttigung und Helligkeit sind das HSI- und das HSL-Farbmodell. Fr Details wird auf die Literatur verwiesen.

2.2.5 Farbdifferenz-Darstellungen
YUV-Farbmodell Das YUV-Farbmodell wurde bei der Entwicklung des analogen PAL-Farbfernsehens definiert. Der PAL-Standard basiert auf dem Helligkeitssignal (Luminanz) des Schwarz/Wei-Fernsehens und moduliert auf dieses Signal zwei Farbkomponenten (Chrominanz). Dieses Vorgehen wurde aus Grnden der Kompatibilitt zum Schwarz/Wei-Fernsehens gewhlt, da das resultierende Signal auch von alten S/WFernsehern wiedergegeben werden kann. Das Luminanzsignal (Leuchtdichte-Signal) wird aus gammakorrigierten RGB-Werten (siehe Abschnitt Bildverbesserung) berechnet; diese werden als R', G' und B' bezeichnet und sollen im Wertebereich 0R,G,B<1 definiert sein. Die drei Komponenten werden mit vorgegebener Gewichtung addiert und man erhlt das Luminanzsignal: Y = 0 ,299 R + 0 ,587 G + 0 ,114 B Die Chrominanzsignale werden als Differenz aus Blau bzw. Rot und der Luminanz bestimmt: U = 0,492 ( BY ) = 0,147 R0,289 G+0,436 B V = 0,877 ( RY )

= 0,615 R0,515 G0,100 B Es ergeben sich folgende Wertebereiche fr die Komponenten: 0 Y 1, 0,436 U 0,436, 0,615 V 0,615 Die Umrechnung kann in Matrixschreibweise formuliert werden: 0,587 0,114 R Y 0,299 0,436 G U = 0,147 0,289 V 0,615 0,515 0,100 B
Aus den Komponenten Y, U und V lassen sich wieder die gammakorrigierten RGB-Werte berechnen: R= Y + ( RY ) = Y + V / 0,877 B= Y + ( BY ) = Y + U / 0,492

Y 0,299 0,114 Y 0,299 0,114 R B= (Y + V / 0,877) (Y + U / 0,492) 0,587 0,587 0,587 0,587 0,587 0,587 0,114 0,299 =Y U V 0,587 0,492 0,587 0,877 Diese Rckrechnung kann ebenfalls in Matrixschreibweise formuliert werden: 0 1,140 Y R 1 G = 1 0,395 0,581 U B 1 2,032 0 V G=

Der Bereich der darstellbaren Farben im YUV-Raum kann durch Einzeichnen des RGBWrfel markiert werden:
Y Weiss

Gelb Magenta Cyan

Ro

Gr n

au Bl

U Schwarz

Nur die im Inneren des Wrfels liegenden YUV-Werte entsprechen einer darstellbaren Farbe. Der YUV-Raum ist somit kein sinnvoller Farbraum fr den Entwurf von Farben, sondern ein an die Erfordernisse des analogen Farbfernsehens angepasstes Farbmodell.

YCbCr-Farbmodell Das YCbCr-Farbmodell ist im digitalen Videostandard ITU-BT.601 definiert und findet auch in digitalen Bildern (z.B. JPEG) Anwendung. Es entsteht durch Verschieben und Skalieren aus dem YUV-Modell:
0 1

YYUV
0 16 235 255

YYCbCr

220 Werte darstellbar -0,436 0 0,436

U
0 16 128 240 255

Cb

225 Werte darstellbar -0,615 0 0,615

U
0 16 128 240 255

Cr

225 Werte darstellbar

Die Darstellung besitzt gegenber YUV verschobene und asymmetrische Wertebereiche: 16 Y 235, 16 Cb 240, 16 Cr 240

Die ausgesparten Codes werden verwendet, um Kontrollinformation (z.B. Synchronsignale Bildanfang und Zeilenanfang) in die Codes zu integrieren. Dies dient zum Einsparen von Signalleitungen. Die direkte Transformation gammakorrigierter RGB-Werte ( 0R,G,B<255), wie sie in Digitalrechnern blicherweise vorliegen, nach YCbCr ergibt folgende Formeln: Y = round (0,257 R + 0,504 G + 0,098 B) + 16

Cb = round ( 0,148 R 0,291 G + 0,439 B) + 128 Cr = round (0,439 R 0,368 G 0,071 B) + 128 Die Funktion round() rundet das Ergebnis auf den nchsten Ganzzahlwert. Der Schwarzpunkt liegt in der Darstellung beispielsweise bei YCbCr=(16,128,128) und der Weipunkt bei YCbCr=(235,128,128). Entsprechend erfolgt die Rckrechnung: R = round (1,164 (Y 16) + 1,596 (Cr 128))
G = round (1,164 (Y 16) 0,392 (Cb 128) 0 ,813 (Cr 128)) B = round (1,164 (Y 16) + 2 ,017 (Cb 128)) Die errechneten RGB-Werte mssen in ihrem Wertebereich zwischen 0 und 255 bleiben. Grere Werte sollten auf 255 und negative Werte auf 0 gesetzt werden. Die Einbettung des RGB-Wrfels in YCbCr zeigt die Verschiebung des Koordinatensystems gegenber YUV:
Y=240, CB=CR=128

YCBCR-Farbwrfel

Gelb

Weiss

255
Cyan Grn Magenta

Y 255 CR 0 Schwarz

Rot Blau

RGB-Farbwrfel CB 255

Auch hier zeigt sich wie bei YUV, dass nur die im Inneren des RGB-Wrfels liegenden YCbCr-Werte technisch darstellbar sind.

2.2.6 Abtastformate fr Digitales Video


Die Physiologie des menschlichen Sehens zeigt geringere Auflsungen im Farbsehen gegenber dem Helligkeitssehen. Dies wird in Bildformaten ausgenutzt, indem Helligkeit und Farbe unterschiedlich abgetastet werden. Bei der Bildverarbeitung kann die Ungleichbehandlung von Helligkeit und Farbe unerwnscht sein. Dann muss dafr gesorgt werden, dass Bilder mit einheitlicher Auflsung aufgenommenwerden. Der ITU-R BT.601 Standard fr digitales Video spezifiziert fr Videostrme eine Reihe von Abtastformaten: 4:4:4, 4:2:2, 4:1:1 und 4:2:0. Diese beschreiben die Abtastung von Luminanz und Chrominanz in einem Bild.

4:4:4 Format: Jeder Bildpunkt wird durch Luminanz und Chrominanz dargestellt. Folgende Abbildung zeigt zwei Bildzeilen des Formats:
Zeile 0 Zeile 1 Legende:
Y-Pixel YCBCR-Pixel CBCR-Pixel

Jeder Bildpunkt wird durch jeweils ein Byte fr Y, Cb und Cr reprsentiert. Dies ergibt 24 Bit pro Pixel.

4:2:2 Format: Die Chrominanz wird in horizontaler Richtung mit halber Auflsung abgetastet:
Zeile 0 Zeile 1

Ein Luminanzwert wird alternierend mit einem Cb- und Cr-Wert kombiniert und als 16 Bit Wort abgelegt:
Cr2 Cb2 Cr0 Cb0 16 Bit Y3 Y2 Y1 Y0 Wort 3 Wort 2 Wort 1 Wort 0 Pixel 2,3 Pixel 0,1

Die gemeinsamen Chrominanzwerte zweier Pixel mssen somit den aufeinanderfolgenden Speicherworten entnommen und jedem Pixel zugeordnet werden.

4:1:1 Format: Die Chrominanz wird in horizontaler Richtung mit einem Viertel der Auflsung abgetastet:
Zeile 0 Zeile 1

Jeder Luminanzwert wird mit 2 Bits der Chrominanzwerte Cb und Cr kombiniert und als 12 Bit Wort abgelegt:
Cr4 (Bit 7..6) Cb4 (Bit 7..6) Cr0 (Bit 1..0) Cb0 (Bit 1..0) Cr0 (Bit 3..2) Cb0 (Bit 3..2) Cr0 (Bit 5..4) Cb0 (Bit 5..4) Cr0 (Bit 7..6) Cb0 (Bit 7..6) 12 Bit Y4 Y3 Y2 Y1 Y0 Wort 4 Wort 3 Wort 2 Wort 1 Wort 0

Pixel 0 bis 3

4:2:0 Format: Fr 4 benachbarte Luminanzpixel wird ein gemeinsamer Chrominanzwert ermittelt. Fr die Chrominanz ergibt sich damit halbe Auflsung in horizontaler und vertikaler Richtung:
Zeile 0 Zeile 1 Zeile 2 Zeile 3

Dieses Format wird in der Bildkompression verwendet (H.261, JPEG, MPEG1, MPEG2 in leichter Abwandlung). Die Farbkomponenten der Pixel werden dort in Blcken zusammengefasst: 16x16 Blcke fr Luminanz Y 8x8 Blcke fr Chrominanz Cb und Cr Ein quadratischer Bereich aus 16x16 Pixel wird somit durch 3 Blcke reprsentiert:
Cb 16 Y 16 8 Cr 8 8

2.3 BMP-Dateiformat
Exemplarisch soll an dieser Stelle das BMP-Format zur Speicherung von Bilddaten erlutert werden. Es bietet einen einfachen Zugang zu unkomprimierten Bilddaten und ist somit fr die Speicherung von Zwischenergebnissen bei der Bildverarbeitung gut geeignet. BMP-Dateien liegen fast immer in der Version 3 vor. Frhere Versionen gibt es nicht, Dateien der spteren Versionen 4 und 5 sind uerst selten anzutreffen. Die Grundstruktur der BMP-Datei besteht aus 4 Blcken:
Dateikopf Infoblock
Pixeloffset Dateigre

RGB-Farbtabelle

Pixeldaten
Bildgre

Innerhalb der Blcke sind die angegebenen Werte Dateigre, Pixeloffset und Dateigre gespeichert. Ihre Werte sind als Anzahl von Bytes angeben. Gespeicherte 16- oder 32-Bit Werte beginnen immer mit dem niederwertigsten Byte.

Dateikopf: Der Dateikopf ist 14 Bytes gro, dient als Kennung einer BMP-Datei und speichert die Dateigre und den Pixeloffset: 2 Bytes Kennung "BM" (erst 'B' dann 'M') 4 Bytes Dateigre in Bytes 4 Bytes Zu 0 gesetzt 4 Bytes Pixeloffset in Bytes Infoblock Im Infoblock stehen alle Informationen ber das gespeicherte Bild. Verschiedene Versionen des Infoblocks werden anhand des ersten Werts unterschieden, der die Gre des Infoblocks speichert. Der nahezu immer verwendete Infokopf von Version 3 hat eine Lnge von 40 Bytes. Er enthlt folgende Felder: 4 Bytes Gre des Infoblocks in Bytes (40 Bytes fr Windows Version 3) 4 Bytes Bildbreite in Pixel 4 Bytes Bildhhe in Pixel 2 Bytes Ebenen (immer 1) 2 Bytes Bits pro Pixel. Mgliche Werte sind: 1, 4, 8, 16, 24, 32 4 Bytes Kompression: 0 fr unkomprimierte Bilddaten. 4 Bytes Bildgre in Bytes (siehe Abbildung oben) 4 Bytes Anzahl der Pixel pro Meter in X-Richtung 4 Bytes Anzahl der Pixel pro Meter in Y-Richtung 4 Bytes Gre der Farbtabelle (Anzahl der Eintrge) 4 Bytes Wichtige Farben (Anzahl der verwendeten Eintrge der Farbtabelle)
Beispiel fr die Anzahl der Pixel pro Meter: Bei 300 dpi (1 inch = 2.54 cm) ergeben sich (100/2,54)300 = 11811 Bildpunkte pro Meter.

Farbtabelle Bei 1, 2 und 8 Bit pro Pixel enthlt das BMP-Format eine Farbtabelle. Die Darstellung der Farben wird als indizierte Darstellung bezeichnet. Jeder Pixelwert dient als Index in die Farbtabelle. Er selektiert einen Eintrag in der Tabelle, aus dem die Farbwerte Rot, Grn und Blau ausgelesen werden:
Pixeldaten Pixelwert RGB Farbtabelle Rot Grn Blau

Bei 16, 24 und 32 Bit pro Pixel entfllt die Farbtabelle. Die Anzahl der Eintrge in der Farbtabelle ist abhngig von der Anzahl der Bits pro Pixel: Bits pro Pixel maximale Anzahl der Eintrge 1 2 4 16 8 256 16, 24, 32 (keine Farbtabelle) Die wirkliche Anzahl der Eintrge ist im Infokopf als Gre der Farbtabelle angegeben. Ein Wert von 0 bedeutet, dass die Tabelle die maximale Anzahl von Eintrgen enthlt. Weiterhin enthlt der Infokopf den Eintrag Wichtige Farben. Dieser gibt an, wie viele der vorhandenen Eintrge genutzt werden. Ein Wert von 0 bedeutet, dass alle Eintrge genutzt werden. Die Farbtabelle bei BMP-Dateien der Version 3 besteht aus 4 Bytes pro Eintrag, welche die Werte fr Blau, Grn und Rot speichern. Das vierte Byte dient dazu, einen Eintrag auf 32 Bit aufzufllen, damit ein Eintrag als Wort gelesen werden kann:
RGB Farbtabelle Blau0
1 Byte

Grn0
1 Byte

Rot0
1 Byte

0
1 Byte

...

BlauN-1 GrnN-1 RotN-1


1 Byte 1 Byte 1 Byte

0
1 Byte

Pixeldaten Der letzte Block einer BMP-Datei speichert die Pixeldaten. Bei 1, 4 und 8 Bit pro Pixel enthlt der Bereich die Indizes in die Farbtabelle, bei 16, 24 und 32 Bit sind im Pixeldatenbereich direkt die Komponenten Blau, Grn und Rot gespeichert. Zu beachten ist, dass die Index- oder Farbwerte einer jeden Bildzeile mit Flldaten ergnzt werden, so dass die Gesamtlnge immer ein Vielfaches von 32 Bit ergibt. Dies wird als Alignment bezeichnet. Die Gre des Pixeldatenbereichs ist somit grer als das Produkt aus Bildhhe, Bildbreite und Bit pro Pixel. Das Alignment ist sinnvoll, um Zeilen effizient zu verschieben und kopieren, da ihre Lnge auch auf 32-Bit Prozessoren ein Vielfaches der Prozessorwortlnge betrgt. Ist das Kompression-Feld im Infokopf zu 0 gesetzt, ergeben sich die im Folgenden angefhrten Schemata zum Abspeichern der Pixeldaten. 1 Bit pro Pixel, Indizes der Farbtabelle in aufeinander folgenden Bytes:
Byte i
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

Byte i+1
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

Pixel k

Pixel k+7 Pixel k+8

Pixel k+15

4 Bit pro Pixel, Indizes der Farbtabelle in aufeinander folgenden Bytes:


Byte i
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

Byte i+1
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

Pixel m

Pixel m+1

Pixel m+2

Pixel m+3

8 Bit pro Pixel, Indizes der Farbtabelle in aufeinander folgenden Bytes:


Byte i
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

Byte i+1
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

Pixel g

Pixel g+1

16 Bit pro Pixel, Farbwerte in aufeinander folgenden Bytes:


Byte i
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

Byte i+1
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10

Bit 9

Bit 8

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

0 Rot Grn Blau

24 Bit pro Pixel, Farbwerte in aufeinander folgenden Bytes:


Byte i
Blau

Byte i+1
Grn

Byte i+2
Rot

32 Bit pro Pixel, Farbwerte in aufeinander folgenden Bytes:


Byte i
Blau

Byte i+1
Grn

Byte i+2
Rot

Byte i+3
ungenutzt

2.4 Bildpyramiden
Eine mgliche Strategie zur Verarbeitung von Bildern beginnt zunchst mit der Auswertung auf Bildern kleiner Auflsung verwendet die Ergebnisse dieser Stufe als Startwerte der nchsthheren Stufe. Damit wird die Auswertung schrittweise bis in die hchste Auflsungsstufe verfeinert. Algorithmen mit dieser Strategie werden als Mehrgitterverfahren (engl.: multigrid methods) bezeichnet. Zur Speicherung der Bilder bei Mehrgitterverfahren bieten sich Bildpyramiden an. Bedeutung besitzt die Gaupyramide, welche Bilder in vollstndiger und in reduzierten Auflsungen speichert. Ebenso besitzt die Laplacepyramide Bedeutung, welche Differenzen zwischen Bildern benachbarter Auflsungen speichert.

2.4.1 Gausspyramide
Das Originalbild bildet die erste Stufe der Pyramide. Zum Aufbau von Gaupyramiden wird ein Bild schrittweise verkleinert, indem Bildpunkte zusammengefasst werden. Zum Zusammenfassen der Bildpunkte wird ein Bild mit einem Tiefpass gefiltert und in beiden Bilddimensionen jeder zweite Bildpunkt aus dem gefilterten Bild entnommen. Das resultierende Bild besitzt in beiden Dimensionen nur die halbe Gre und somit ein Viertel der Pixel gegenber dem Ausgangsbild.

Originalbild
Tiefpafilter

Tiefpabild
Unterabtastung

Verkleinertes Bild

Als Tiefpass dient ein zweidimensionales Gaufilter, das Nachbarpixel geeignet zusammenfasst und auf die Unterabtastung vorbereitet. Im praktischen Einsatz kann das Gaufilter durch ein Binominialfilter 2. Ordnung realisiert werden (siehe Abschnitt lineare Filter).
Beispiel: Gaupyramide mit 5 Stufen

Der Speicherbedarf fr eine Gaupyramide wchst im Vergleich zum Originalbild nur um maximal 1/3 an. Damit bleibt der Bedarf in akzeptablen Grenzen.

2.4.2 Laplacepyramide
Die Laplacepyramide besteht aus Differenzbildern, welche aus benachbarten Bildern der Gaupyramide berechnet werden. Dazu muss das Bild kleinerer Auflsung durch Interpolation vergrert werden. Die Spitze der Laplacepyramide bildet das Bild kleinster Auflsung der Gaupyramide.
Beispiel: Konstruktion einer 4-stufigen Laplacepyramide aus einer Gaupyramide
Gaupyramide

Vergrern

Vergrern

Vergrern

(Mittlerer Grauwert entspricht Wert 0)

Laplacepyramide

Zur Vergrerung der Bilder werden meist bilineare oder bikubische Interpolationsverfahren zur Ermittlung der unbekannten Pixel verwendet oder in einfachen Fllen auch die nchsten Nachbarpixel dupliziert. Aus der Laplacepyramide kann die Gaupyramide wieder rekonstruiert werden, wenn das Verfahren zur Vergrerung bekannt ist. Schrittweise wird aus dem bekannten Bild

kleiner Auflsung und der in der Laplacepyramide gespeicherten Differenzinformation das Bild in der nchsten Auflsung rekonstruiert werden.
Beispiel: Bilineare Interpolation:
p p q

p+q 2 p+q+r +s 4 r+s 2

p+r 2

q+s 2

s r s

Beispiel: Rekonstruktion einer 4-stufigen Gaupyramide aus einer Laplacepyramide


Gaupyramide

Vergrern

Vergrern

Vergrern

Laplacepyramide

Die Laplacepyramide wird beispielsweise zur Bildkompression genutzt. Die globale Bildinformation steckt in der Spitze der Laplacepyramide. Die unteren Schichten speichern die Detailinformationen. Damit kann in den einzelnen Schichten eine unterschiedlich starke, an die Physiologie des Menschen angepasste Kompression angewendet werden. Die Laplacepyramide kann in der Bildbertragung genutzt werden, um mit dem Bild kleinster Auflsung schnell ein Vorschaubild zu bertragen. Mit bertragung der darunter liegenden Schichten wird dieses Bild schrittweise verfeinert bis die volle Auflsung erreicht ist.

2.5 Bildsequenzen
Bildsequenzen besitzen zustzlich zu den rtlichen Dimensionen der Einzelbilder die Dimension der Zeit. Abhngig von Bildquelle und Anwendungsgebiet sind unterschiedliche Arten der Sequenzdarstellung gebruchlich. Folgende Darstellungen sollen in diesem Abschnitt erlutert werden: Vollbildsequenzen (Non-Interlaces, Progressive Frame) Interlaced-Sequenzen Differenzielle Kodierung

2.5.1 Vollbildsequenzen
Vollbildsequenzen bestehen aus zeitlich aufeinander folgenden vollstndigen Bildern (engl.: frames):

Zeit
zeitlicher Abstand zweier Bilder

Der zeitliche Abstand zweier Bilder ist typischerweise konstant. Sein Kehrwert wird als Bildwiederholrate (engl.: frame rate) bezeichnet und besitzt die Dimension Bilder/sec. Sinnvolle Bildwiederholraten hngen von der Anwendung ab: Anwendung Bildwiederholrate Darstellung einer ruckelfreien Sequenz fr den Menschen 25 Bilder/sec Darstellung einer flimmerfreien Sequenz fr den Menschen 50 Bilder/sec berwachungskamera 1-5 Bilder/sec Inspektion von Objekten auf einem Flieband Taktrate der Fertigung Hochgeschwindigkeitskamera bis zu 106 Bilder/sec

2.5.2 Interlaced-Sequenzen
Bei der Entwicklung des Fernsehens war die bertragungsrate der damals unkomprimierten Bilddaten eine kritische Gre, die mglichst gering gehalten werden sollte. Andererseits sollten den Zuschauern ruckel- und flimmerfreie Sequenzen prsentiert werden. Diese gegenstzlichen Anforderungen fhrten zur Entwicklung des Interlaced-Formats. Dabei werden Halbbilder erzeugt, die sich paarweise zu einem Vollbild zusammensetzen:
Zeile 0 Zeile 1 Zeile 2 Zeile 3 Zeile 4 Zeile 5 Zeile 6 Zeile 7 Zeile 8 Zeile 9 Zeile 10 Zeile 11 Zeile 12 Zeile 13 Zeile 14 Zeile 15 Zeile 16 Zeile 17 Zeile 18 Zeile 19 Zeile 20 Zeile 21 Zeile N-2 Zeile N-1

Bild 1

Bild 2

1. Halbbild (ungerade)

2. Halbbild (gerade)

1. Halbbild (ungerade)

2. Halbbild (gerade)

Die Halbbildwiederholrate ist so gewhlt, dass der Mensch einen flimmerfreien Eindruck erhlt. Die Bildwiederholrate muss dabei einen ruckelfreien Eindruck gewhrleisten. In Europa wurden 50 Bilder/sec als Halbbildwiederholrate gewhlt, damit ergeben sich 25 Bilder/sec als Bildwiederholrate. Damit sind die Forderungen nach ruckel- und flimmerfreier Darstellung in den meisten Fllen erfllt: Gute Darstellungsqualitt erhlt man bei Flchen. Probleme ergeben sich bei Feinstrukturen. Sind diese nur eine Zeile hoch, werden sie nur in jedem zweiten Halbbild gezeigt und fhren zu einem Flimmern im Bild. Bei der Verarbeitung von Bildern aus Interlaced-Sequenzen muss beachtet werden, dass die beiden Halbbilder zu unterschiedlichen Zeitpunkten aufgenommen werden. Ist in der Szene Bewegung vorhanden, ergeben sich Objektverschiebungen zwischen den Auf-

nahmezeitpunkten. Diese fhren bei dem aus den beiden Halbbildern zusammengesetzten Bild zu Kammstrukturen:
Beispiel: Kammstrukturen durch Bewegung zwischen zwei Halbbildaufnahmen
Ausschnitt 1. Halbbild

Ausschnitt 2. Halbbild

2.5.3 Differenzielle Kodierung


Bei der Kompression von Videosequenzen mchte man mglichst wenige Informationen fr ein neues Bild in der Sequenz kodieren. Daher nutzt man aus, dass viele Informationen eines Bilds auch in benachbarten Bildern der Sequenz enthalten sind. Statt den kompletten Bildinhalt zu kodieren, kodiert man Informationen ber Verschiebungen (Verschiebevektoren) und Differenzen gegenber Nachbarbildern. Bilder werden in Blcke unterteilt. Fr jeden Block werden ein Verschiebevektor und ein Differenzblock ermittelt. Der Differenzblock wird komprimiert und zusammen mit dem Verschiebevektor zum Empfnger bertragen.
Nachbarbild Aktuelles Bild

Differenz des aktuellen Blocks Kompression

Verschiebungsvektor

Zum Empfnger senden

Beim Empfnger, der bentigte Nachbarbilder bereits kennen muss, erfolgt die ungekehrte Vorgehensweise. Er dekomprimiert die Differenzblcke, ermittelt ber die Verschiebevektoren die passenden Blcke im Nachbarbild und speichert die Summen als Inhalt des aktuellen Bilds.

2.6 Histogramm
Histogramme beschreiben Hufigkeitsverteilungen der Pixel eines Bilds: Bei Grauwertbildern trgt man die Anzahl der Pixel gleicher Intensitt H(v) ber den Intensittswerten v auf. Bei Farbbildern kann man getrennte Histogramme fr die einzelnen Farbkanle aufstellen oder auch Histogramme ber die Intensitt und die Luminanz der Pixel bilden. Letzteres entspricht dem Grauwerthistogramm.

Beispiel: Histogramme eines Farbbilds

Das rechte Diagramm zeigt die Histogrammkurven fr die Luminanz (schwarz) und fr die Farbkomponenten Rot, Grn und Blau. Beispiel: Programmcode zur Berechnung des Luminanz-Histogramms eines RGB-Bilds: #include "RGB_Pixel.h" #include "Image.h" #include "BmpRead.h" #include <iostream> #include <fstream> using namespace std; int main(int argc, char* argv[]) { Image<RGB_Pixel> img; // Bild img anlegen BmpRead("Quellbild.bmp") >> img; // Bild auslesen
// Histogramm definieren und initialisieren

long Histogramm[256]; for (int i=0;i<256;i++) { Histogramm[i]=0; }


// Histogramm der Luminanz erzeugen

for (int x=0;x<img.Width();x++) { for (int y=0;y<img.Height();y++) { RGB_Pixel& pixel=img[y][x]; int value = (299*pixel.Red()+587*pixel.Green() +114*pixel.Blue())/1000; Histogramm[value]++; } }
// Histogramm ausgeben

ofstream out("Histogramm.csv"); for (int i=0;i<256;i++) { out << i << ';' << int(Histogramm[i]) << endl; } }

Kontrastbewertung Am Histogramm lsst sich erkennen, wie gut vorhandene Wertebereiche der Pixelwerte in einem Bild ausgenutzt werden. Damit lsst sich z.B. der Kontrastumfang im Histogramm ablesen. Bei Bildern mit niedrigem Kontrast wird nur ein Teil des Wertebereichs ausgenutzt. Grosse Teile des Histogramms sind somit zu 0 gesetzt. Kontrastanpassung Aufgrund des Histogramms kann eine Kontrastanpassung des Bilds erfolgen. In der Vorverarbeitung im Schritt der Bildaufbereitung kann beispielsweise eine Equalisierung des Bilds vorgenommen werden, welche manuell oder automatisiert aufgrund des Histogramms durchgefhrt wird (siehe z.B. Histogrammequalisierung). Wahl einer Binarisierungsschwelle Bei der berfhrung geeigneter Intensittsbilder in Binrbilder mssen Schwellwerte gesucht werden, welche zuverlssig Objektpixel von Hintergrundpixeln trennen. Insbesondere bei wechselnden Beleuchtungsverhltnissen ist die regelmige Anpassung der Schwellwerte unbedingt notwendig. Die Wahl der Schwelle kann manuell durch Inspektion des Histogramms oder durch einen automatisierten Algorithmus erfolgen, der eine optimale Schwelle gem eines Gtekriteriums sucht.

Beispiel: Histogramme bei unterschiedlichem Kontrast


Niedriger Kontrast Normaler Kontrast Hoher Kontrast

Beispiel: Schwellwert zur Binarisierung eines Graubilds


Originalbild

Binrbild

Objekte

Hintergrund

Schwellwert

Wahrscheinlichkeitsdichtefunktion Die Flche unter der Histogrammkurve H(v) entspricht immer der Anzahl der Pixel des Bilds und somit der Bildgre. Fr ein Bild aus N Spalten und M Zeilen gilt somit: H (v ) dv = H (v ) = N M
Ein Histogramm lsst sich mit der Bildgre normieren und man erhlt eine normierte Histogrammkurve p(v): H (v) p(v ) = N M Die Flche unter der normierten Histogrammkurve p(v) ist dann genau 1: p(v ) dI = p(v ) = 1 Die normierte Histogrammkurve lsst sich als Wahrscheinlichkeitsdichtefunktion der dargestellten Werte interpretieren. Jeder Eintrag p(v) reprsentiert die Wahrscheinlichkeit, dass ein beliebiger Pixel des Bilds die Intensitt v besitzt.