Implementierung und Vergleich verschiedener Algorithmen zur

Transcrição

Implementierung und Vergleich verschiedener Algorithmen zur
Implementierung und Vergleich
verschiedener Algorithmen zur
Bildsensorkalibrierung
Diplomarbeit
zur Erlangung des Grades eines Diplom-Ingenieurs (FH)
im Studiengang Ingenieurinformatik
des Fachbereichs Angewandte Ingenieurwissenschaften
der Fachhochschule Kaiserslautern
angefertig bei:
Fraunhofer ITWM
vorgelegt von:
Pierre Marie Kenfack
Betreuer:
Prof.Dr. Martin Böhm
Betreuer (extern): Dipl.-Inform. Markus Rauhut
Abgabetermin: 25. Juni 2009
Eidesstattliche Erklärung
Ich versichere an Eides Statt durch meine Unterschrift,dass ich vorstehende
Arbeit selbständig und ohne fremde Hilfe angefertigt und alle Stellen, die
ich wörtlich oder annähernd wörtlich aus Veröffentlichungen entnommen
habe, als solche kenntlich gemacht habe, mich auch keiner anderen als der
angegebenen Literatur oder sonstiger Hilfsmittel bedient habe. Die Arbeit hat
in dieser oder ähnlicher Form noch keiner anderen Prüfungsbehörde vorgelegen.
Kaiserslautern, den 25. Juni 2009
Pierre Marie Kenfack Tontsop
Vorwort
Die vorliegende Arbeit wurde am Fraunhofer Institut für Techno und Wirschaftsmathemathik (ITWM) in Kaiserslautern angefertigt.
Die Fraunhofer Gesellschaft betreibt seit 1949 anwendungsorientierte Forschung in Zusammenarbeit mit Industrie- und Dienstleistungsunternehmen
sowie der öffentlichen Hand. Eine der rund 80 Forschungseinrichtungen ist das
ITWM in Kaiserslautern. Dessen Kernkompetenzen liegen in den klassischen
Gebieten der angewandten Mathemathik wie der Numerik, Differentialgleichung, Stochastik und Optimierung. Die Produkte reichen von Software, über
Beratungs- und Supportangebote bis hin zu Systemlösungen. Dafür wird nicht
nur Simulationsoftware genutzt, sondern es werden auch eigene Ansätze häufig
in Verbindung mit Softwareunternehmen entwickelt.
Während meines Praxissemesters bei der Firma Isra Vision AG kam ich das
erste Mal in Kontakt mit dem Themengebiet der indusriellen Bildverarbeitung.
Mit dem weiterhin bestehenden Interesse für dieses große, spannende und
zukunftweisende Themengebiet und der Unterstützung durch Prof.Dr. Böhm
und Prof.Dr. Terlecki ergab sich die Möglichkeit, die Diplomarbeit am ITWM
in der Abteilung Bildverarbeitung (BV) zu schreiben. In Zusammenarbeit
mit dem ITWM entwickelte sich mein Arbeitsthema. Dabei handelt es sich
um die Implementierung und den Vergleich verschiedener Algorithmen zur
Bildsensorkalibrierung mit den Schwerpunkten Weißabgleich, Vignettierung
sowie Verzerrung.
An dieser Stelle möchte ich mich bei denjenigen bedanken, die mich während
meiner Arbeit und meines Studiums begleitet und unterstüzt haben.
Zunächst möchte ich mich beim Fraunhofer ITWM für die Möglichkeit bedanken, die Diplomarbeit in der Abteilung BV durchführen zu können. Besonderer
Dank gilt dabei Herrn Markus Rauhut, der mich während der Diplomarbeit
betreut und stets unterstüzt hat. Weiterer Dank gilt meinen Betreuern von der
Fachhochschule Kaiserslautern, Herrn Prof.Dr. Martin Böhm und Prof. Georg
Terlecki, die den Kontakt zum ITWM hergestellt haben. Allen drei danke ich
für Ihre Aufmerksamkeit und ständige Hilfsbereitschaft.
Dank möchte ich natürlich meinen Eltern und meinen Geschwistern aussprechen, die mich während des Studiums unterstüzt und mich mit viel Geduld
und Verständnis begleitet haben.
ii
Abschliessend möchte ich mich auch bei Freunden und Kommilitonen für Ihre
Hilfe während meiner Studienzeit bedanken.
Kaiserslautern, Sommer 2009
Pierre Marie Kenfack
Inhaltsverzeichnis
1 Einleitung
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1
2
2 Grundlagen
2.1 Kamerasystem . . . . . . . . . . . . .
2.1.1 Linsensystem . . . . . . . . . .
2.1.2 Bildsensor . . . . . . . . . . . .
2.1.3 Objektive . . . . . . . . . . . .
2.2 Kameraparameter . . . . . . . . . . .
2.2.1 Extrinsische Kameraparameter
2.2.2 Intrinsische Kameraparameter .
2.3 Wavelets . . . . . . . . . . . . . . . . .
2.4 Mathematische Grundlagen . . . . . .
2.4.1 Interpolation . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
3
3
3
3
5
6
7
7
7
8
8
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12
13
13
15
16
18
19
19
21
21
22
23
25
26
28
31
.
.
.
.
.
.
.
.
.
.
3 Farbtemperatur und Weißabgleich
3.1 Farbtemperatur . . . . . . . . . . . . . .
3.2 Farbmodelle . . . . . . . . . . . . . . . .
3.2.1 Das RGB-Farbmodell . . . . . .
3.2.2 Das CMY-Farbmodell . . . . . .
3.2.3 Das HSI-Farbmodell . . . . . . .
3.2.4 Das YCbCr-Farbmodell . . . . .
3.3 Weißabgleich . . . . . . . . . . . . . . .
3.4 Algorithmen zum Weißabgleich . . . . .
3.4.1 Greyworld-Algorithmus . . . . .
3.4.2 Greyworldretinex-Algorithmus .
3.4.3 Weißabgleich nach Cheng et. al.
3.5 Ergebnisse und Diskussion . . . . . . . .
3.5.1 Tests und Beurteilung . . . . . .
3.5.2 Ergebnisse . . . . . . . . . . . . .
3.5.3 Fazit . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 Korrektur von inhomogen beleuchteten Bildern - Vignettierung 32
4.1 Vignettierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.1.1 Natürliche Vignettierung . . . . . . . . . . . . . . . . . . 33
INHALTSVERZEICHNIS
4.2
4.3
ii
4.1.2 Künstliche Vignettierung . . . . . . . . . . . . . . . . . . 34
Verfahren zur Korrektur von Vignettierung . . . . . . . . . . . . 35
4.2.1 Korrektur von Vignettierung mit Hilfe der LUT . . . . . 36
4.2.2 Korrektur von Vignettierung durch Wavelets mit Reduzierung 37
Ergebnisse und Diskussion . . . . . . . . . . . . . . . . . . . . . . 38
5 Bildverzerrung und Korrektur
5.1 Linsenverzerrung . . . . . . . .
5.1.1 Radiale Verzerrung . . .
5.1.2 Tangentiale Verzerrung
5.2 Perspektivische Verzerrung . .
5.3 Verfahren zur Bildentzerrung .
5.3.1 HTRDC . . . . . . . . .
5.3.2 Entzerrung . . . . . . .
5.4 Ergebnisse und Diskussion . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6 Zusammenfassung und Ausblick
47
A Toolip
A.1 Schritte zur Handhabung der entwickelten
A.1.1 Entzerrung . . . . . . . . . . . . .
A.1.2 Vignettierung . . . . . . . . . . . .
A.1.3 Weißabgleich . . . . . . . . . . . .
B Listings
B.1 Vignetierung . . . . . .
B.2 Entzerrung . . . . . . .
B.3 Weißabgleich . . . . . .
B.3.1 Greyworld . . . .
B.3.2 retinex . . . . . .
B.3.3 greyworldretinex
B.3.4 Cheng et al. . . .
Literaturverzeichnis
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
41
41
42
43
44
44
44
45
46
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Algorithmen in Toolip
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
49
49
49
49
49
.
.
.
.
.
.
.
57
57
58
59
59
60
61
63
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
70
Kapitel 1
Einleitung
Im Amateur- und professionellen Bereich, werden für das Erstellen von Filmen
und Photos heutzutage fast ausschließlich digitale Kameras verwendet. Viel
interessanter ist es, wie die Kameras für nützliche und dem Menschen erleichternde Tätigkeiten in technischen Bereichen wie der industriellen Messtechnik
(Photogrammetrie1 ), der Medizin und der Oberflächeinspektion zum Einsatz
kommen. Wenn man an die Anwendungen von Kameras in der Photogrammetrie
oder der Oberflächeinspektion denkt, muss man sich mit folgenden Problemstellungen auseinandersetzen: Wie genau muss das Bild sein um die Realität
möglichst detailgetreu wiederzugeben und wie kann dies erreicht werden? Desweiteren lässt sich folgende Frage stellen: Ist es möglich, dass die Kamera jemals
das menschliche Auge ersetzen kann und welche Anforderungen bringt das mit
sich?
1.1
Motivation
Sollen bildwiedergebende Geräte bei einer Messung oder bei einer Operation
(Medizintechnik) oder bei der Analyse von einer Oberfläche als Mittel zum
Erfassen von Informationen verwendet werden, so ist es wichtig, dass diese
Geräte exakte Daten bzw. Informationen zurückliefern.
Das Herzstück einer digitalen Kamera ist der Halbleiter-Bildsensor. Er bildet
ein System zur Umwandlung von optischen in elektrische Informationen und
spielt in der Bildverarbeitung sowie der optischen Messtechnik heutzutage
eine herausragende Rolle. Bildsensoren werden in vielen gebräuchlichen
elektronischen Geräten wie digitalen Fotoapparaten, Überwachungskameras,
Mobiltelefonen und PDAs eingebaut. Sollen elektronische Geräte eingesetzt
werden, die Bildsensoren als Mittel zum Erfassen von Informationen benutzen,
so ist es offensichtlich notwendig, dass diese Geräte anhand eines Kamerabildes
exakte Informationen zurück liefern können. Ein Loch in einer Karosse (Kreis
oder Ellipse), ein Kratzer auf der Oberfläche eines Produkts oder die Farbe in
einem Motiv sollen korrekt wiedergegeben werden.
1
Fachgebiet das sich mit der Extraktion zuverlässger und genauer dreidimensionaler Information aus Bilddaten anhand von Verfahren der Bildanalyse zur Messaufgabe sowie Verfahren
der Statistik zur Optimierung von Lösung beschäftigt
1.2 Ziele
1.2
2
Ziele
Unter der Kalibrierung einer Kamera versteht man die Bestimmung der Abbildungseigenschaften einer Kamera (innere Orientierung (intrinsische Parameter)) sowie die äußere Orientierung (extrinsische Parameter), welche die Lage
und die Ausrichtung des Koordinatensystems in einem übergeordneten Weltkoordinatensystem beschreibt. In der Literatur wird die Kalibrierung auf die
Ermittlung einer 3D-2D Transformation reduziert, denn die Bestimmung von
diesen intrinsischen und extrinsischen Parametern ermöglicht es, die Bilder so
zu transformieren, dass sie den Bildern einer idealen Kamera entsprechen. Die
Ermittlung von diesen Parametern geschieht oft durch die Aufnahme eines Kalibriermusters.
Die Erfahrung mit Kameras hat gezeigt, dass die Abbildung eines Weltpunktes
auf einen Bildpunkt eine Verzerrung verursacht, so dass falsch gebaute bzw. erstellte Objektive bestimmte Fehler aufweisen, die bei der Aufnahme unter einer
bestimmten Beleuchtung zu Farbstichen im Ergebnisbild führen können. Ziel
dieser Arbeit ist es, Algorithmen zur Bildsensorkalbrierung zu entwickeln, die
Abbildungsfehler, wie Verzerrung oder die Vignettierung und chromatische Abberation beseitigen können. Für die Kalibrierung existieren automatische, semi
automatische und manuelle Methoden. In dieser Arbeit wird der Schwerpunkt
auf automatische Verfahren gelegt. Die meisten Algorithmen gehen von der
Idee aus, dass die zu justierenden Werte bzw. Korrekturfaktoren erst nach der
Bildaufnahme ermittelt werden können. Verschiedene Algorithmen zum Weißabgleich und Korrektur von Abbildungsfehlern werden dargestellt und anhand
einer Diskussion werden die Vor- und Nachteile der dargestellte Verfahren erklärt. Diese Arbeit gliedert sich in fünf weitere Kapitel, wie folgt:
Während Kapitel drei, vier und fünf sich mit der Darstellung und der Diskussion über Verfahren zur Vignettierung, zum Weißabgleich sowie Verzerrung und
Entzerrung beschäftigen, werden in Kapitel zwei einige Grundlagen vermittelt.
In Kapitel sechs erfolgt eine Zusammenfassung dieser Arbeit, gefolgt von einer
Diskussion und anschließendem Ausblick für zukünftige Arbeiten.
Kapitel 2
Grundlagen
2.1
2.1.1
Kamerasystem
Linsensystem
Das Linsensystem hat die Aufgabe ein Abbild des Gegenstandraums auf der
Bildebene zu erzeugen. Diese Abbildung wird mathematisch durch eine Lochkamera modelliert. Reale Linsen sind jedoch komplizierter aufgebaut als eine
Lochkamera und haben verschiedene Abbildungsfehler (wie z.B. Aberration,
Verzerrung, Dezentrierung und Vignettierung) die in dieser Arbeit näher betrachtet werden sollen. Abbildung 2.4 zeigt ein Beispiel eines Linsensystems
eines Objektivs.
2.1.2
Bildsensor
Digitale Verarbeitung setzt eine Umsetzung der Bilddaten in elektrische Signale
voraus. Ein signifikanter Fortschritt zur Umwandlung sichtbaren Lichts stellen
die Halbleitersensoren dar. In Bildverarbeitungssystemen werden oft Flächenund Zeilenkameras eingesetzt, die fast ausschließlich mit Halbleitersensoren
bestückt sind. Ein Bildsensor ist das Herzstück digitaler Kamerasysteme, der
einfallendes Licht in elektrische Information umwandelt, die dann durch die Kameraelektronik verarbeitet werden kann. Ihre Eigenschaften wie Pixelzahl, Typ,
Empfindlichkeit,Rauschverhalten, Farbfilterraster oder ihre Größe sind entscheidende Parameter für die erreichbare Bildqualität. Die Empfindlichkeit und die
Farbfilterraster von Bildsensoren werden in Kapitel 3 detailliert diskutiert. Im
Wesentlichen wird zwischen zwei verschiedenen Bildsensormodellen unterschieden:
• CCD-Sensoren
Entwickelt in den 60er Jahren von Forschern der Béll Laboratorien in
den USA, sind die CCD-Sensoren (Charged Coupled Device) Bestandteil
vieler Digitalkameras, digitaler Videokameras und vielen optischen Erfassunseinrichtungen. In der digitale Fotografie und Videotechnik werden
herrkömmliche Filme (vgl. Analogtechnik) durch CCD-Sensoren ersetzt.
Anstatt durch das Objektiv auf einen chemischen Träger zu belichten,
wird das Bild auf den Sensor projiziert und digital gespeichert.
2.1 Kamerasystem
4
Ein CCD-Sensor besteht aus einer oder mehreren Reihen von Einzelsegmenten in denen ein Ladungsbild (elektrische Ladung) gespeichert wird.
Die Einzelsegmente sind in Form einer Matrix angeordnet und mit einem
lichtempfindlichen Material versehen. Beim Auftreffen eines Lichtsignals
sendet das lichtempfindliche Material Elektronen aus, die in den Einzelsegmenten gespeichert werden. Das gesamte Ladungsbild des CCD-Sensors
entspricht somit der Lichtintensität an jedem einzelnen Punkt auf dem
CCD-Sensor. Der Sensor selbst wird neben seinen Abmessungen maßgeblich durch die Anzahl der Einzelsegmente bestimmt. Diese Auflösung in
Pixeln ist eine wichtige Kenngröße für die Leistungsfähigkeit: Je mehr
Pixel, desto höher ist die Auflösung. Da der CCD-Sensor keine Farben
unterscheiden kann, wird mit entsprechender Filterung für jede Grundfarbe ein Einzelbild bestimmt; die drei Einzelbilder dann für RGB codiert
ausgegeben (Vgl Kapitel 3).
(a)
(b)
Abbildung 2.1: (a) CCD-Sensor mit 33 Mpixel der Fa. DALSA Quelle:[DAL09]
(b) CCD-Sensor mit 12 Mpixel der Fa. DALSA Quelle:[DAL09]
• CMOS-Sensoren
Der CMOS-Sensor ist ein lichtempfindliches Bauelement, das zur Umwandlung von Lichtsignalen in Digitalkameras und digitalen Videokameras eingesetzt wird.
Bei der CMOS-Technologie wird das Ladungsbild pixelweise ausgelesen.
Jeder Pixel kann einzeln adressiert werden und verfügt über einen eigenen
Konverter. Der Vorteil liegt in der partiellen Auslesung von Teilbildern.
Die Auflösung von CMOS-Sensoren liegt bei mehreren Millionen Dots per
Inch (dpi). Es gibt bereits CMOS-Sensoren mit einer Auflösung von über
1.000 x 1.000 Pixel in einer Größe von etwa 15µm x 15µm.
Digitale Kameras können mit einem CCD oder CMOS Sensor bestückt sein.
Doch wo liegen eigentlich die Stärken und Schwächen und wo die Unterschiede
zwischen CCD und CMOS Sensoren? Ein wesentlicher Unterschied liegt hier
in der Verstärkung der Signale. Bei CCD Sensoren werden erst die Signale
über einer ganzen Ebene verstärkt, bevor diese von analogen in digitale Signale umgewandelt werden. Bei CMOS Sensoren werden die Pixelsignale einzeln
verstärkt und digitalisiert. Weiterhin sind CMOS Sensoren in der Herstellung
einfacher zu fertigen, dadurch günstiger und für großformatige Sensoren spielt
letztendlich der Kostenfaktor eine nicht unerhebliche Rolle.
2.1 Kamerasystem
2.1.3
5
Objektive
Ein Objektiv ist ein sammelndes optisches System bestehend im wesentlichen
aus mehr oder minder großer Anzahl von Linsen oder Spiegeln und einer Fassung, das eine optische Abbildung eines Objektes erzeugt. Das Hauptmerkmal
eines Objektivs ist dessen Brennweite. Desweiteren sind auch Eigenschaften
wie die Bildqualität, die Lichtstärke und ein geringes Streulicht von Bedeutung.
Brennweite von Objektiven
Die Brennweite eines Objektivs entspricht der Entfernung zwischen dem Bildsensor und dem optischen Mittelpunkt eines Objektivs. Die Brennweite gibt
Informationen über den Bildwinkel eines Objektivs, d.h. die Grösse des abzubildenden Bereiches. Physikalisch gesehen, beschreibt der Bildwinkel das Maximum, in dem ein Objekt sich befinden sollte, um auf dem Film erfasst zu
werden. Abbildung 2.2 zeigt Beispielbildwinkel von häufig verwendeten Objektiven. Nachfolgend eine Vorstellung der häufig verwendeten Objektiven:
Abbildung 2.2: Bildwinkel von häufig benutzten Objektiven
• Weitwinkelobjektive
Als einer der am häufigsten verwendeten Objektiven, besitzen die Weitwinkelonbjektive eine Brennweite (zwischen 28mm und ca. 40mm ) geringer als die Diagonale des Aufnahmeformats. Sie haben meistens Bildwinkel zwischen ca. 60◦ und 80◦ . Mit Weitwinkelobjektiven kann man
mehr als das, was das menschliche Auge sieht, aufnehmen.Daher werden
diese Objektive in der Landschsfts- und Architekurfotografie bevorzugt
eingesetzt. Bedingt durch ihre Konstruktion können diese Objektive Verzerrung im Ergebnisbild verursachen.
• Standardobjektive
Mit Standard- oder Normalobjekiven bezeichnet man Objektive, deren
Bildwinkel in etwa dem deutlichen Sehwinkel des menschlichen Auges (ca.
45◦ ) entsprechen. Die Brennweite von diesem Objektivtyp entspricht der
2.2 Kameraparameter
6
Abbildung 2.3: Abbildung eines Weitwinkelobjektivs Quelle:[Fot09]
Diagonalen des Filmformates. Standardobjektive sind für größere Aufnahmeentfernungen korrigiert und haben deshalb meist einen asymmetrischen
Aufbau. Fast alle in einfachere Kameras fest eingebauten Objektive sind
Normalbrennweiten-Objektive.
Abbildung 2.4: Abbildung eines Standardobjektivs Quelle:[Fot09]
• Teleobjektive
Im Vergleich zu Normalobjektiven besitzen Teleobjektive eine längere
Brennweite und einen kleinen Bildwinkel. Telobjektive werden eingesetzt,
wo gilt: Die Entfernung zum Motiv zu überbrücken. Dies ist oft der Fall bei
Sportfotografie, Reportagefotografie, Tierfotografie und vor allem wenn es
darum geht, das Motiv von dem Hintergrund zu trennen.
Abbildung 2.5: Abbildung eines Teleobjektivs Quelle:[Fot09]
2.2
Kameraparameter
Die Parameter einer Kamera lassen sich in interne und externe aufteilen.
Während die letzteren die Lage der Kamera bezüglich eines globalen Koordinatensystems beschreibt, beschreiben die internen Parameter die Abbildung
der Weltpunkte von lokalen Koordinatensystem der Kamera in das Bild.
2.3 Wavelets
2.2.1
7
Extrinsische Kameraparameter
Die extrinsischen Parameter definieren den Zusammenhang zwischen dem 3DKamerakoordinatensystem und dem 3D-Weltkoordinatensystem und die Orientierung: Welt–Kamerakoordinaten. Diese Parameter sind:
• die Orientierung: α, β, γ
• die Position: tx , ty , tz
Diese Parameter verändern sich wenn man die Kamera im Raum bewegt. Sie
bilden die Komponenten der homogenen Transformation, die die Weltkoordinaten in Kamerakoordinaten überführt. Die Transformation des Weltkoordinatensystems in Kamerakoordinatensystem besteht aus einer Rotation und einer
Translation.
2.2.2
Intrinsische Kameraparameter
Die intrinsischen Kameraparameter sind invariant gegenüber der Translation
und Rotation der Kamera im Raum. Sie definieren die Abbildung zwischen dem
3D-Kamerakoordinatensystem (metrisch) und dem 2D-Bildkoordinatensystem
(in Pixeln). Sie beschreiben also die interne Geometrie der Kamera. Diese Parameter sind:
• die Brennweite f
• k, ... Parameter der Linsenverzerrung (je nachdem wie man die Linse modelliert)
• cx , cy Hauptpunkt der Kamera
• Sx Skalierung durch elektronische Übertragung
2.3
Wavelets
In den letzten Jahren hat sich die Wavelet-Theorie aus unterschiedlichen wissenschaftlichen Gebiete wie der Informatik, der Physik, und der Mathematik entwickelt. Mit Wavelet bezeichnet man in der Literatur die kontinuierliche oder diskreten Wavelet-Transformation von Funktionen. Im Gegensatz zur
üblichen Fourriertransformation besitzen diese Funtionen Lokalisierungseigenschaften (d.h. bei einer Änderung eines Signals an einer Stelle impliziert auch
einer überall Änderung der Transformierten) im Orts- wie Impulsraum (bzw.
im Zeit wie im Frequenz-Bereich). Anwendungen von Wavelet-Transformation
reichen von der Signalverarbeitung (Medizin, Biologie, Geowissenschaften) über
die digitale Bildverarbeitung (Bilddatenkompression, Unterdrückung von Rauschen) bis zur numerische Mathematik (Approximationmethoden).
Bis zum heutigen Zeitpunkt ist die Bildkompression die vielleicht erfolgsreichste
Anwendung der Wavelets. Sie beruht auf die Feststellung, dass für die meisten Bilder einige große Wavelets-Koeffizienten sehr klein sind. Eine analoge
2.4 Mathematische Grundlagen
8
Überlegung ist bei der Verwendung von Wavelets zur Rauschreduzierung festzustellen: Orthogonale Wavelets transformieren weißes Rauschen in weißes Rauschen und somit verteilt sich das Rauschen gleichmäßig über alle WaveletsKoeffizienten. Dieser Umstand ermöglicht das Extrahieren der wenigen großen
Wavelet-Koeffizienten und eliminiert das meiste Rauschen, indem die kleinen
Wavelet Koeffizienten gleich 0 gesetzt werden.
In dieser Arbeit wurden die Wavelets zur Rauschreduzierung und zur Bildkompression ( Siehe Abschnitt 4.2.2 ) verwendet.
2.4
2.4.1
Mathematische Grundlagen
Interpolation
In der technischen Welt bedeutet die Interpolation eine Reihe von numerischen
Verfahren zur näherungsweisen Bestimmung von Zwischenwerten aus der Anordnung bzw. dem Verlauf vorhandener Werte. In der Bildtechnik geht man
bei der Interpolationsmethode von der statistische Annahme aus, dass benachbarte Punkte eine ähnliche Helligkeit bzw. Farbe besitzen. Daher wird für die
Berechnung von neuen Bildpunkten jeweils, die im direkten Umkreis liegenden
Pixelnachbarn berücksichtigt. Bei den Bildverarbeitungsapplikationen zur Bildverbesserung werden drei Interpolationsmethoden häufig eingesetzt, die in den
nächsten Abschnitten vorgestellt werden.
Die Nächste-Nachbarn-Interpolation
Der Farbwert eines Bildpunktes wird durch den Farbwert des am nächsten liegenden Punktes ermittelt. Dabei wird zur Bestimmung der zu einem beliebigen
Abbildung 2.6: Interpolation über den nächsten Nachbarn: Jeder Punkt im
neuen Raster bekommt den Grauwert des nächsten Nachbarn zugewiesen.
Bildpunkt (x0 , y0 ) nächstliegende Pixelkoordinaten (u0 , v0 ) die x- und y- Komponenten unabhängig voneinander auf den nächsten ganzzahligen Wert gerundet:
(
u0 = bx0 + 0.5c
ˆ 0 , y0 ) = I(u0 , v0 )
I(x
mit
(2.1)
v0 = by0 + 0.5c
Dieses Verfahren wird eingesetzt, wenn ein gewisser Qualitätsverlust in Kauf
genommen werden kann und außerdem ist die Nächste-Nachbarn Interpolation
eine der sehr schnelle Interpolationsmethode.
2.4 Mathematische Grundlagen
9
Bilineare Interpolation
Durch die geometrische Bildoperation liegt im Ergebnisbild ein regelmäßiges
Raster in Form von Rechtecken vor, somit lassen sich Zwischenpunkte anhand
bilinearer Interpolation ermitteln.
Abbildung 2.7: Bilineare Interpolation
Dabei wird zunächst zur Transformation von Ausgangs- in Ergebnisbild ein
Netz aus Ankerpunkten A,B,C,D wie folgt ermittelt (vgl. Abbildung 2.8):
Abbildung 2.8: Bilineare Interpolation: Der Interpolationswert G für die Position (x0 , y0 ) des nächstliegenden Bildwertes A,B,C,D ermittelt. Zunächst werden
durch lineare Interpolation über den Abstand zum Bildraster a = (x0 − u0 ) die
Zwischenwerte E und F bestimmt. Anschließend erfolgt ein weiterer Interpolationsschritt in vertikaler Richtung zwischen den Werten E und F, abhängig von
der Distanz b = (y0 − v0 ). Quelle:[Neu05]
A = I(u0 , v0 ),
B = I(u0 +1, v0 ),
C = I(u0 , v0 +1) und
D = I(u0 +1, v0 +1)
(2.2)
Dabei ist u0 = bx0 c und v0 = by0 c.
Es wird dann anschließend in horizontaler und vertikaler Richtung linear interpoliert.
Durch dieses Verfahren tritt eine qualitative Verbesserung der Bildqualität
ein. Im Gegensatz zu der Methode des nächsten Nachbarn, wo die Koordinaten einfach gerundet werden, werden hier die nächsten vier umliegenden Pixel
2.4 Mathematische Grundlagen
10
berücksichtigt. Dieses Verfahren liefert mit grösserem Rechenaufwand geringere Treppeneffekte und wird häufig in Bildverarbeitungsapplikationen bevorzugt,
weil es schneller als die bikubische Interpolation ist und trotzdem noch qualitativ gute Ergebnisse liefert.
Bikubische Interpolation
Im Gegensatz zur bilinearen Interpolation werden hier zur Berechnung des interpolierten Wertes die Werte der 4x4 umliegenden Pixeln zu Rate gezogen.
Dadurch wird die Qualität des Ergebnisbildes wesentlich besser, allerdings zum
Preis einer längeren Rechenzeit.
Durch diese Methode wird dann die Helligkeitsfunktion durch kubische Polynome approximiert, die folgenderweise definiert sind:
wcub (x, a) =

3
2

(a + 2)· |x| − (a + 3)· |x| + 1 f ür 0 ≤ |x| < 1
a· |x|3 − 5a|x|2 + 8a· |x| − 4a f ür 1 ≤ |x| < 2


0
f ür |x| ≥ 2
(2.3)
Die Steilheit der Funktion wird mit Hilfe der Steuerparameter bestimmt. Für
den Standardwert a = −1 ergibt sich folgende vereinfachte Definition:

3
2

|x| − 2· |x| + 1 f ür 0 ≤ |x| < 1
wcub (x) =
(2.4)
−|x|3 + 5|x|2 − 8· |x| + 4 f ür 1 ≤ |x| < 2


0
f ür |x| ≥ 2
Die Berechnung der interpolierten Werte erfolgt dann in x- und y- Richtung
mit folgendem Ansatz:
ˆ 0 , y0 ) =
I(x
3
3
X
X
[wcub (vj − y0 )·
I(ui , vj )· wcub (ui − x0 )]
j=0
(2.5)
i=0
wobei ui = bx0 c − 1 + i und vj = by0 c − 1 + j.
Vergleich der verschiedenen Interpolationsverfahren
• Die bikubische Interpolation führt in den meisten Fällen zum schärfsten
und qualitativ hochwertigsten Ergebnis.
• Die bilineare Interpolation führt zu schärferen Ergebnissen als die
Nächste-Nachbarn Interpolation, ist jedoch weniger scharf als die bikubische Interpolation.
• Das Interpolationsverfahren Nächster Nachbar ist zwar sehr schnell aber
führt zu gezackten Kanten und scharfen Kontrasten ohne Übergänge.
2.4 Mathematische Grundlagen
(a) Schritt 1
11
(b) Schritt 2
Abbildung 2.9: Bikubische Interpolation in zwei Schritten: Das diskrete Bild
I (Pixel sind mit ◦ markiert) soll an der Stelle (x0 , y0 ) interpoliert werden.
In (a) wird jeweils über 4 Pixel I(ui , vj ) interpoliert und für jede betroffene
Zeile ein Zwischenergebnis pj (mit markiert ) berechnet. In (b) wird einmal
vertikal über die Zwischenergebnisse p0 ...p3 interpoliert und damit das Ergebnis
ˆ 0 , y0 ) berechnet. Quelle:[Neu05]
I(x
Kapitel 3
Farbtemperatur und
Weißabgleich
Unabhängig von der Art der Beleuchtung ist der Mensch in der Lage, die
Farbe von Objekten korrekt einzuschätzen. Bei der Aufnahme (mit einem
Bildsensor) eines weißen Blatt Papiers unter einem Baum ist das Ergebnisbild
normalerweise leicht grünlich, im offenen Schatten wirkt es sogar bläulich, und
am späten Nachmittag rötlich. Unser Auge und unser Gehirn stellen sich auf
das Umgebungslicht automatisch ein. Dank unserer chromatischen Adaption
erscheint uns dieses Blatt immer weiß. Die Fähigkeit, die Farben von Objekten
korrekt einzuschätzen, wird als Farbkonstanz bezeichnet. Die Farben bleiben
konstant unabhängig von der Art der Beleuchtung. Diese unterschiedlichen
Reaktionen vom Auge und Bildsensoren auf Farbtemperaturdifferenzen in der
Beleuchtung ist einer der Gründe warum so viele Fotos manchmal unnatürlich
wirken. Da der Bildsensor einer Digitalkamera eine recht genaue Wiedergabe
der Farbtemperatur liefert, ist es notwendig den Bildsensor in der Kamera auf
die Farbe der Lichtquelle zu kalibrieren (einzustellen) um die Aufnahme mit
natürlichen Farben zu gewährleisten. Diese Einstellung wird in der Bildverarbeitung als Weißabgleich bezeichnet. Der Weißabgleich kann automatisch von
der Kamera oder manuell durch den Bediener durchgeführt werden. Liegen
die Bilder schon digital vor, so können diese Bilder durch Verfahren wie
”Greyworld”, ”MaxWhite”(”Retinex”) und die Verfahren nach Weng et al.
oder nach Lam (siehe 3.4.2) korrigiert werden.
Anlehnend an Grundlagen aus [GW08, Hec05, Ber05] widmet sich dieses
Kapitel im ersten Teil der Farbtemperatur von Lichtquellen, wie diese zu
ermitteln sind und welche Auswirkung ihre Änderung auf Ergebnisbilder
haben kann. Im zweiten Teil wird über die Darstellung von Farbbildern in
den verschiedenen Medien berichtet. Im dritten Teil werden einigen Verfahren
wie Greyworld und Max White Point (Von Lam als Retinex bezeichnet)
sowie die Methode nach Weng et al. erläutert. Anschließend wird anhand von
Ergebnissen eine Diskussion über die Qualität sowie die Vor- und Nachteile
von Verfahren zum Weißabgleich durchgeführt.
3.1 Farbtemperatur
3.1
13
Farbtemperatur
Die Beschreibung einer Lichtquelle erfolgt anhand des sogenannten schwarzen
oder Planck‘schen Strahlers, wie Max Planck1 es mit Hilfe von schwarzen
Körpern physikalisch erklärt hat. Ein schwarzer Körper absorbiert die einfallende Strahlung unabhängig von ihrer Wellenlänge, reflektiert also keine
Strahlung.
Technisch gesehen handelt es sich um einen innen geschwärzten Hohlkörper mit
einer kleinen Öffnung. Erhitzt man einen solchen Körper,wird er irgendwann
beginnen rot zu glühen. Erhitzt man weiter glüht er gelb, dann weiss, und
schließlich blau. Es tritt aus der Öffnung ein kontinuierlichiches Strahlungsspektrum (siehe Abbildung 3.1), deren Farbe sich mit der Temperatur des
Körpers ändert.
Die spektrale Zusammensetzung des Lichts, den ein schwarzer Körper bei einer
bestimmten Temperatur aussendet, charakterisiert man mit der Farbtemperatur.
Die Farbtemperatur beschreibt eine Lichtsituation mit einem einzigen Zahhlenwert. Dieser Zahlenwert entspricht der Temperatur eines idealen schwarzen
Körpers, so dass dessen Strahlungsspektrum ungefähr der beschriebenen
Lichsituation entspricht. Tabelle 3.1 und Abbildung 3.2 zeigen Beispiele für
typische Farbentemperaturen
Lichquelle
Kerzenlicht
40 W Glühbirne
40 W Glühbirne
Halogenglühbirne
Blitzlichtaufnahme
Nebel
Blauer Himmel
Farbtemperaturen
1500 K
2680 K
3000 K
3400 K
6000 K
8000 K
9000 - 12000 K
Tabelle 3.1: Beispiele für typische Farbtemperaturen(Anhaltswerte)
3.2
Farbmodelle
Um die gemessenen Werte der Farbwahrnehmung des menschlichen Auges
möglichst genau darzustellen, gibt es verschiedene Farbmodelle. Farbmodelle
sind Koordinatensysteme, die alle sichtbaren Farben eines bestimmten Farbraums enthalten. Ein Farbraum ist die Bezeichnung für einen Bereich von
Farben, der unter bestimmten Bedingungen oder durch ein bestimmtes Verfahren dargestellt werden kann, z.B. RGB oder CMYK. Im Folgenden sollen
1
Max Planck (* 23. April 1858 in Kiel; † 4. Oktober 1947 in Göttingen) ist der Begründer
der Quantenphysik
3.2 Farbmodelle
14
Abbildung 3.1: Strahlenspektrum des schwazen Körpers bei unterschiedlichen
Temperaturen. Auf der Black-Body-Kurve befinden sich Normlichtfarben die
mit einer Farbtemperatur verbunden sind. Auf dem rot gezeichneten Spektralfarbenzug lassen sich die Wellenlängen (380nm-780nm) der Spektralfarben ablesen. Die Purpurlinie verbindet den Punkt der kurzwelligsten UV-Strahlung
mit dem Punkt der langwelligsten IR-Strahlung und schließt so den Spektralfarbenzug. Quelle:[Wik09].
3.2 Farbmodelle
Abbildung 3.2:
Quelle:[IM09].
15
Unterschiedliche
Farbtemperaturen
im
Tagesverlauf.
drei für die Bildverarbeitung wichtige Farbmodelle (RGB, CMY, HSI) sowie
ein Farbmodell (YCbCr-), das in einigen Verfahren dieser Arbeit Anwendung
findet, kurz dargestellt werden.
3.2.1
Das RGB-Farbmodell
Das RGB-Farbmodell basiert auf der Mischung der drei Grundfarben Rot
(R),Grün(G) und Blau(B). Es ist die Grundlage der Farbdarstellung im Computer, bei Digitalkameras, und Scannern sowie bei der Speicherung in Bilddateien.
RGB ist ein additives Farbschema, d.h. die Farbmischung erfolgt ausgehend von
Schwarz durch Summieren der einzelnen Komponenten. Man kann sich diese
Farbkombination als Überlagerung von drei Lichtstrahlen in den Grundfarben
Rot, Grün, Blau vorstellen, die in einem dunklem Raum (siehe Abbildung 3.3)
auf ein weißes Blattpapier gerichtet sind und deren Intensität individuell und
kontinuierlich gesteuert werden kann. Die unterschiedliche Intensität der Farbkomponenten bestimmt dabei, sowohl den Ton, wie auch die Helligkeit der resultierenden Farbe.
Das RGB-Farbmodell bildet einen 3D-Einheitswürfel, dessen Koordinatenach-
Abbildung 3.3: RGB-Farbmodell]. Quelle:[Hei09].
sen den drei Grundfarben R, B und G entsprechen. Die acht Ecken stehen für
folgende Primärfarben: Rot, Grün, Blau, Cyan, Magenta, Gelb, Schwarz, Weiß
(siehe Abbildung 4.1(a)). Jede Farbe in diesem Würfel wird nun durch ihre Koordinate charakterisiert, die sich jeweils aus den Anteilen der drei Primärfarben
3.2 Farbmodelle
16
Rot, Grün und Blau zusammensetzt. Die Grauwerte befinden sich auf den
Würfeldiagonalen, sind positiv und auf den Wertebereich [0, Cmax ] beschränkt,
wobei für Digitalbilder meistens Cmax = 255 gilt.
(a)
(b)
Abbildung 3.4: (a) Darstellung des RGB-Farbraums als 3D-Einheitswürfel(auf
1 normiert) mit Schwarz als Koordinatenurprung. Quelle:[IW09], (b) Beispiel
RGB-Werte
Das RGB-Farbsystem ist besonders gut auf (emittierende) Geräte anwendbar,
die selbst Lichtwellen aussenden. Typische Beispiele wären ein Farbmonitor oder
ein Farbfernsehgerät. Wenn man den Bildschirm eines Farbfernsehgerätes oder
eines Farbmonitors mit einer Lupe betrachtet, dann sieht man, dass dieser das
Bild aus vielen einzelnen Punkten aufbaut, die sich jeweils wieder aus einem
roten, einem grünen und einem blauen Punkt zusammensetzen. Betrachtet man
das Bild mit einem gewissen Abstand, dann fließen diese Farbanteile ineinander
und es entsteht ein einheitlicher Farbeindruck. Der Wert für jeden Kanal (Rot,
Grün oder Blau) kann zwischen 0 (keine Farbe) und 255 (vollständig gesättigte
Farbe) liegen. RGB-Farben werden auch als 24-Bit-Farben oder Millions of Colors bezeichnet.
3.2.2
Das CMY-Farbmodell
Im Gegensatz zum RGB-Farbmodell unterstützt das CMY-Farbmodell nicht
das additive, sondern das subtraktive Farbmischverfahren. Dabei werden, ausgehend von den drei Grundfarben Zyan (cyan), Magenta (mangenta) und Gelb
(yellow), die übrigen Farbnuancen durch Subtraktion (Filtern) dieser Grundfarben von Weiß definiert. Schwarz entsteht also, wenn man alle drei Grundfarben
von Weiß abzieht.
Dieses subtraktive Farbmischverfahren ist immer dann anzuwenden, wenn die
Reflexion von Licht ins menschliche Auge gelangt, also z.B. bei Farbdruckern,
die ihre Farbe auf Papier aufbringen. Das bedruckte Papier wird zum Betrachten mit Licht beleuchtet, die Reflexion dieser Beleuchtung gelangt ins
Auge und wird mit Hilfe des Gehirns einem Farbsinneseindruck zugeordnet.
Das CMY-Farbmodell setzt dieses subtraktive Farbmischverfahren direkt in
ein Zahlenmodell um. Bei diesem Zahlenmodell handelt es sich wieder um
3.2 Farbmodelle
17
Quelle:[GIM09]
(a) Original
(b)
(c)
(d)
Abbildung 3.5: RGB Bild mit seinen Komponenten (b), (c) und (d)
den 3D-Einheitwürfel (Abbildung 3.6(a)), bei dem die Ecken wie beim RGBFarbmodell den bekannten acht Grundfarben Rot, Grün, Blau, Cyan, Magenta,
Gelb, Schwarz und Weiß zugeordnet sind. Der Farbraum beider Verfahren ist
also gleich. Der Unterschied zum RGB-Würfel ist die andere Lage der Grundfarben im Würfel, da es sich um ein subtraktives Verfahren handelt. Dies macht
die Abbildung 3.6(a) des CMY-Farbmodells deutlich. Beim RGB- Farbmodell
(a)
(b)
Abbildung 3.6: (a) Darstellung des CMY-Farbraums als 3D-Einheitswürfel(auf
1 normiert) mit Schwarz als Koordinatenursprung Quelle: [IW09] (b) Quelle:
[Möl09]
liegt im Koordinatenursprung die Farbe Schwarz, beim CMY- Farbmodell die
3.2 Farbmodelle
18
Farbe weiß. Die Umrechnung zwischen RGB- und CMY- Farbmodell ist einfach:
     
     
R
1
C
C
1
R
G = 1 − M  und M  = 1 − G
(3.1)
B
1
Y
Y
1
B
3.2.3
Das HSI-Farbmodell
Das HSI-Farbmodell wird in der Farbfotografie und in der Videotechnik verwendet. Hier steht H für Hue(Färbung, Tönung), S für Saturation(Sättigung,
Chroma) und I für Intensity (Intensität, Helligkeit).
Die Sättigung gibt an, wieviel weißes Licht der Tönung beigemischt wird. Bei
Sättigung 0 sieht man keine Farbe, somit je nach Intensität Schwarz, Weiß oder
Grautöne. Die Intensität gibt an wie viel Gesamtlicht vorhanden ist.
Anstatt eines kartesischen Koordinatensystems (wie im 3.2.1 bzw. 3.2.2) verwendet man beim HSI-Farbmodell eine Darstellung mit Zylinderkoordinaten.
Die Umrechnung von (R, G, B) nach (H, S, I) erfolgt in zwei Schritten: Zuerst
wird das RGB-Koordinatensystem so gedreht, dass eine Achse mit der Raumdiagonalen des Farbwürfels zusammenfällt. Diese Achse wird mit m1 und m2
bezeichnet und es sind zwei für die Umrechnung benötigte Zwischenwerte.
Diese Drehung des Koordinatensystems wird mit folgender Gleichung beschrie-
(a)
Abbildung 3.7: HSI-Farbmodell
ben:
  √2
m1
6
m2  = 
0
√1
i1

3
√1
6
√1
2
√1
3
 
√1
R
6
√1 

. G
2
1
√
B
3

(3.2)
mit
R 6= 0,
G 6= 0,
und
B 6= 0
Im zweiten Schritt werden die kartesischen Koordinaten( , , ) in Zylinderkoordinaten umgerechnet:
q
√
m1
H = arctan(
), S = m21 + m22 , I = i1 . 3.
(3.3)
m2
Die Verwendung des HSI-Farbmodells kann z.B. bei Segmentierungsoperationen[16] mit dem Merkmal Farbe Vorteile bringen, da im RGB-Farbmodell für
3.3 Weißabgleich
19
eine bestimmte Farbe immer alle drei Komponenten benötigt werden, während
im HSI-Farbmodell die Färbung nur durch die H-Komponente bestimmt wird.
3.2.4
Das YCbCr-Farbmodell
Das Y Cb Cr -Farbmodell wird in der digitalen Fernsehtechnik eingesetzt. Es
findet auch Anwendung in digitalen Bildern (z.B. JPEG). Dieses Farbmodell
besteht aus Komponenten für die Luminanzsignale (Y) und zwei Farbkomponenten (Cb und Cr ), die die Helligkeit repräsentieren. Dabei beschreibt
die Farbkomponente Cb die Abweichung von Grau in Richtung Blau und die
Farbkomponente Cr die Abweichung von Grau in Richtung Rot.
Das menschliche Auge ist besonders empfindlich auf grünes Licht, daher wird
die Information darüber in der Grundhelligkeit Y erfasst. Die Farbabweichungen der Cb /Cr - Kanäle werden weitaus schlechter erfasst, weshalb sie mit
geringer Genauigkeit gespeichert werden können.Die Umrechnung von RGB zu
Y Cb Cr wird wie in (Gl. 3.4 ) beschrieben durchgeführt:
Y
= 0, 299R + 0, 587G + 128
Cb = −0, 1687R + 0, 3313G + 128
(3.4)
Cr = 0, 299R − 0, 4187G + 128
3.3
Weißabgleich
Unabhängig von der Farbe der Lichtquelle ist weißes Papier für die menschliche
Wahrnehmung immer weiß. Farbunterschiede werden von den Menschen nicht
wahrgenommen, weil die chromatische Adaption des Auges die unterschiedlichen Farbtemperaturen kompensiert. In der Tat ist es z.B. bei Tageslicht und
Kunstlicht so, dass die Farbtemperaturen weit auseinander liegen. Selbst bei
Tageslicht ändert sich die Farbtemperatur mit dem Stand der Sonne. Während
Sonnenlicht bei 6.500K liegt, sinkt die Farbtemperatur bei Bewölkung auf etwa
5.500K. Kunstlicht tendiert wesentlich stärker zu Rot mit Farbtemperaturen
von unter 3.200K.
Bei leichter Änderung der Beleuchtungsfarbe passt sich unser Auge der neuen
Situation an,anders ist es bei fotografischen Aufnahmen sowohl mit analogem
Film als auch mit einem lichtempfindlichen Sensor. Ein Bildsensor würde
weißen Gegenständen bei solchen Farbtemperaturdifferenzen in der Aufnahme
einen Rot- oder Blaustich verleihen.
Diese unterschiedlichen Reaktionen von Auge und Bildsensoren auf Farbtemperaturdifferenzen in der Beleuchtung ist einer der Gründe warum viele Fotos
manchmal unnatürlich wirken. Da der Bildsensor einer Digitalkamera eine
recht genaue Wiedergabe der Farbtemperatur liefert, wird bei der Aufnahme
eines Blatt Papiers unter einem Baum, das Bild grünlich, im offenen Schatten
wirkt es sogar bläulich, und am späten Nachmittag rötlich. Um dieses zu
vermeiden und Aufnahmen mit natürlichen Farben zu gewährleisten, ist es
nötig, den Bildsensor in der Kamera auf die Farbe der Lichtquelle einzustellen.
3.3 Weißabgleich
20
Diese Einstellung wird in der Bildverarbeitung als Weißabgleich bezeichnet.
Der Weißabgleich(auch WB, engl. White Balance) ist eine technische Methode,
durch die Kameras auf die Farbtemperatur der dominierenden Lichtquelle
in einer Szene sensibilisiert werden. Somit wird die Aufnahme von digitalen
Bildern, den gegebenen Lichtverhältnissen (Sonne, Kunstlicht, Neonlicht,
bedeckte Himmel, etc.) angepasst, mit dem Ziel ein farbneutrales Bild zu
erhalten.
Die Durchführung des Weißabgleichs kann aufnahmeseitig manuell oder automatisch geschehen. Falls man keine Kenntnis über den benutzten Bildsensor
bzw. die Kamera hat, lassen sich die Bilder mit Hilfe von Verfahren wie
”GreyWorld”(Abschnitt 3.4.1), ”Max White Point”(”Retinexı̈m Abschnitt
3.4.2), oder nach der Methode von Weng et al.(Abschnitt 3.4.3) korrigieren.
Automatischer Weißabgleich
Beim automatischen Weißabgleich versucht die Kamerasoftware anhand der
Farbmenge des Motivs zu ermitteln, welcher Typ von Lichtquelle gerade
benutzt wird. Dabei sucht die Kamera nach einer Fläche, die für sie als
Weiß interpretiert werden kann. In der Praxis wird hierfür die am hellste
erscheinender Stelle gesucht.
Mit dieser eben ermittelten Farbtemperatur wird in einer Referenztabelle
(Tabelle 3.2) nach den Korrekturfaktoren geschaut. Diese Korrekturfaktoren
können auch durch Interpolation(siehe Kapitel 2.4.1)ermittelt werden. Jeder
Kanal des Bildes wird dann mit dem entsprechenden Korrekturfaktor(gR , gG
und gB ) multipliziert.
Farbtemperaturen
in K
3.000
3.500
4.000
4.500
5.000
5.500
6.000
7.000
8.000
gR
0,6230
0,7
0,768
0,827
0,878
0,921
0,96
1,021
1,072
gG
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
gB
2,869
2,13
1,734
1,475
1,309
1,18
1,084
0,952
0,866
Tabelle 3.2: Beispiele für typische Farbtemperaturen(Anhaltswerte)
Manueller Weißabgleich
Für eine genaue Kalibrierung der Belichtung wird in der professionellen Fotografie der manuelle Weißabgleich bevorzugt. Dabei wird die Kamera zuerst auf
3.4 Algorithmen zum Weißabgleich
21
manuellen Weißabgleich eingestellt, dann an einer weißen oder neutral grauen Fläche fokussiert. Anschließend passt die Einstellelektronik der Kamera auf
Tastendruck die Farbe den Lichtverhältnissen an. Damit die Farben beim manuellen Weißabgleich immer natürlich bleiben, muss diese Einstellung bei jedem
Umgebungswechsel neu durchgeführt werden.
3.4
Algorithmen zum Weißabgleich
Die im Abschnitt 3.3 erwähnten Verfahren zum Weißabgleich basieren auf
Vorwissen über die Kamera, aber in manchen Bildverarbeitungsapplikationen
hat man keine Informationen über den verwendeten Bildsensor. In diesem
Abschnitt werden Verfahren beschrieben, mit welchen man unnatürliche Bilder
korrigieren kann, sodass diese nahezu natürlich wirken.
3.4.1
Greyworld-Algorithmus
Der Greyworld-Algorithmus(GW) nimmt an, dass die roten, grünen und blauen
Anteile der durchschnittlichen Farbe gleich sind, d.h. Ravg = Gavg = Bavg .
Daraus folgt, dass die durchschnittliche Farbe im Bild Grau ist. Unter dieser
Annahme kann der Ausgleich von RGB-Bildern, die durch schlecht beleuchtete
Lichtquelle entstanden sind, erfolgen. Die zu korrigierende Beleuchtung hat die
Farbbalance zerstört.
Wenn ein Bild viele Farben enthält, dann ist die Annahme richtig und der
GW liefert ein Ergebniss mit guter Genauigkeit. Wenn das Bild wenige Farben
enthält, dann ist die Annahme falsch und GW liefert eine schlechte Korrektur.
Algorithmisch lässt sich der GW wie folgt umsetzen:
Es sei I(x, y) ein 2D Bild mit M Zeilen und N Spalten. x und y beschreiben
hier die Position der Pixel im Bild. Seien Ir (x, y), Ig (x, y) und Ib (x, y)
die rote, grüne und blaue Farbkomponente unseres Bildes. Zuerst werden
die arithmetischen Mittelwerte der verschiedene Farbkomponenten wie folgt
berechnet:
Ravg =
M N
1 XX
Ir (x, y)
MN
x=1 y=1
Gavg =
M N
1 XX
Ig (x, y)
MN
(3.5)
x=1 y=1
Bavg =
M N
1 XX
Ib (x, y)
MN
x=1 y=1
Für den Fall Ravg = Gavg = Bavg ist das Kriterium schon erfüllt. Oft ist dies
bei unnatürlichen Bildern nicht der Fall. Also werden die Koeffizienten zu
α̃ =
Gavg
Ravg
und
β̃ =
Gavg
Bavg
(3.6)
3.4 Algorithmen zum Weißabgleich
22
Iˆr (x, y) = α̃Ir (x, y) und
Iˆb (x, y) = β̃Ib (x, y)
(3.7)
mit
Ravg 6= 0,
Gavg 6= 0,
und
Bavg 6= 0
bestimmt.
3.4.2
Greyworldretinex-Algorithmus
Der Greworldretinex-Algorithmus (GWR) kombiniert den sogenannten
Retinex-Algorithmus mit dem GW-Algorithmus.
Der Retinex-Algorithmus
Unter der Annahme, dass es immer eine Weißfläche in einem Bild gibt, sucht
der Retinex-Algorithmus(RT) nach ihr im Bild. Der Farbwert der Weißfläche
ist dann die Farbtemperatur der Lichtquelle. Der Retinex- Algorithmus nimmt
dieses Weiß als das Maximum Rmax , Gmax , und Bmax , die man im Bild finden
kann. Das bedeutet, dass die Farben von der Lichtquelle durch die maximalen
Werte der drei Farbkanäle gegeben sind. Rmax ,Gmax und Bmax sind dann die
maximalen Reflexionsvermögen der R-, G- und B-Kanäle. Die Gewichtungskoeffizienten α̃, β̃ und δ̃ hängen auch von der Farbtemperatur der jeweilige
Lichtquelle ab und lassen sich für jede Lichtquelle wie folgt ermitteln:
Rmax = max{Ir (x, y)}
x,y
Gmax = max{Ig (x, y)}
(3.8)
x,y
Bmax = max{Ib (x, y)}
x,y
α̃ =
Gavg
Gavg
, β̃ =
Ravg
Gavg
und δ̃ =
Gavg
Bavg
(3.9)
Nun müssen diese mit den Bilddaten verrechnet werden. Dies geschieht durch
Gewichtung des gemessenen RGB-Werts mit Faktoren für die jeweilige Farbtemperatur.
RW
= α̃R
GW
= β̃G
BW
= δ̃B
(3.10)
Dabei sind RW , GW , BW die nach dem Weißabgleich korrigierten Werte und R,
G und B die gemessenen Farbwerte. Wenn es eine perfekt weiße Fläche im Bild
gibt, dann schätzt der Algorithmus die richtige Beleuchtung. Wenn es keine
weiße Oberfläche gibt, dann hängt die Genauigkeit von dem Inhalt des Bilds
ab. Der Algorithmus kann dann nicht mehr die richtige Korrektur durchführen.
3.4 Algorithmen zum Weißabgleich
23
Der Greyworldretinex
Diese Algorithmus wird in der Literatur oft als ”quadratic mapping”(QM)
bezeichnet und wurde von Edmund Y. Lam vorgeschlagen. Grundlage sind
folgende Beobachtungen:
• Der GW und der RT liefern immer verschiedene Ergebnisse. Das Ergebnisbild erfüllt nie die Kriterien die in den einzelnen Verfahren verlangt
sind.
• Die Bildintensität wird linear von beiden Algorithmen justiert und außerdem gibt es einen Fixpunkt in den Abbildungen, d.h. die Werte von Pixeln
mit Nullintensität werden nicht durch die zwei Abbildungen verändert
(schwarze Punkte bleiben schwarz).
Aus diesen Beobachtungen wurde eine Kombination von GW und RT entwickelt. Dabei bleibt der grüne Kanal unverändert (Korrekturfaktor 1). Die
blauen und roten Kanäle werden wie folgt modifiziert:
RW (x, y) = µr R2 (x, y) + νr R(x, y)
(3.11)
2
BW (x, y) = µb B (x, y) + νb B(x, y)
(3.12)
Zur Erfüllung des GW Kriteriums wird vorausgesetzt, dass gilt (für die rote
bzw. die blaue Farbkomponente) :
µr
M X
N
X
2
R (x, y) + νr
x=1 y=1
µb
M X
N
X
x=1 y=1
2
B (x, y) + νb
M X
N
X
R(x, y) =
M X
N
X
x=1 y=1
x=1 y=1
M X
N
X
M X
N
X
B(x, y) =
x=1 y=1
R(x, y)
(3.13)
B(x, y)
(3.14)
x=1 y=1
Zur Erfüllung des Retinex Kriteriums wird vorausgesetzt, dass für die rote bzw.
die blaue Farbkomponente gilt:
µr max{R2 (x, y)} + νr max{R(x, y)} = max{R(x, y)}
(3.15)
µb max{B 2 (x, y)} + νb max{B(x, y)} = max{B(x, y)}
(3.16)
x,y
x,y
x,y
x,y
x,y
x,y
Die Gleichungen (3.13) und (3.15) bzw. (3.14) und (3.16) bilden jeweils ein lineares Gleichungssystem. Die Berechnung der Koeffizientenµr , µb , νr undνb erfolgt
durch numerische Methoden wie der Cramer’schen Regel, Gauß etc. Dabei sind
RW ,GW und BW die nach dem Weißabgleich korrigierten Werte und R, G und
B die gemessenen Farbwerte.
3.4.3
Weißabgleich nach Cheng et. al.
Im Gegensatz zu den vorherigen Algorithmen wird die Ermittlung von weißen
Punkten eines Bildes in dieser Methode anhand von einer sogenannten dynamischen Schwelle durchgeführt. Ähnlich zu den vorherigen wird auch diese
Methode in zwei Schritten durchgeführt:
3.4 Algorithmen zum Weißabgleich
24
(a)
(b)
Abbildung 3.8: (a) Farbabweichung bei niedrigen bzw. hohen Temperaturen im
YCbCr-Farbraum. A: Abweichung der hohen Farbtemperaturen B: Abweichung
der niedrigen Farbtemperaturen (b) Das Near-White Gebiet eines Bildes
1. Ermittlung von weißen Punkten im Bild
2. Weiße Punktanpassung
Zur Ermittlung von weißen Punkten, wird das Bild zuerst vom RGB-Farbraum
in dem YCbCr-Farbraum umgewandelt. Dann, basierend auf den Farbeigenschaften(vgl. Abbildung 3.8(a)), definiert man eine Region, die nah an Weiß
(near white Region) ist (vgl. Abbildung 3.8(a)). Diese Region besteht aus
möglichen weißen Referenzpunkten.
Die Ermittlung dieser Referenzpunkte wird wie folgt durchgeführt:
Zuerst werden die Mittelwerte Mb und Mr von Cb und Cr und dann die Mit-
3.5 Ergebnisse und Diskussion
25
telwerte der absoluten Differenzen folgenderweise berechnet:
X
Db =
(|Cb (i, j) − M[ b|)/N
(3.17)
i,j
Dr =
X
(|Cr (i, j) − M[ r|)/N
(3.18)
i,j
Wobei Cb (i, j) und Cr (i, j) die Farbwerte des Pixels (i, j) sind und N die
Anzahl der betroffenen Pixel. Die Pixel, die nah an Weiß liegen erfüllen dann
folgende Kriterien:
|Cb (i, j) − (Mb + Db · sign(Mb ))| < 1, 5 · Db
(3.19)
|Cr (i, j) − (Mr + Dr · sign(Mr ))| < 1, 5 · Dr
(3.20)
Basierend auf den besten 10% der Helligkeitswerte einer Referenz, werden die
Weißpunkte für den Abgleich selektiert. Anschließend wird die Korrektur (weiße
Punktanpassung), wie in Abschnitt 3.4.1 beschrieben, durchgeführt.
3.5
Ergebnisse und Diskussion
Im diesem Kapitel wurden die verschiedenen Ansätze des Weißabgleichs vorgestellt. Dabei wurde nicht nur beschrieben wie man den Weißabgleich einer
Digitalkamera automatisch, indem man die Kamera nach einem für sie als Weiß
interpretierbaren Gebiet suchen lässt, oder manuell, indem man die Temperatur der Lichtquelle selber einstellen kann, durchführt, sondern auch verschiedene
Verfahren zum nachträglichen Abgleich behandelt.
In dieser Arbeit wurde jedoch der Schwerpunkt auf Verfahren zur nachträglichen
Korrektur von Blau- bzw. Rotstichen gelegt, die wegen falscher Farbtemperaturmessung von der Lichtquelle durch billige Kameras, in Bildern auftreten.In
dieser Hinsicht wurde hier zuerst auf 10 Algorithmen (Greyworld [NWT08],
Max White[NWT08], Retinex[NWT08], Strech[NWT08, FCM00], Quadratic
Mapping[Lam05], Standard Deviation Weighted Greyworld[LAW04b], Standard Deviation and Luminance Weighted Greyworld[HKAW04], Adjacent
Channels Adjustment by Standard Deviation and Luminance[LAW04a], Color
by Correlation[FHH01]) und auf das Verfahren nach Cheng et al[WCF05] ) bzw.
auf Ansätze aus verschiedenen Publikationen konzentriert. Dank Kritiken aus
Publikationen wurden drei Verfahren weggelassen. Die restlichen wurden dann
in Matlab programmiert und visualisiert. Nach dieser Visualisierung kam es anhand von einer subjektiven Beurteilung zu dem Entschluss vier Algorithmen in
C++ zu implementieren und anschließend als Module in die Softtware Toolip
zu integrieren( Siehe Anhang A ). Wegen des Mangels an billigen digitalen Fotokameras, die uns diese Effekte(Blau- bzw. Rotstich) erzeugen können, wurde
die in diesem Kapitel vorgestellten Algorithmen auf unnatürlichen Bildern aus
verschiedenen Publikationen und Internet-Präsenzen für einen deutlichen Vergleich angewandt. Abbildungen 3.9 und 3.10 zeigen Beispielbilder, auf die die
in diesem Kapitel vorgestellten Algorithmen angewandt wurden.
3.5 Ergebnisse und Diskussion
(a)
26
(b)
(d)
(c)
(e)
Abbildung 3.9: (a) Originalbild aufgenommen bei Tageslicht Quelle:[WCF05]
(b) - (e)Bild nach einem Weißabgleich mit Hilfe von GW, RT, GWRT und
NAWBM Methoden.
3.5.1
Tests und Beurteilung
Im Folgenden werden die für die Evaluierung der Algorithmen durchgeführten
Tests kurz erläutert. Da es derzeit in der Bildverarbeitung keine zuverlässige
Methode für die automatische Beurteilung der Qualität eines Bildes existiert,
wurde im Laufe dieser Arbeit die subjektive Beurteilung zur Rate gezogen.
Subjektive Beurteilung
Durch die Befragung von vier Personen ( ”Welches Ergebnisbild wirkt
natürlicher?”) konnte eine subjektive Beurteilung der Qualität der Ergebnisbilder ermittelt werden.
Objektive Beurteilung
Zur dieser Art von Beurteilung wurde aus verschiedenen Publikationen [VFT04,
LAW04a, LAW04b, HKAW04], Verfahren vorgestellt anhand welcher man die
Qualität von Bildern beurteilen kann.
Subtraktion
Ergebnisbilder und Originalbilder werden zuerst einfach voneinander abgezogen, und anschließend wird ein Vergleich zwischen diesen Restbildern
durchgeführt.
Euklidische Distanz
Als ein sehr oft benutztes metrisches Verfahren wurde in den meisten Publi∗ ) zwischen dem Originalbild und dem
kationen die euklidische Distanz (∆Eab
3.5 Ergebnisse und Diskussion
(a)
27
(b)
(d)
(c)
(e) Bild nach der Weißabgleich mit Hilfe von NAWBM
Abbildung 3.10: (a) Originalbild aufgenommen bei Tageslicht Quelle:[WCF05]
(b) - (e)Bild nach einem Weißabgleich mit Hilfe von GW,RT,GWRT und NAWBM Methoden.
Ergebnisbild, aus dem Lab-Farbraum(siehe Grundlagen aus Kapitel 2), wie
folgt berechnet:
p
∗ =
∆Eab
(∆L∗ )2 + (∆a∗ )2 + (∆b∗ )2
wobei
∆L∗ = L∗Ergbebnis − L∗Original
∆a∗ = a∗Ergbebnis − a∗Original
∆b∗ = b∗Ergbebnis − b∗Original
Mittlere Helligkeit
Um die Leistung und die Stabilität der Algorithmen besser
qzu beurteilen wurde
wie im [VFT04] erwähnt, der mittlere Helligkeitswert ( Cb2 + Cr2 ) des Originalbildes und der aus den hier vorgeschlagenen Algorithmen resultierenden
3.5 Ergebnisse und Diskussion
28
Bildern berechnet.
3.5.2
Ergebnisse
Zum Testen der Leistungsfähigkeit der verschiedenen Algorithmen in diesem
Kapitel wurden die Testbilder aus [VFT04] zuerst zur subjektiven Beurteilung
und anschließend zur objektiven Beurteilung verwendet. Nachfolgend wurde
eine Aufnahme der Colorchecker unter verschiedenen Lichtquellen (siehe Abbildungen 3.11(a), 3.12(a), 3.13(a) und 3.14(a)), ihrer (siehe Abbildungen 3.11(b)
- 3.11(e), 3.12(b) - 3.12(e), 3.13(b) - 3.13(e) und 3.14(b) - 3.14(e)) Farbtemperaturen (siehe Tabelle 3.3), sowie die Ergebnisbilder zur Beurteilung der Qualität
vorgestellt.
Bezeichnung der Lichtquelle
Temperatur in K
Tageslicht
6575
Coolwhite
4289
inCa
2884
Horizon
2264
Tabelle 3.3: Farbtemperatur von Lichtquelle
(a)
(b)
(d)
(c)
(e)
Abbildung 3.11: (a) Originalbild aufgenommen bei Tageslicht. Quelle:[VFT04]
(b) - (e)Bild nach einem Weißabgleich mit Hilfe von GM,RT,GWRT und NAWBM Methoden.
Zur quantitativen Beurteilung der Ergebnisbilder existiert kein entsprechendes
Tool. Es wurde wie es in [VFT04] beschrieben ist, der mittlere Helligkeitswert
berechnet. Tabelle 3.5 zeigt die Ergebnisse.
3.5 Ergebnisse und Diskussion
(a)
29
(b)
(d)
(c)
(e)
Abbildung 3.12: (a) Originalbild aufgenommen mit Coolwhite Lichtquelle. Quelle:[VFT04] (b) - (e)Bild nach einem Weißabgleich mit Hilfe von
GM,RT,GWRT und NAWBM Methoden.
(a)
(b)
(d)
(c)
(e)
Abbildung 3.13: (a) Originalbild aufgenommen mit Horizon Lichtquelle. Quelle:[VFT04] (b) - (e)Bild nach einem Weißabgleich mit Hilfe von
GM,RT,GWRT und NAWBM Methoden.
Ergebnisse der subjektive Beurteilung
siehe Tabelle 3.4
3.5 Ergebnisse und Diskussion
(a)
30
(b)
(d)
(c)
(e)
Abbildung 3.14:
(a) Originalbild aufgenommen mit Inca Lichtquelle.
Quelle:[VFT04] (b) - (e)Bild nach einem Weißabgleich mit Hilfe von
GM,RT,GWRT und NAWBM Methoden.
Bilddatensatz
Bilddatensatz
Bilddatensatz
Bilddatensatz
Bilddatensatz
1
2
3
4
Weißabgleich Algorithmen
GW
RT NABWM QM
25%
50%
25%
75%
25%
25%
100%
25%
100%
0%
50%
0%
0%
100%
50%
75%
Tabelle 3.4: Subjektive Beurteilung der Qualität von Bildern nach einem automatischen Weißabgleich mit Hilfe von GW, RT, GWRT (QM), und die nach
Cheng et al.-Algorithmus.
Ergebnisse der objektive Beurteilung
siehe Tabelle 3.5
Bild
Lichtquelle
Tageslicht
Cool-White
inCa
Horizon
Weißabgleich Algorithmen
GW
RT
NABWM
93,9183 91,366
92,8419
86,9612 88,6908
95,4761
84,1178 95,5073
131,785
74,9212 81,5087
132,132
QM
91,9175
99,7063
97,0345
89,2925
Original
95,8953
83,1227
80,5049
71,726
Tabelle 3.5: Objektive Evaluation von Testbildern
3.5 Ergebnisse und Diskussion
3.5.3
31
Fazit
Im Rahmen dieser Arbeit wurden unter anderem Publikationen aus dem Bereich
des automatischen Weißabgleichs (engl. automatic white balancing) zugezogen.
Dabei wurde nach Algorithmen, die sehr gute Ergebnisse (Verbesserung) bei
der Durchführung eines Weißabgleichs erzielen konnten, gesucht.
Zur Beurteilung dieser in verschiedenen Publikationen dargestellten und im
Laufe dieser Arbeit implementierten Algorithmen, wurde eine subjektive sowie
eine objektive Beurteilung durchgeführt. Aus diesen Beurteilungen lassen sich
folgende Erkenntisse schlussfolgern:
• Keine der hier untersuchten Weißabgleich-Algorithmus liefert ein perfektes Ergebnis bei einem durch chromatische Aberration gestörtes Bild.
• Unter bestimmten Voraussetzungen, die nachfolgend dargestellt werden,
werden recht guten Ergebnisse erzielt.
– Greyworld
Diese sehr oft angewendete Methode liefert gute Ergebnisse bei Bildern mit ausreichender Farbvariation.
– Retinex
Im Gegensatz zum Greyworld-Algorithmus muss hier eine weiße
Fläche vorhanden sein, damit dieser Algorithmus gute Ergebnisse
liefert.
– Greyworldretinex
Wie in [Lam05] beschrieben, arbeitet dieser Algorithmus gut bei
Bildern mit ausreichender Farbvariation und mit genügend weißen
Punkten.
– Cheng et al.
Dieser Algorithmus funktioniert sehr gut bei Bildern mit weißen
Punkten bzw. Bereichen von weißen Punkten.
• Zu Beginn muss ein einmaliger Weißabgleich (automatisch durch die Kamera oder manuell durch Eingriff des Anwenders) vor der Bildaufnahme
durchgeführt werden um die in diesem Kapitel beschriebenen chromatische Aberrationen vorerst zu verringern.
• Die Anwendung der hier besprochenen Algorithmen muss nach einer vorherigen Bildanalyse und einer anschließenden Wahl des passenden Algorithmus erfolgen.
Zusammenfassend lassen sich die hier vorgestellte Algorithmen je nach Bildeigenschaften passend aussuchen.
Kapitel 4
Korrektur von inhomogen
beleuchteten Bildern Vignettierung
Der (häufig auftretende) unbeabsichtigte Helligkeitsabfall von der Bildmitte zu
den Bildecken hin wird in der Bildverarbeitung und der Fotografie mit Vignettierung bezeichnet. Die Bildecken erscheinen mit zunehmender Entfernung zum
Bildmittelpunkt immer stärker unterbelichtet, während die Bildmitte korrekt
belichtet ist.
Während die Verzeichnung (siehe Kapitel 5) vom Objektiv abhängig ist (linsentypischer Abbildungsfehler), entsteht diese Verdunkelung der Bildecken durch
Filterfassungen oder Streulichtblenden, die in die Bildebene projiziert werden,
oder es handelt sich um einen Abbildungsfehler.
Die Vignettierung wird sehr oft in der Literatur mit dem Shading verwechselt.
Das Shading[Neu05] wird zwar auch durch die Inhomogenität der Beleuchtung
verursacht, aber der Fehler liegt hier mehr in der Helligkeit des Hintergrunds.
Die Shadingkorrektur führt mehr zu einer Hintergrundkompensation.
Die Vignettierung tritt hauptsächlich bei Weitwinkelobjektiven auf (bei Teleobjektiven eher selten). Die Vignettierung stört jedoch nur, wenn der Lichtverlust
zur Bildecke hin mehr als eine Blendenstufe beträgt. Inwiefern die Vignettierung als störend zu betrachten ist, hängt vom Motiv ab.
Aufnahmeseitig lässt sich dieser Fehler durch Verwendung eines speziellen
Radial-Graufilters verhindern, der in der Mitte neutralgrau ist und zum Rand
hin farblos verläuft. Durch diesen Radial-Graufilter wird das Bildzentrum auf
die gleiche Helligkeit wie die Bildecken abgedunkelt.
Die Vignettierung kann sowohl mit verschiedener komerzieller Software wie
PTools oder Photoshop oder durch die Algorithmen die in diesem Kapitel beschrieben sind, korrigiert werden. In der Literatur[Wik09, Bau09, IM09, Yu04,
Col08] wird zwischen natürlichen und künstlichen Vignettierungen unterschieden.
Im ersten Teil dieses Kapitels werden die verschiedenen Typen von Vignettierungen, die in der Literatur beschrieben sind, dargestellt. Dort erfolgt eine kurze
4.1 Vignettierung
33
(a)
(b)
Abbildung 4.1: (a)Vignettierung (Randabschattung) bei einer Aufnahme mit
einem Mikroskop Quelle:[Wik09] , (b) Vignettierung durch eine Streulichtblende
Quelle:[Bau09]
Beschreibung sowie eine Diskussion der jeweiligen Vignettierung. Danach werden die Algorithmen zur Beseitigung dieses Abbildungsfehlers vorgestellt und
anschließend eine Darstellung der Tests und Ergebnisse aus diesen Algorithmen
sowie eine kurze Diskussion durchgeführt.
4.1
Vignettierung
Basierend auf den Grundlagen aus [Wik09, Bau09, IM09, Yu04, Col08] unterscheidet man zwischen natürlicher und künstlicher Vignettierung. Während
die natürliche Vignettierung zu jedem Linsenentwurf ureigen ist, entsteht die
künstliche Vignettierung beim Gebrauch der Linse.
4.1.1
Natürliche Vignettierung
Die natürliche Vignettierung ist eine stetige Verdunkelung des Bildes von der
Bildmitte zu den Bildecken hin, die durch physikalische Effekte entsteht. Wie
in [Col08] erläutert, ist dieser Helligkeitsabfall auf mehrere (photometrische)
Gesetzmäßigkeiten zurückzuführen:
• Zum Einen fallen weiter entfernte Lichtstrahlen mit sehr engen Winkeln
in Objektive ein.
• Zum Anderen verringert sich für achsferne Bildpunkte die effektive Fläche
der Austrittspupille.Von der optischen Achse aus betrachtet erscheint die
Austrittspupille kreisrund. Vom Bildrand her betrachtet deformiert die
Austrittspupille zu einer Ellipse.
Das Maß des Lichtabfalls, der durch die natürliche Vignettierung verursachte Abfall der Beleuchtungsstärke E auf der Sensorebene in den Bildecken gegenüber der Bildmitte, ist proportional zur 4. Potenz vom Cosinus des Bildwinkels.Diese Art der Vignettierung ist am auffälligsten bei der Abbildung von
4.1 Vignettierung
34
Quelle:[Thö06]
Abbildung 4.2: Natürlicher Abfall der Bildhelligkeit zum Bildrand, verursacht
durch das cos4 − Gesetz.
Flächen gleichmäßiger Helligkeit
E = E∞ × cos4 w
(4.1)
Gleichung 4.1 und Abbildung 4.2 erklären, warum diese Vignettierung bei Weitwinkelobjektiven sehr deutlich bemerkbar ist. Dabei ist w der Blickwinkel.
Um diesen Abildungsfehler zu beseitigen wird aufnahmeseitig ein an das Objektiv angepasster Zentralfilter (Radial-Graufilter) eingebaut, der künstlich die
Helligkeit in der Bildmitte herabsetzt und somit eine konstante Helligkeitsverteilung über das Bild ermöglicht. Softwarelösungen verwenden die im Abschnitt
4.2 beschriebenen Verfahren zur Verringerung bzw. zur Beseitigung der Vignettierung.
4.1.2
Künstliche Vignettierung
Die künstliche Vignettierung bezeichnet auch einen Lichtabfall in den Bildecken,
sie ist allerdings im Vergleich zur natürlichen Vignettierung in der Regel stärker
sichtbar. Es wird in der Fachliteratur zwischen interner , die vom Objektiv verursacht wird und externer künstlicher Vignettierung, die durch falsch gewählte
Vorsätze wie Vorsatzlinsen, deren Fassungen den Strahleneingang beschneiden
oder durch zu eng bemessene Filter oder Gegenlichtblenden, verursacht. Die
externe künstliche Vignettierung wird auch als mechanische Vignettierung bezeichnet.
Interne künstliche Vignettierung
Diese Art der Vignettierung entsteht bei der Verringerung des Durchmessers
der Objektivfassung und manchmal durch einen zu kleinen Durchmesser der
Blendenöffnung (Eintrittspupille). Manche Hersteller beschneiden absichtlich
den Strahlengang um außerradiale Abbildungsfehler effizient zu korrigieren. Dadurch verringert sich der Durchmesser des Strahlenbündels und somit auch die
Bildhelligkeit an Bildecken. Dieser Abbildugsfehler ist oft bei Weitwinkelobjektiven sowie bei hochlichtstarken Objektiven zu beobachten. Sie können entweder
durch hinreichend große Linsendurchmesser (mit Rücksicht auf die Abmessung,
4.2 Verfahren zur Korrektur von Vignettierung
35
Quelle:[Col08]
Abbildung 4.3: Künstliches Vignettieren von Strahlen eines außeraxialen Strahlenbündels durch Fassungselemente.
die Größe und der Preis des Objektivs) beseitigt oder durch Abblenden effektiv
und einfach eliminiert werden.
Externe künstliche Vignettierung
Die externe künstliche Vignettierung führt auch zu einer Verdunkelung der Bildecken. Sie ist im Gegensatz zur natürlichen Vignettierung stärker sichtbar.
Diese Art der Vignettierung wird durch eine falsch gewählte Streulichtblende,
durch (meist unbeabsichtigte) Blockaden des Strahlenganges vor oder nach dem
Objektiv oder durch nicht angepasste Filter, oder eine zu enge Vorsatzlinse hervorgerufen.
Diese ungleichmäßige Verteilung der Helligkeit (Helligkeitsabfall) kann durch
die Verwendung von einem Verlaufsfilter (wird meist von Hersteller von extremen Weitwinkelobjektiven bereitsgestellt) korrigiert werden.
4.2
Verfahren zur Korrektur von Vignettierung
Viele Wissenschaftler haben sich mit dem Verschlechtern der Bildqualität durch
die Vignettierung in verschiedenen Bildverarbeitungsanwendungen wie Bildmosaik [MPS83, CM86], Bilderfassung[AAB96, Har01] und Digital-Analog Umwandlungen von Malerei[Har01] beschäftigt. Abgesehen von dem Versuch die
Vignettierung mit Hilfe von optischen Filtern zu beseitigen, wird die Vignettierung auch mit Hilfe von Algorithmen beseitigt. Die meisten Verfahren versuchen
den Vignettierungseffekt zu bestimmen und dann zu korrigieren.
Aus verschiedenen Quellen [ZYK+ 08, ZLK06, YCJ04, Yu04] können die Verfahren zur Korrektur von Vignettierung in zwei Gruppen unterteilt werden:
4.2 Verfahren zur Korrektur von Vignettierung
36
• Zum Einen gibt es den sogenannten direkten Ansatz, der auch in dieser Arbeit behandelt wurde. Bei diesem Ansatz wird das Vorhandensein
der verwendeten Kamera vorausgesetzt. Es wird aus diesem ein Referenzbild (Kalibrierungsbild)[YCJ04, Yu04] bei bestimmter Beleuchtung
erzeugt und dann anhand der Grauwertverteilung dieses Referenzbilds,
die Korrekturfaktoren pixelweise ermittelt und anschließend die Korrektur durchgeführt.
• Zum Anderen wird von manchen Forschern versucht, die Vignettierung
mit Hilfe von Funktionen zu approximieren bzw. zu modellieren. Dieser
Ansatz setzt nur ein Bild aus, dieses kann z.B. aus dem Internet sein. Die
Korrektur erfolgt dann automatisch. Es wird keine Information über die
verwendete Kamera oder über die Einstellung der Umgebung gebraucht,
und somit kein Referenzbild benötigt um die Korrektur durchzuführen. Es
wird beispielsweise in [Yu04] für ähnliche Applikationen, die für Handys,
PDAs und Webcams implementiert werden, der Vignettierungseffekt mit
Hilfe einer 2D-HyperbelKosinus Funktion[Yu04] approximiert und daraus fünf Parameter ermittelt, die zur Beschreibung bzw. Berechnung der
Korrekturfaktoren dienen. Desweiteren wird in [ZLK06] das Kang-Weiss
Model benutzt um die Vignettierungsfunktion als ein Polynom zu beschreiben.
In dieser Arbeit wird mehr auf den ersten der genannten Ansätze zur Korrektur
der Vignettierung eingegangen.
4.2.1
Korrektur von Vignettierung mit Hilfe der LUT
Die Korrektur einer Vignettierung nach diesem Verfahren wird mit Hilfe eines
Referenzbildes durchgeführt. Es wird zuerst durch Fotografieren einer weißen
Oberfläche (z.B. Blatt Papier) die Grauwertverteilung der gewählte Lichtquelle
ermittelt. Dabei eignet sich ein dunkler Raum mit einer homogenenen Beleuchtung gut zu diesem Zweck, da keine Reflexion des Lichtes vorkommt.
Aus diesem Referenzbild wird der maximale Grauwert ermittelt und anhand
von diesem der Korrekturfaktor zu jeder Pixelposition, wie in Gleichung 4.2
dargestellt, ermittelt und in einer Referenztabelle gespeichert.
ILU T (i, j) = Iref,max /Iref (i, j)
mit
Iref (i, j) 6= 0
(4.2)
Anschließend wird ein, unter normaler Beleuchtung mit der selben Kamera
aufgenommenes Bild korrigiert indem man dieses pixelweise mit der LUT wie
in Gleichung 4.3 multipliziert.
I 0 (i, j) = I(i, j) × ILU T (i, j)
(4.3)
Dabei beschreiben Iref (i, j) die Grauwerte an der Position (i, j) des Referenzbildes, Iref,max den maximalen Grauwert Iref (i, j) der sich oft in der Nähe der
Bildmitte findet, ILU T (i, j) ist der Korrekturfaktor der an der Stelle (i,j) der
LUT gespeichert wird, I(i, j) und I 0 (i, j) sind die Grauwerte vor und nach der
Korrektur der Vignettierung. Abbildungen 4.4 und 4.5 zeigen Ergebnisse der
4.2 Verfahren zur Korrektur von Vignettierung
37
Anwendung dieser Methode auf Bildern mit Vignettierung .
Diese Methode liefert zwar sehr gute Ergebnisse, benötigt aber sehr viel Speicherplatz.
4.2.2
Korrektur von Vignettierung durch Wavelets mit Reduzierung
Wie bereits in Abschnitt 4.2.1 erwähnt, liefert die Korrektur mit Hilfe der LUT
für kleine Bilder sehr gute Ergebnisse in Hinsicht auf die Qualität sowie den
Speicherplatz. Bei großen Bildern stößt dieses Verfahren an seine Grenze (Speicherplatz). Zur Abhilfe wird eine Bildkompression durch eine Waveletsrauschreduzierung durchgeführt.
Die auf Wavelets basierenden Methoden sind leistungsfähige Werkzeuge zur
Rauschreduzierung [YCJ04]. Bei einer sukzessive Anwendung der diskreten Wavelet Transformation (DWT, siehe Grundlagen aus Abschnitt 2.3) auf einen
durch Rauschen gestörtes Signal (hier ein Bild) wird eine gute Trennung zwischen dem eigentlichen Signal und dem Rauschen erreicht.
Im Gegensatz zu einer normalen Wavelet Transformation, wo die Wahl eines passenden Thresholding Algorithmus (Virusshrink, Sureshrink) zur Unterdrückung der Rauschkomponenten eine zentrale Rolle spielt, wird bei der
Korrektur einer Vignettierung dieser Schritt übersprungen, da ein Vignettierungsmuster den Randabfall gut wiedergeben kann. Nachfolgend werden die
Schritte der Anwendung dieser Anti-Vignttierung Methode auf einem m × n
Referenzbild beschrieben.
1. Wie in Abschnitt 4.2.1 ist hier wieder ein weißes Blatt Papier unseres
Referenzobjekts. Davon wird ein Bild aufgenommen. Dabei ist die Kamera
senkrecht zur Flächenormale des Referenzobjektes zu positionieren.
2. Aus dem Referenzbild aus 1 wird für jedes Pixel ein Korrekturfaktor ermittelt, wie in den Gleichungen 4.2 und 4.3 beschrieben. Diese Korrekturfaktoren werden dann in einem Bild K unter Beibehaltung der Position
gespeichert
3. Das Rauschen in Bild K wird mit Hilfe einer Waveletrauschreduzierung entfernt. Hier wurden Debauchie-Wavelets1 für die VorwärtsTransformation auf K angewandt, mit einer anschliessende Unterteilung
von K in fünf Ebenen.
4. Rekonstruktion der fünf Ebenen und Speicherung dieser in K 0 .
5. Dezimierung von K 0 (hier Faktor 10) und Speicherung in einer LUT und
anschließend Korrektur der Vignettierung mit Hilfe dieser LUT, wie in
Abschnitt 4.2.1.
1
Unter Daubechies-Wavelets, benannt nach Ingrid Daubechies, versteht man in der digitalen Signalverarbeitung eine Klasse orthogonaler Wavelet-Funktionen, die einen kompakten Träger haben. Sie gehören zu den am häufigsten praktisch eingesetzten WaveletTransformationen für Zwecke der digitalen Signalanalyse und Signalkompression. Aufgrund
ihrer einfachen Implementierbarkeit mittels der schnellen Wavelet-Transformation (FWT) sind
sie auch Lehr(buch)beispiele der digitalen Signalverarbeitung.[Wik09].
4.3 Ergebnisse und Diskussion
4.3
38
Ergebnisse und Diskussion
Wie schon in der Einleitung dieses Kapitels erwähnt wurde, wird der Vignettierungseffekt oft im großten Teil der Literatur mit dem Shading-Effekt verwechselt. Während dieser Arbeit wurde irrtümlicherweise mangels Literatur vorerst
nach Verfahren gesucht, die die Shadingkorrektur durchführen konnten. Dabei
wurden verschiedene Ansätze (Shadingkorrektur mit Referenzbildern, Shadingkorrektur durch Bildaufteilung, Shadingkorrektur mit Mittelwertbildern und
Shadingkorrektur mit Linescan aus [Neu05]) implementiert und getestet.
Nach kritischen Analysen und Diskussionen über die Ergebnisbilder sowie Neuaufnahme der Referenzbilder wurde klar, dass das Phänomen falsch eingeschätzt
wurde .
Nachdem im Labor, mit Hilfe der vorhandenen Objektive der Firma Pentax und
Schneider so gut wie keine echte Vignettierungseffekte erzeugt werden konnten,
wurde für Testzwecke der hier implementierte Algorithmen die Vignettierungseffekte künstlich mit Hilfe von Adobe Photoshop erzeugt.
Abbildungen 4.4 und 4.5 zeigen Beispiele von Testbildern auf die, die in Abschnitt 4.2.1 und 4.2.2 beschriebene Algorithmen, angewandt wurden.
Nach verschiedenen Tests ergeben sich folgende Erkenntnisse:
• Der in Abschnitt 4.2.1 beschriebene Algorithmus scheint zwar sehr einfach zu implementieren, aber das Kalibrieren mit Hilfe dieses Ansatzes
kann zu Fehlern führen, wenn bei der Aufnahme von Referenzbildern die
Kamera auf bestimmte Einstellungen nicht angepasst wird, bzw. wenn die
Beleuchtung der Szene inhomogen wird. Desweiteren könnte der vorhandene Speicher für die LUT bei großen Bildern zu klein sein. Zu diesem
letzteren Problem wird das Verfahren aus Abschnitt 4.2.2 angewandt.
• Die im Abschnitt 4.2.1 und 4.2.2 beschriebenen Verfahren liefern zwar sehr
gute Ergebnisse, bedürfen aber eines manuellen Eingriffes (beim Erzeugen
des Referenzbilds) der leicht zu anderen Fehlern bzw. Artefakten führen
könnte.
4.3 Ergebnisse und Diskussion
39
(a)
(b)
(c)
(d)
Abbildung 4.4: (a) Bild mit starker Vignettierung (b) Referenzbild (c) Bild der
LUT (d)Ergebnisbild
4.3 Ergebnisse und Diskussion
40
(a)
(b)
(c)
(d)
Abbildung 4.5: (a) RGB Bild mit starker Vignettierung (b) Referenzbild (c)
Bild der LUT (d)Ergebnisbild
Kapitel 5
Bildverzerrung und Korrektur
Digitale Bilder und Fotografien werden verwendet um quantitative Messungen
durchzuführen. In der industriellen Bildverarbeitung kommt die Photogrammetrie sehr oft zum Einsatz. Diese Aufgaben sollen normalerweise mittels kamerabasierten Systemen ohne Linsenverzerrung gelöst werden. Jedoch hat die
Erfahrung im Umgang mit digitalen Kameras gezeigt, dass Objektive generell die Tendenz haben, das Motiv verzerrt darzustellen. Desweitern werden aus
Kostengründen in den meisten Kamerasystemen geometrisch verzerrungsbehaftete Linsen eingesetzt.
Bei der Verwendung von einer Kamera, die unter Linsenverzerrungen leidet,
werden die Maße fehlerhaft ermittelt. Hier hilft möglicherweise eine genaue
Verzerrungskorrektur um dieses Problem zu überwinden, denn das Kamerabild
entspricht nicht dem Bild, welches eine ideale Lochkamera erzeugen würde. Um
weiterhin mit dem einfachen mathematischen Modell der Lochkamera rechnen
zu können, muss das aufgenommene Bild erst entzerrt werden. Denn eine relativ kleine Verzerrung des Bildes könnte zu einer relativ großen Verfälschung
von Messdaten führen. Man unterscheidet zwischen perspektivischer Verzerrung und Linsenverzerrung. Die Erste beschreibt die Verzerung die aufgrund
der Blickwinkel während der Bildaufnahme ensteht. Die Zweite wird durch die
Linse erzeugt. Die meisten Publikationen und Literaturen behandeln im Wesentlichen nur die Linsenverzerrung.
Im ersten Teil dieses Kapitels werden die Grundlagen vermittelt. Dort erfolgt
eine Vorstellung der zwei Arten von Verzerrungen. Im zweiten Teil dieses Kapitels werden Methoden zur Ermittlung von Verzerrungsparameter sowie zur
Korrektur von Verzerrungen dargestellt. Es folgt dann im dritten Teil eine Darstellung der Tests mit einer anschließenden Diskussion.
5.1
Linsenverzerrung
Von Linsenverzerrung, spricht man wenn gerade Linien von Objekten durch die
Abbildung der Linse gekrümmt erscheinen oder dargestellt werden. Abbhängig
von der verwendeten Linse ist dieser Effekt mehr oder weniger erkennbar. Beim
Weitwinkelobjektiv (z.B. Canon EOS 1D Mark II mit Sigma 15 mm) ist dieser Effekt sehr deutlich sichtbar (siehe Abbildung 5.1). Zur besseren Analyse
5.1 Linsenverzerrung
42
dieses Abbildungsfehler wird die Linsenverzerrung durch eine Funktion modelliert. Die Funktion enthält radiale, tangentiale und affine Komponenten. In Abschnitt 5.3 werden die Verfahren zur Ermittlung von Parametern dieser Funktion dargestellt. Im Wesentlichen unterscheidet man zwischen der radialen und
der tangentialen(engl. decentering) Verzerrung.
Quelle:[dxo09]
(a)
(b)
Abbildung 5.1: (a) verzerrtes und (b)unverzerrtes Bild aufgenommen mit Canon EOS 1D Mark II mit Sigma 15 mm
Der Haupteil der Linsenverzerrung ergibt sich normalerweise durch die radiale Verzerrung. Es wurde von Tsai [Tsa86, Tsa87] und Zhang [Zha00] bewiesen, dass mehr als 90% der durch die Linsen verursachten Verzerrungen, radiale Verzerrunen sind. Deshalb wird in den meisten Arbeiten und
Publikationen[DO01, CGPV03, Tsa86, Tsa87] sowie in dieser, die radiale Verzerrung genauer behandelt. Dies kann genügend sein, wenn die Genauigkeit der
Messungen außer Acht gelassen werden soll oder wenn die tatsächliche Verzerrung durch die radiale Verzerrung beschrieben werden kann. Einigen Autoren
berücksichtigen auch die tangentiale Verzerrung[DFA95, Bro66, BB04]. Diese
kann dann zur Verbesserung beitragen.
5.1.1
Radiale Verzerrung
Wie bereits in den einleitenden Sätzen dieses Kapitels erwähnt, weisen Abbildung mit Linsensystemen gewisse geometrische Fehler auf. Der Fehler der
sich am stärksten bemerkbar macht ist die radiale Verzerrung(Vgl. R. Tsai in
[Tsa86]). Die radiale Verzerrung ist durch die Form der Linsen bedingt und
verursacht damit geometrische Veränderung des Bildes im Vergleich zur Lochkamera . Die Krümmung der Linsen wird stärker , je weiter der Bildpunkt vom
5.1 Linsenverzerrung
43
Hauptpunkt entfernt ist. Bildpunkte, die gleichen Abstand zum Verzerrungszentrum haben werden gleich stark verzerrt.
(a)
(b)
(c)
Abbildung 5.2: (b) - (c) verzerrtes und (a) unverzerrtes Bild. Quelle [Rap09]
Je nachdem ob die Krümmung zur Bildmitte hin oder weg davon verläuft,
spricht man von kissenförmiger oder tonnenförmiger Verzerrung. Abbildung
5.2(a) stellt eine rechtwinklinges Gitter dar, während Abbildung 5.2(b) und
5.2(c) das Gitter mit kissenförmiger und tonnnenförmiger Verzerrung illustrieren.
Die radiale Verzerrung ist deutlich bei Weitwinkelobjektiven bemerkbar.
Das mathematische Modell zu dieser Art der Verzerrung ist eine Funktion, die
vom Abstand rd des Bildpunktes vom Verzerrungszentrum, dem Radius und
der Position des Bildpunktes
abhängt.
p
Pd = f (rd ) mit rd = x2s + ys2
Ein idealer Sensorpunkt xs wird durch die Gleichungen 5.1 auf einen gestörten
Sensorpunkt xd abgebildet.
xd = xs (1 + k1 rd2 + k2 rd4 + ...),
yd = ys (1 + k1 rd2 + k2 rd4 + ...)
(5.1)
Bei der Gleichung 5.1 erfasst der quadratische Term den grössten Teil der Verzerrung. Daher wird in dieser Arbeit und in verschiedenen Publikationen nur
den Verzerrungsparameter k1 ermittelt. Das Zentrum der radialen Verzerrung
ist im Idealfall der Hauptpunkt. In den meisten Anwendungen bzw. in dieser
Arbeit wird die Bildmitte als Hauptpunkt betrachtet.
5.1.2
Tangentiale Verzerrung
Die tangentiale Verzerrung resultiert vor allem aus der Dezentrierung des verwendeten Linsensystemen zur optischen Achse. Sie ist im Vergleich zur radialen Verzerrung nur bei hohen Genauigkeiten der Korrektur anzubringen, da ihr
Anteil deutlich geringer ist. Bei der Verwendung von billigen Objektiven muss
dieser Verzerrungsparameter (Abbildungsfehler) mitbestimmmt werden.
5.2 Perspektivische Verzerrung
5.2
44
Perspektivische Verzerrung
Eine weitere Form der Verzerrung ist die perspektivische Verzerrung. Es handelt
sich hierbei um ein nicht durch die Linse bzw. Objektive verursachten Abbildungsfehler, denn die Perspektive wird nicht durch die Bauform der Linse verursacht, sondern ausschließlich durch den Aufnahmestandpunkt bestimmt wird.
Nur wenn sich ein Objekt parallel zur Fläche des Bildsensors befindet, wird
es ohne Verzerrung aufgenommen. Ist das nicht der Fall, nähern sich entfernter liegende Punkte einander an. Diese Art der Verzerrung wird beispielsweise
bei der Abbildung von hohen Gebäuden vorkommen. Die einzelnen Stockwerke verjüngen sich optisch nach oben. Je größer die Neigung der Kamera umso
stärker tritt die Verzerrung auf. Je weiter man sich von einem Gebäude entfernt, desto weniger fallen stürzende Linien auf, da sich der Bildsensor immer
stärker parallel zur Gebäudefassade ausrichtet. Desweiteren kann bei der Bewegung der optischen Achse und bei der Verwendung von professionellen Kameras
oder Shiftobjektiven die perpektivische Bildwiedergabe beeinflusst werden.
5.3
Verfahren zur Bildentzerrung
Zum besseren Kalibrieren des Bildsensors muß man, wie im Abschnitt 2.2 beschrieben, die inneren Parameter der Kamera messen. Dabei werden die Parameter der Verzerrungen k1 und k2 ermittelt.
In Abschnitt 5.1 wurde gezeigt, dass die Verzerrung sich mathematisch als eine
Funktion (Polynom) mit radialen und tangentialen Komponenten modellieren
lässt. R.Tsai hat in [Tsa86] gezeigt, dass die tangentiale Komponenente vernachlässigt werden kann, da der größte Anteil von Verzerrung radial ist. Daher
wurde in den meisten Arbeiten [WCH90, PM97, MW04, CGPV03] sowie in
dieser vorwiegend nur die radiale Verzerrung untersucht.
Zur Korrektur der radialen Verzerrung wird in der Literatur und Publikationen
durch zwei Ansätze beschrieben. Zum einen existieren die sogenannten Gittermethoden. Dort werden die Verzerrungsparameter mit Hilfe von rechtwinkligen Gittermustern ermittelt. Zum anderen gibt es sogenannte automatische
Methoden die hauptsächlich im Laufe dieser Arbeit betrachtet werden. Diese
Automatischen Methoden werden in zwei Schritten durchgeführt:
• Schritt1: Suche nach Verfahren zur Ermittlung der Verzerrungsparameter.
• Schritt2: Entzerrung mit Hilfe der in Schritt 1 ermittelten Verzerrungsparameter.
Im nächsten Abschnitt wird ein Verfahren zur Ermittlung von Verzerrungsparametern dargestellt und anschliessend wird die Technik zur Entzerrung erläutert.
5.3.1
HTRDC
Basierend auf der Erkenntnis, dass die radiale Verzerrrung, die am häufigsten
vorkormmende Verzerrung ist, bzw. auf der Erkentniss, dass der quadratische
5.3 Verfahren zur Bildentzerrung
45
Verzerrungsparameter k1 ausreichend für die Korrektur bzw. für die Beschreibung der radialen Verzerrung ist, wird hier eine Methode zur Korrektur der
radialen Verzerrung [CGPV03] (HTRDC) von V ezzani et al. vorgestellt.
Diese Methode wird in zwei Schritten durchgeführt:
• Schritt 1: Automatische bzw. halbautomatische Identifizierung der potentiellen Linien (wo die Verzerrung stark zu sehen ist)
• Schritt 2: Durch Iteration wird die Ermittlung von Verzerrungsparametern (anhand von diesen wird die Geradheit von potentiellen Linien maximiert) durchgeführt.
Zur Identifizierung und zum Messen der Geradheit von Linien hat sich in der
Bildverarbeitung die Hough Transformation (HT) etabliert. Daher wird auch
hier die HT verwendet.
Das Ziel des 1. Schrittes ist es, Gebiete zu finden wo die Verzerrungen gut zu erkennen sind. Dies kann manuell, indem der Anwender ein Gebiet im Bild wo die
Linien detektiert werden sollen, spezifiziert oder automatisch in einem iterativen
Ablauf geschehen. Für die Durchführung des 2. Schritts wird wie in [CGPV03]
verfahren. Die Initialisierung der Parameter wird wie folgt unternommen:
• kmin und kmax sind die maximalen Werte des Verzerrungsparameters k1
mit k1 ∈ [0, 1] wobei kmin = 0 und kmax = 1
• Einstellen der Koordinaten cx , cy des Verzerungszentrums, der normalerweise auf den Bildschwerpunkt gesetzt wird (zur Vereinfachung wird die
Mitte des Bildes gewählt).
• Unter Berücksichtigung der gewünschten Präzision wird die Anzahl n der
Regionen sowie der zu tolerierende Fehler von k1 festgelegt.
5.3.2
Entzerrung
Für jeden Punkt Pd = (xd , yd ) des verzerrten Bildes lässt sich ein unverzerrter
Punkt Pu = (xu , yu ) allgemein, wie in den Gleichungen 5.2 und 5.3 berechnen.
xu = cx +(xd −cx )(1+k1 rd2 +k2 rd4 +...)+p1 [2(xd −cx )+rd2 ]+2p2 [2(xd −cx )+(yd −cy )]
(5.2)
yu = cy +(yd −cy )(1+k1 rd2 +k2 rd4 +...)+p2 [2(yd −cy )+rd2 ]+2p1 [(xd −cx )+(yd −cy )]
(5.3)
wobei
(cx , cy ) die Koordinaten des Verzerrungszentrums sind, und rd =
p
x2s + ys2 den Verzerrungsradius beschreibt.
Es wurde in den Arbeiten von [Tsa86] und [DO01] gezeigt, dass die tangentiale Komponente vernachlässigt werden kann. Daraus folgt aus Gleichungen 5.2
bzw. 5.3 folgende Gleichungen:
xu = cx + (xd − cx )(1 + k1 rd2 + k2 rd4 + ...)
(5.4)
5.4 Ergebnisse und Diskussion
yu = cy + (yd − cy )(1 + k1 rd2 + k2 rd4 + ...)
46
(5.5)
Durch verschiedene Tests wurde in [Tsa86, CGPV03] belegt, dass bei mehr
als 90% der radialen Verzerrung nur der quadratische Verzerrungsfaktor k1
berücksichtigt wird, wenn die Genauigkeit nicht wichtig ist. Daher wurde in
vielen Publikationen zur Bildentzerrung sowie in dieser Arbeit mit dieser Erkenntnis weiter gearbeitet.
Die Gleichungen 5.4 und 5.5 lassen sich dann folgenderweise umformulieren:
xu = cx + (xd − cx )(1 + k1 rd2 )
(5.6)
yu = cy + (yd − cy )(1 + k1 rd2 )
(5.7)
Wobei k1 und k2 die radialen Verzerrungsparameter und p1 , p2 die tangentialen
Verzerrungsparameter beschreiben.
Um das verzerrte Bild mit Hilfe der ermittelten Verzerrungsparameter aus 5.3.1
in ein unverzerrtes Bild umzuwandeln muß der Grauwert auf die unverzerrten
Positionen zurückgerechnet werden. Dazu berechnet man zunächst die Koordinaten der verzerrten Bildpositionen. Die Grauwerte an den unverzerrten Positionen erhält man durch Interpolation(Vgl. Abschnitt 2.4.1). Quellcode ist dem
Anhang B.2 zu entnehmen.
5.4
Ergebnisse und Diskussion
Die hier dargestellten Methoden zur Bildentzerrung beruhen auf sogennanten
automatischen Methoden (Vgl. 5.3). Die Implementierung in Toolip beruhte
zwar auf zwei, hier erwähnten Schritten, wurden jedoch aus Zeitgründen nur
die Schritte zur eigentlichen Entzerrung implementiert. Dabei wurde dem Anwender die Möglichkeit gegeben, die Verzerrungsparameter manuell durch ein
Textfeld einzutragen bzw. durch einen Slider einzustellen. Wie in den einleitende
Sätzen dieses Kapitels erwähnt, wurde nur die radiale Verzerrung berücksichtigt
(k1 ).
Kapitel 6
Zusammenfassung und
Ausblick
Die digitale Fotografie bringt ein hohes Potential mit sich. Doch die Kombination von Bildsensoren mit schlechter Optik verursacht einen hohen Genauigkeitsverlust, der selbst mit sehr viel Aufwand nicht gänzlich zu kompensieren
ist.
In dieser Arbeit werden verschiedene Algorithmen zur Bildsensorkalibrierung implementiert und untersucht. Im Gegensatz zu den meisten Arbeiten
[Tsa86, Zha00] aus diesem Bereich, die sich hauptsächlich mit der Ermittlung
der inneren bzw. äußeren Kameraparameter (Orientierung) beschäftigen, wird
hier der Schwerpunkt auf Verfahren zum Weißabgleich, zur Entzerrung sowie
auf Verfahren zur Korrektur von Vignettierung gelegt.
Bezüglich des Weißabgleiches wird gezeigt, wie die Bildsensoren auf die dominierende Lichtquelle einer Szene sensibiliziert bzw. justiert werden müssen.
Dabei werden neben manuellen und automatischen Methoden Algorithmen wie
Grayworld, Retinex, Grayworldretinex, sowie Verfahren von Weng et al. implementiert und untersucht. Aus dieser Untersuchung mit dem Ziel eines optimalen Algorithmus zur Beseitigung von chromatischer Abberation bzw. von
Farbstichen zu finden, konnte man feststellen, dass die verwendeten Algorithmen abhängig vom Eingangsbild sind.
Bezüglich der Korrektur von Vignettierung existieren in der Literatur zahlreiche Ansätze. Es wurden hier jedoch nur zwei Algorithmen implementiert und
untersucht. Dabei wurde festgestellt, dass diese beiden Algorithmen nur mit
guten Referenzbildern optimale Ergebnisse liefern. Durch diese Untersuchung
wurde auch festgestellt, dass viele Autoren die Vignettierung mit dem Shading
verwechseln. Nachteile von diesen Ansätzen sind:
• hohe Speicherplatzkapazität ist erforderlich
• das Referenzbild musst vorhanden sein.
Bezüglich der Entzerrung wurden auch im Laufe dieser Arbeit Verfahren zur
Entzerrung vorgestellt. Dort wurde bewiesen, dass der großer Anteil an Verzerrung radial ist. Demzufolge wurden dort zuerst Methoden zur Ermittlung von
Verzerrungsparametern vorgestellt und dann wurde erklärt wie man mit Hilfe
48
dieser Verzerrungsparameter eine Korrektur durchführen kann.
Durch verschiedene Tests ist festgestellt worden, dass:
• Bilder mit einem Fish-eye Effekt sehr gut entzerrt werden.
• Bilder mit herrkömmlichen tonnen- bzw. kissenförmigen Verzerrungen
kein zufriedestelllendes Ergebniss liefern.
Daher sollten zukünftige Arbeiten aus diesem Bereich die Entzerrung von
tonnen- bzw. kissenförmigen Verzerrungen in Bildern untersuchen. Vor allem
sollte die Wirkung bzw. die Beseitigung von tangentialer Verzerrung näher betrachtet werden. Weitere Arbeiten sollten sich auf Methoden konzentrieren, die
die Vignettierung automatisch, ohne manuelle Eingriffe, korrigieren können. Im
Hinblick auf automatische Methoden zum Weißabgleich sollten andere Ansätze
untersucht werden, so dass Anwendern mit einer Störung des Farbsehvermögens
ohne große Bedenken der Weißabgleich ermöglicht wird. Es wurden die meisten
der hier vorgestellten Verfahren implementiert und in Toolip integriert.
Aus der verschiedenen Tests und Diskussionen die im Kapiteln drei, vier und
fünf durchgeführt wurden, ließen sich für diese Arbeit folgender wichtige Erkenntnissen ziehen:
• zu jedem optischen Effekt gibt es Verfahren die den Effekt korrigieren.
• es muss manuell eingegriffen werden, weil einige Effekte subjektiv sind.
Anhang A
Toolip
Toolip ist eine in der Abteilung BV des Fraunhofer ITWMs entwickelte und verwendete Software. Sie dient zur schnellen Visualisierung, sowie der Implementierung verschiedener Algorithmen der Bildverarbeitung. Dabei werden Algorithmen aus Themengebieten der Bildverarbeitung wie z.B. der Segmentierung,
der Visualisierung, oder der Morphologie als Plugin modular in C++ implementiert. Das Testen der implementierten Plugins wird durch Hintereinanderschaltung der entsprechenden Knoten gestaltet. Abbildung A.1 zeigt ein Beispiel der
Visualisierung. Dies erfolgt durch Hintereinanderschaltung der Load -Knoten
(zum Laden eines Bildes) und Display-Knoten (zum Anzeigen eines Bildes).
Alle Algorithmen die im Rahmen dieser Arbeit entwickelt und implementiert
wurden, wurden getestet und als Plugin in Toolip integriert.
A.1
Schritte zur Handhabung der entwickelten Algorithmen in Toolip
Nachfolgend werden die Graphen zu den im Laufe dieser Arbeit entwickelten
Algorithmen dargestellt.
A.1.1
Entzerrung
Siehe Abbildung A.3.
A.1.2
Vignettierung
Siehe Abbildung A.4.
A.1.3
Weißabgleich
Graph zum Greyworld-Algorithmus
Siehe Abbildung A.5.
Graph zum Retinex-Algorithmus
Siehe Abbildung A.6.
A.1 Schritte zur Handhabung der entwickelten Algorithmen in Toolip
Abbildung A.1: Beispiel einer Visualisierung mit Hilfe von Toolip.
Graph zum GreyworldRetinex-Algorithmus
Siehe Abbildung A.7.
Graph zum Cheng et al.-Algorithmus
Siehe Abbildung A.8.
50
A.1 Schritte zur Handhabung der entwickelten Algorithmen in Toolip
Abbildung A.2: Graph zur Entzerrung
51
A.1 Schritte zur Handhabung der entwickelten Algorithmen in Toolip
(a)
(b)
Abbildung A.3: Entzerrung in Toolip (a) mit k1 = 7, 92e−09
(b) mit k1 = 2, 206e−05
52
A.1 Schritte zur Handhabung der entwickelten Algorithmen in Toolip
(a)
(b)
Abbildung A.4: Korrektur der Vignettierung in Toolip (a) Graph
(b) Ergebisse
53
A.1 Schritte zur Handhabung der entwickelten Algorithmen in Toolip
Abbildung A.5: Graph zur Anwwendung des Greyworld-Algorithmus
Abbildung A.6: Graph zur Anwwendung des Retinex-Algorithmus
54
A.1 Schritte zur Handhabung der entwickelten Algorithmen in Toolip
55
Abbildung A.7: Graph zur Anwwendung des Greyworldretinex-Algorithmus
A.1 Schritte zur Handhabung der entwickelten Algorithmen in Toolip
Abbildung A.8: Graph zur Anwwendung des Cheng et al.-Algorithmus
56
Anhang B
Listings
B.1
Vignetierung
void MakeLuT( const CImage∗ pImgIn , CImage∗ pImgOut )
{
// g e t image a t t r i b u t e s
const int nWidth = pImgIn−>S i z e ( ) . x ;
const int nHeight = pImgIn−>S i z e ( ) . y ;
// Check t h e type o f t h e image and compute
i f ( pImgIn−>Type ( ) == ITWM: : IMAGE GREY F)
{
// compute t h e max g r e y v a l u e o f t h e image
f l o a t fMaxGreyValue = 0 ;
MaxGrayValue ( pImgIn , fMaxGreyValue ) ;
// g e t p o i n t e r t o p i x e l data
const f l o a t ∗ pInputImage = ( f l o a t ∗ ) ( ( pImgIn−>B u f f e r ( ) . Ptr ( ) ) ) ;
f l o a t ∗ pOutputImage = ( f l o a t ∗ ) ( ( pImgOut−>B u f f e r ( ) . Ptr ( ) ) ) ;
// i t e r a t i o n v a r i a b l e
int x , y ;
// copy t h e b o r d e r .
f o r ( y = 0 ; y < nHeight ; ++y )
{
f o r ( x = 0 ; x < nWidth ; ++x )
{
pOutputImage [ x + nWidth∗y ] = fMaxGreyValue
/ pInputImage [ x + nWidth∗y ] ;
}
}
}
e l s e i f ( pImgIn−>Type ( ) == ITWM: : IMAGE GREY 8)
{
// compute t h e max g r e y v a l u e o f t h e image
int nMaxGreyValue = 0 ;
MaxGrayValue ( pImgIn , nMaxGreyValue ) ;
// g e t p o i n t e r t o p i x e l data
const u i n t 8 ∗ pInputImage = pImgIn−>B u f f e r ( ) . Ptr ( ) ;
u i n t 8 ∗ pOutputImage = pImgOut−>B u f f e r ( ) . Ptr ( ) ;
// i t e r a t i o n v a r i a b l e
B.2 Entzerrung
58
int x , y ;
// copy t h e b o r d e r .
f o r ( y = 0 ; y < nHeight ; ++y )
{
f o r ( x = 0 ; x < nWidth ; ++x )
{
pOutputImage [ x + nWidth∗y ] = ( int ) ( ( nMaxGreyValue )
/ pInputImage [ x + nWidth∗y ] ) ;
}
}
}
}
B.2
Entzerrung
void R a d i a l D i s t o r t i o n ( const CImage∗ pImgIn , CImage∗ pImgOut ,
const f l o a t fK1 , const f l o a t fK2 , const f l o a t fK3 )
{
// g e t image a t t r i b u t e s
int nWidth = pImgIn−>S i z e ( ) . x ;
int nHeight = pImgIn−>S i z e ( ) . y ;
// g e t p o i n t e r t o p i x e l data
f l o a t ∗ pOutData = ( f l o a t ∗ ) ( ( pImgOut−>B u f f e r ( ) . Ptr ( ) ) ) ;
// a c c e e s s t h e data o f t h e d i s t o r t e d image
// assume t h a t t h e c e n t e r o f t h e image i s on middle o f image
// and compute i t ( t h e c e n t e r o f t h e g i v e n image ) .
const int nW2 = nWidth / 2 ;
const int nH2 = nHeight / 2 ;
// i t e r a t e t h e image , c a l c u l a t e t h e new c o o r d i n a t e o f
// each p o i n t o f t h e d i s t o r t e d image on t h e u n d i s t o r t e d image
f o r ( int nY = 0 ; nY < ( pImgOut−>S i z e ( ) . y ) ; ++nY)
{
// compute t h e d i s t a n c e ( c o o r d i n a t e s ) o f each p o i n t t o t h e c e n t e r
const int nYC = nY − nH2 ;
f o r ( int nX = 0 ; nX < ( pImgOut−>S i z e ( ) . x ) ; ++nX)
{
const int nXC = nX − nW2;
// compute t h e r a d i u s
const f l o a t fR = nXC∗nXC + nYC∗nYC ;
const double fX = nXC / ( 1 . 0 f + fK1 ∗ fR ) + nW2; // ;
const double fY = nYC / ( 1 . 0 f + fK1 ∗ fR ) + nH2 ;
// Source−to−Target Mapping
i f ( ( fX>=0) && ( fX < ( pImgIn−>S i z e ( ) . x ) ) && ( fY>=0) && ( fY<(pImgIn−>S i z e ( ) . y ) ) )
{
pOutData [ nX + nWidth∗nY ] = B i c u b i c I n t e r p o l a t i o n ( fX , fY , pImgIn ) ;
}
else
pOutData [ nX + nWidth∗nY ] = 0 ;
}
}
}
B.3 Weißabgleich
B.3
B.3.1
59
Weißabgleich
Greyworld
int CPAWB: : GreyWorld ( CImage ∗ pImgIn , CImage ∗pImgOut )
{
unsigned int nWidth = pImgIn−>S i z e ( ) . x ;
unsigned int nHeight = pImgIn−>S i z e ( ) . y ;
long nImageSize = nWidth∗ nHeight ;
long nIndex = 0 ;
CImage ∗pImgRed = new CImage (IMAGE GREY 8, CSize ( nWidth , nHeight ) ) ;
CImage ∗ pImgGreen = new CImage (IMAGE GREY 8, CSize ( nWidth , nHeight ) ) ;
CImage ∗ pImgBlue = new CImage (IMAGE GREY 8, CSize ( nWidth , nHeight ) ) ;
// s e p a r a t e t h e c h a n n e l o f t h e RGB
GetRGBImage ( pImgIn , pImgRed , pImgGreen , pImgBlue ) ;
// ARITHMETIC AVERAGE v a l u e o f each c h a n n e l .
f l o a t fMeanRed = 0 . 0 ;
f l o a t fMeanGreen = 0 . 0 ;
f l o a t fMeanBlue = 0 . 0 ;
f l o a t fMean = 0 . 0 ;
// max v a l u e o f each c h a n n e l .
int nMaxRed = 0 ;
int nMaxGreen = 0 ;
int nMaxBlue = 0 ;
uint8
uint8
uint8
float
∗ pInputR
∗ pInputG
∗ pInputB
fValue =
= pImgRed−>B u f f e r ( ) . Ptr ( ) ;
= pImgGreen−>B u f f e r ( ) . Ptr ( ) ;
= pImgBlue−>B u f f e r ( ) . Ptr ( ) ;
0.0;
// computing and d i s p l a y t h e max v a l u e o f each c h a n n e l .
MaxValue ( pImgRed , nMaxRed ) ;
MaxValue ( pImgGreen , nMaxGreen ) ;
MaxValue ( pImgBlue , nMaxBlue ) ;
// computing and d i s p l a y t h e mean v a l u e o f each c h a n n e l .
fMeanRed = AverageValue ( pImgRed ) ;
fMeanGreen = AverageValue ( pImgGreen ) ;
fMeanBlue = AverageValue ( pImgBlue ) ;
// compute and d i s p l a y t h e mean v a l u e o f a l l t h e image
fMean = ( fMeanGreen+fMeanGreen+fMeanBlue ) / 3 ;
// compute t h e max gray v a l u e o f t h e t r e e c h a n n e l
f l o a t fMaxRGB = 0 ;
( nMaxRed >= nMaxGreen ) ?fMaxRGB = nMaxRed : fMaxRGB = nMaxGreen ;
i f (fMaxRGB < nMaxBlue )
fMaxRGB = nMaxBlue ;
//GRAY WORLD ALGORITHM
i f ( fMeanRed != 0 )
{
f o r ( nIndex = 0 ; nIndex < nImageSize ; ++nIndex )
B.3 Weißabgleich
{
f V a l u e = ( fMean/fMeanRed ) ∗ ( pInputR [ nIndex ] ) ;
// c o r r e c t t h e born
i f ( fValue < 0)
fValue = 0;
else i f ( fValue > 255)
fValue = 255;
pInputR [ nIndex ] = ( int ) f V a l u e ;
}
}
i f ( fMeanGreen != 0 )
{
f o r ( nIndex = 0 ; nIndex < nImageSize ; ++nIndex )
{
f V a l u e = ( fMean/ fMeanGreen ) ∗ pInputG [ nIndex ] ;
// c o r r e c t t h e born
i f ( fValue < 0)
fValue = 0;
else i f ( fValue > 255)
fValue = 255;
pInputG [ nIndex ] = ( int ) f V a l u e ;
}
}
i f ( fMeanBlue != 0 )
{
f o r ( nIndex = 0 ; nIndex < nImageSize ; ++nIndex )
{
f V a l u e = ( fMean/ fMeanBlue ) ∗ pInputB [ nIndex ] ;
// c o r r e c t t h e born
i f ( fValue < 0)
fValue = 0;
else i f ( fValue > 255)
fValue = 255;
pInputB [ nIndex ] = ( int ) f V a l u e ;
}
}
// put t h e c h a n n e l t o g e t h e r t o form a new RGB image .
SetRGBImage ( pImgRed , pImgGreen , pImgBlue , pImgOut ) ;
// }
}
B.3.2
retinex
int R e t i n e x ( CImage ∗ pImgIn , CImage ∗pImgOut )
{
unsigned int nWidth = pImgIn−>S i z e ( ) . x ;
unsigned int nHeight = pImgIn−>S i z e ( ) . y ;
long nImageSize = nWidth∗ nHeight ;
long nIndex = 0 ;
// g e t t h e d i f f e r e n t rgb c h a n n e l o f t h e image
60
B.3 Weißabgleich
61
CImage ∗pImgRed = new CImage (IMAGE GREY F, CSize ( nWidth , nHeight ) ) ;
CImage ∗ pImgGreen = new CImage (IMAGE GREY F, CSize ( nWidth , nHeight ) ) ;
CImage ∗ pImgBlue = new CImage (IMAGE GREY F, CSize ( nWidth , nHeight ) ) ;
// s e p a r a t e t h e c h a n n e l o f t h e RGB
GetRGBImage ( pImgIn , pImgRed , pImgGreen , pImgBlue ) ;
// max v a l u e o f each c h a n n e l .
f l o a t fMaxRed = 0 ;
f l o a t fMaxGreen = 0 ;
f l o a t fMaxBlue = 0 ;
f l o a t ∗ pInputR = ( f l o a t ∗ ) pImgRed−>B u f f e r ( ) . Ptr ( ) ;
f l o a t ∗ pInputG = ( f l o a t ∗ ) pImgGreen−>B u f f e r ( ) . Ptr ( ) ;
f l o a t ∗ pInputB = ( f l o a t ∗ ) pImgBlue−>B u f f e r ( ) . Ptr ( ) ;
float fValue = 0 . 0 ;
// computing and d i s p l a y t h e max v a l u e o f each c h a n n e l .
MaxValue ( pImgRed , fMaxRed ) ;
MaxValue ( pImgGreen , fMaxGreen ) ;
MaxValue ( pImgBlue , fMaxBlue ) ;
// compute t h e g a i n f o r t h e r e d and b l u e c h a n n e l
f l o a t Rgain = fMaxGreen / fMaxRed ;
f l o a t Bgain = fMaxGreen / fMaxBlue ;
// apply t h e c o r r e c t i o n t o each p i x e l o f each c h a n n e l
f o r ( nIndex = 0 ; nIndex < nImageSize ; ++nIndex )
{
f V a l u e = Rgain ∗ pInputR [ nIndex ] ;
pInputR [ nIndex ] = f V a l u e ;
}
f o r ( nIndex = 0 ; nIndex < nImageSize ; ++nIndex )
{
f V a l u e = Bgain ∗ pInputB [ nIndex ] ;
pInputB [ nIndex ] = f V a l u e ;
}
// put t h e c h a n n e l t o g e t h e r t o form a new RGB image .
SetRGBImage ( pImgRed , pImgGreen , pImgBlue , pImgOut ) ;
}
B.3.3
greyworldretinex
int GreyWorldRetinex ( CImage ∗ pImgIn , CImage ∗pImgOut )
{
unsigned int nWidth = pImgIn−>S i z e ( ) . x ;
unsigned int nHeight = pImgIn−>S i z e ( ) . y ;
long nImageSize = nWidth∗ nHeight ;
long nIndex = 0 ;
CImage ∗pImgRed = new CImage (IMAGE GREY F, CSize ( nWidth , nHeight ) ) ;
CImage ∗ pImgGreen = new CImage (IMAGE GREY F, CSize ( nWidth , nHeight ) ) ;
CImage ∗ pImgBlue = new CImage (IMAGE GREY F, CSize ( nWidth , nHeight ) ) ;
// s e p a r a t e t h e c h a n n e l o f t h e RGB
GetRGBImage ( pImgIn , pImgRed , pImgGreen , pImgBlue ) ;
B.3 Weißabgleich
62
// max v a l u e o f each c h a n n e l .
f l o a t fMaxRed = 0 . 0 ;
f l o a t fMaxGreen = 0 . 0 ;
f l o a t fMaxBlue = 0 . 0 ;
f l o a t ∗ pInputR = ( f l o a t ∗ ) pImgRed−>B u f f e r ( ) . Ptr ( ) ;
f l o a t ∗ pInputG = ( f l o a t ∗ ) pImgGreen−>B u f f e r ( ) . Ptr ( ) ;
f l o a t ∗ pInputB = ( f l o a t ∗ ) pImgBlue−>B u f f e r ( ) . Ptr ( ) ;
float fValue = 0 . 0 ;
// computing and d i s p l a y t h e max v a l u e o f each c h a n n e l .
MaxValue ( pImgRed , fMaxRed ) ;
MaxValue ( pImgGreen , fMaxGreen ) ;
MaxValue ( pImgBlue , fMaxBlue ) ;
// For t h e r e s o l u t i o n o f t h e e q u a t i o n s ( Ar . xr = Bg and Ab . xb = Bg )
// t h e c o e e f i c i e n t o f t h e matrix a r e f i r s t computed
// and then mu und nu .
// with Ar = [ ar , br ; cr , dr ] and Ab = [ ab , bb ; cb , db ] , Bg =[ eg , f g ] ,
// xb = [ mub , nub ] , xr = [ mur , nur ] f o r t h e r e d c h a n n e l .
float ar = 0 . 0 ;
f l o a t br = 0 . 0 ;
float cr = 0 . 0 ;
f l o a t dr = 0 . 0 ;
// f o r t h e
f l o a t ab =
f l o a t bb =
f l o a t cb =
f l o a t db =
blue channel
0.0;
0.0;
0.0;
0.0;
f l o a t eg = 0 . 0 ;
float fg = 0 . 0 ;
float
float
float
float
mur
nur
mub
nub
=
=
=
=
0.0;
0.0;
0.0;
0.0;
f o r ( nIndex = 0 ; nIndex < nImageSize ; ++nIndex )
{
a r += ( pInputR [ nIndex ] ∗ pInputR [ nIndex ] ) ;
br +=
pInputR [ nIndex ] ;
cr =
fMaxRed∗fMaxRed ;
dr =
fMaxRed ;
ab +=
bb +=
cb =
db =
eg +=
fg =
( pInputB [ nIndex ] ∗ pInputB [ nIndex ] ) ;
pInputB [ nIndex ] ;
fMaxBlue ∗ fMaxBlue ;
fMaxBlue ;
pInputG [ nIndex ] ;
fMaxGreen ;
B.3 Weißabgleich
63
}
// compute mu and mit u s i n g crammer
mur = ( ( eg ∗ dr )−( f g ∗ br ) ) / ( ( a r ∗ dr ) − ( br ∗ c r ) ) ;
nur = ( ( f g ∗ a r )−( eg ∗ c r ) ) / ( ( a r ∗ dr ) − ( br ∗ c r ) ) ;
mub = ( eg ∗db−f g ∗bb ) / ( ab∗db − bb∗ cb ) ;
nub = ( f g ∗ab−eg ∗ cb ) / ( ab∗db − bb∗ cb ) ;
f o r ( nIndex = 0 ; nIndex < nImageSize ; ++nIndex )
{
f V a l u e = mur ∗ ( pInputR [ nIndex ] ∗ pInputR [ nIndex ] )
+ nur ∗ pInputR [ nIndex ] ;
pInputR [ nIndex ] = f V a l u e ;
f V a l u e = mub∗ ( pInputB [ nIndex ] ∗ pInputB [ nIndex ] )
+ nub∗ pInputB [ nIndex ] ;
pInputB [ nIndex ] = f V a l u e ;
}
// put t h e c h a n n e l t o g e t h e r t o form a new RGB image .
SetRGBImage ( pImgRed , pImgGreen , pImgBlue , pImgOut ) ;
}
B.3.4
Cheng et al.
f l o a t MeanValReferenceWhitePoints ( CImage ∗ pImgIn ,
s t d : : v e c t o r < s t d : : p a i r <int , int> >& a C o o r d i n a t e s )
{
// s t t r i b u t e o f t h e image
int nWidth = pImgIn−>S i z e ( ) . x ;
int nHeight = pImgIn−>S i z e ( ) . y ;
long x = 0 , y = 0 ;
// i n p u t data
const u i n t 8 ∗ pDataIn = ( pImgIn−>B u f f e r ( ) . Ptr ( ) ) ;
// put t h e p i x e l n v a l u e o f t h e g i v e n v e c t o r o f
// c o o r d i n a t e s i n a v e c t o r f o r f u r t h e r u s e .
s t d : : v e c t o r <f l o a t > aTemp ;
s t d : : v e c t o r <f l o a t > aTemp2 ;
f o r ( x = 0 ; x < a C o o r d i n a t e s . s i z e ( ) ; x++)
{
aTemp . push back ( pDataIn [ ( a C o o r d i n a t e s . a t ( x ) ) . f i r s t +
nWidth ∗ ( a C o o r d i n a t e s . a t ( x ) ) . s e c o n d ] ) ;
}
// s o r t i n g t h e v e c t o r i n a d e c r e a s i n g o r d e r .
s o r t (aTemp . b e g i n ( ) , aTemp . end ( ) ) ;
// compute t h e l a s t i n d e x o f t h e top 10% r e f e r e n c e w h i t e p o i n t s
int l a s t E l e m e n t I n d e x = ( int ) ( 1 0 ∗aTemp . s i z e ( ) / 1 0 0 ) + 1 ;
// compute t h e mean v a l u e o f t h o s e top 10%
B.3 Weißabgleich
64
f l o a t fMeanValue = 0 ;
f o r ( y = (aTemp . s i z e ()− l a s t E l e m e n t I n d e x ) ; y < aTemp . s i z e ( ) ; y++)
{
fMeanValue += aTemp [ y ] ;
}
return ( fMeanValue / l a s t E l e m e n t I n d e x ) ;
}
void N e a r W h i t e P i x e l s C o o r d i n a t e s ( CImage ∗ pSrc Cb ,
CImage ∗ pSrc Cr , s t d : : v e c t o r < s t d : : p a i r <int , int> >& a C o o r d i n a t e s )
{
// s t t r i b u t e o f t h e image
int nWidth Cb = pSrc Cb−>S i z e ( ) . x ;
int nHeight Cb = pSrc Cb−>S i z e ( ) . y ;
int nWidth Cr = pSrc Cr−>S i z e ( ) . x ;
int nHeight Cr = pSrc Cr−>S i z e ( ) . y ;
long x = 0 , y = 0 ;
f l o a t fPixValueCb = 0 ; // p i x e l v a l u e i n t h e Cb c h a n n e l
f l o a t fPixValueCr = 0 ; // p i x e l v a l u e i n t h e Cr c h a n n e l
// i n p u t data
const f l o a t ∗ pData Cb = ( f l o a t ∗ ) ( pSrc Cb−>B u f f e r ( ) . Ptr ( ) ) ;
const f l o a t ∗ pData Cr = ( f l o a t ∗ ) ( pSrc Cr−>B u f f e r ( ) . Ptr ( ) ) ;
// compute t h e mean o f t h e images :
f l o a t fMean Cb = Mean ( pSrc Cb ) ;
f l o a t fMean Cr = Mean ( pSrc Cb ) ;
// compute t h e a v e r a g e a b s o l u t e d i f f e r e n c e
f l o a t D b = Aad ( pSrc Cb ) ;
f l o a t D r = Aad ( pSrc Cr ) ;
// e x t r a c t t h e c o o r d i n a t e s o f t h e n e a r White p i x e l n .
f o r ( y = 0 ; y < nHeight Cb ; ++y )
{
f o r ( x = 0 ; x < nWidth Cb ; ++x )
{
fPixValueCb = pData Cb [ x + nWidth Cb∗y ] ;
fPixValueCr = pData Cr [ x + nWidth Cb∗y ] ;
i f ( ( f a b s ( fPixValueCb − ( fMean Cb + D b∗ s i g n ( fMean Cb ) ) ) < 1 . 5 ∗ D b ) &&
( f a b s ( fPixValueCr − ( 1 . 5 ∗ fMean Cr + D r ∗ s i g n ( fMean Cr )))) < 1 . 5 ∗ D r )
{
a C o o r d i n a t e s . push back ( s t d : : m a k e p a i r ( x , y ) ) ;
}
}
}
}
f l o a t AverageValue ( CImage ∗ pSrc )
B.3 Weißabgleich
65
{
// g e t image a t t r i b u t e s
long nWidth = pSrc−>S i z e ( ) . x ;
long nHeight = pSrc−>S i z e ( ) . y ;
long nImageSize = nWidth ∗ nHeight ;
long nIndex ;
int nMaxGrayValue = 0 ;
double r e s u l t = 0 ;
// g e t t h e max gray v a l u e o f t h e g i v e n image
MaxValue ( pSrc , nMaxGrayValue ) ;
// g e t image s t a t i s t i c s
s t d : : v e c t o r <long > vAbsHistogram ( nMaxGrayValue +1); // a b s o l u t h i s t o g r a m
s t d : : v e c t o r <f l o a t > vRelHistogram ( nMaxGrayValue +1); // r e l a t i v h i s t o g r a m
f l o a t fMeanValue = 0 . 0 ;
// Mean v a l u e whole image
// g e t p o i n t e r t o p i x e l data
const u i n t 8 ∗ pInputImage = ( ( pSrc−>B u f f e r ( ) . Ptr ( ) ) ) ;
int nPixValue = 0 ; // t h e a c u a l p i x e l v a l u e
// compute t h e a b s o l u t h i s t o g r a m .
f o r ( nIndex = 0 ; nIndex < nImageSize ; ++nIndex )
{
nPixValue = ( int ) pInputImage [ nIndex ] ;
vAbsHistogram [ nPixValue ] = vAbsHistogram [ nPixValue ] + 1 ;
}
// compute t h e r e l a t i v e h i s t o g r a m
f o r ( nIndex = 0 ; nIndex < vAbsHistogram . s i z e ( ) ; ++nIndex ) // nWidth
{
vRelHistogram [ nIndex ] = ( f l o a t ) vAbsHistogram [ nIndex ] / nImageSize ;
//
s t d : : cout<< vRelHistogram [ x ] <<” , ” ; // <<s t d : : e n d l ;
r e s u l t += vRelHistogram [ nIndex ] ;
}
// compute t h e mean v a l u e o f t h e h i s t o g r a m .
f o r ( nIndex = 0 ; nIndex < vRelHistogram . s i z e ( ) ; ++nIndex ) // nWidth
fMeanValue +=
( nIndex ∗ vRelHistogram [ nIndex ] ) ;
return fMeanValue ;
}
f l o a t MaxValue ( const CImage ∗ pSrc , int& nMax)
{
// g e t image a t t r i b u t e s
int nWidth = pSrc−>S i z e ( ) . x ;
int nHeight = pSrc−>S i z e ( ) . y ;
long nIndex = 0 ;
// i n p u t data
const u i n t 8 ∗ pDataInt = ( pSrc−>B u f f e r ( ) . Ptr ( ) ) ;
// t h e a c u a l p i x e l v a l u e
int nPixValue = 0 ;
// s e a r c h f o r t h e max gray v a l u e w h i l e i t e r a t i n g t h e image matrix .
f o r ( nIndex = 0 ; nIndex < nWidth∗ nHeight ; ++nIndex )
{
B.3 Weißabgleich
nPixValue = ( int ) pDataInt [ nIndex ] ;
i f ( nPixValue > nMax )
nMax = nPixValue ;
}
return 0 ;
}
66
Abbildungsverzeichnis
Abbildungsverzeichnis
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
Weißabgleich bei Tageslicht . . . . . . . .
(a) CCD-Sensor mit 33 MPixel . . . . .
(b) CCD-Sensor mit 12 MPixel . . . . .
Bildwinkel von Objektiven . . . . . . . . .
Weitwinkelobjektiv . . . . . . . . . . . . .
Standardobjektiv . . . . . . . . . . . . . .
Teleobjektiv . . . . . . . . . . . . . . . . .
Interpolation über den nächsten Nachbarn
Bilineare Interpolation . . . . . . . . . . .
Bilineare Interpolation . . . . . . . . . . .
Bikubische Interpolation . . . . . . . . . .
i
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 4
. 4
. 4
. 5
. 6
. 6
. 6
. 8
. 9
. 9
. 11
Strahlenspektrum . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Farbtemperaturen im Tagesverlauf . . . . . . . . . . . . . . . . . 15
RGB-Farbmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Darstellung des RGB-Farbraums . . . . . . . . . . . . . . . . . . 16
RGB Bild mit seinen Komponenten . . . . . . . . . . . . . . . . . 17
(a) Original . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
(b) Rote Kanal . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
(c) Grüne Kanal . . . . . . . . . . . . . . . . . . . . . . . . . . 17
(d) Blaue Kanal . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Darstellung des CMY-Farbraums als 3D-Einheitswürfel . . . . . 17
(a) CMY-Farbraum . . . . . . . . . . . . . . . . . . . . . . . . 17
(b) CMY-Farbmodell . . . . . . . . . . . . . . . . . . . . . . . . 17
Darstellung der HSI-Farbmodell . . . . . . . . . . . . . . . . . . 18
Farbabweichung bei hohen bzw. hohen Temperaturen im YCbCr-Farbraum 24
(a) Abweichung der hohen Farbtemperaturen . . . . . . . . . . 24
(b) Das Near-White Gebiet eines Bildes . . . . . . . . . . . . . 24
Weißabgleich bei Tageslicht . . . . . . . . . . . . . . . . . . . . . 26
(a) Originalbild aufgenommen bei Tageslicht . . . . . . . . . . 26
(b) Bild nach der Weißabgleich mit Hilfe von GW . . . . . . . 26
(c) Bild nach der Weißabgleich mit Hilfe von RT . . . . . . . . 26
(d) Bild nach der Weißabgleich mit Hilfe von GWRT . . . . . . 26
(e) Bild nach der Weißabgleich mit Hilfe von NAWBM . . . . . 26
ABBILDUNGSVERZEICHNIS
68
3.10 Weißabgleich bei Tageslicht . . . . . . . . . . . . . . . . . . . . . 27
(a) Originalbild aufgenommen bei Tageslicht . . . . . . . . . . 27
(b) Bild nach der Weißabgleich mit Hilfe von GW . . . . . . . 27
(c) Bild nach der Weißabgleich mit Hilfe von RT . . . . . . . . 27
(d) Bild nach der Weißabgleich mit Hilfe von GWRT . . . . . . 27
(e) Bild nach der Weißabgleich mit Hilfe von NAWBM . . . . . 27
3.11 Weißabgleich bei Tageslicht . . . . . . . . . . . . . . . . . . . . . 28
(a) Original bei Tageslicht aufgenommene Bild . . . . . . . . . 28
(b) Bild nach der Weißabgleich mit Hilfe von GW . . . . . . . 28
(c) Bild nach der Weißabgleich mit Hilfe von RT . . . . . . . . 28
(d) Bild nach der Weißabgleich mit Hilfe von GWRT . . . . . . 28
(e) Bild nach der Weißabgleich mit Hilfe von NAWBM . . . . . 28
3.12 Weißabgleich bei Coolwhite Lichtquelle . . . . . . . . . . . . . . 29
(a) Original unter einer Coolwhite Beleuchtung aufgenommene Bild 29
(b) Bild nach der Weißabgleich mit Hilfe von GW . . . . . . . 29
(c) Bild nach der Weißabgleich mit Hilfe von RT . . . . . . . . 29
(d) Bild nach der Weißabgleich mit Hilfe von GWRT . . . . . . 29
(e) Bild nach der Weißabgleich mit Hilfe von NAWBM . . . . . 29
3.13 Weißabgleich bei einem Horizon Beleuchtung . . . . . . . . . . . 29
(a) Original unter einer Horizon Beleuchtung aufgenommene Bild 29
(b) Bild nach der Weißabgleich mit Hilfe von GW . . . . . . . 29
(c) Bild nach der Weißabgleich mit Hilfe von RT . . . . . . . . 29
(d) Bild nach der Weißabgleich mit Hilfe von GWRT . . . . . . 29
(e) Bild nach der Weißabgleich mit Hilfe von NAWBM . . . . . 29
3.14 Weißabgleich bei einem Inca Beleuchtung . . . . . . . . . . . . . 30
(a) Original unter einer Inca Beleuchtung aufgenommene Bild . 30
(b) Bild nach der Weißabgleich mit Hilfe von GW . . . . . . . 30
(c) Bild nach der Weißabgleich mit Hilfe von RT . . . . . . . . 30
(d) Bild nach der Weißabgleich mit Hilfe von GWRT . . . . . . 30
(e) Bild nach der Weißabgleich mit Hilfe von NAWBM . . . . . 30
4.1
4.2
4.3
4.4
4.5
Vignettierung . . . . . . . . . . . . . . . . . . .
(a) Randabschattung bei einer Aufnahme mit
(b) Vignettierung durch eine Streulichtblende
Natürliche Vignettierung . . . . . . . . . . . . .
Künstliche Vignettierung . . . . . . . . . . . .
Starke Vignettierung . . . . . . . . . . . . . . .
(a) Bild mit Vignettierung . . . . . . . . . . .
(b) Referenzbild . . . . . . . . . . . . . . . .
(c) Bild der LUT . . . . . . . . . . . . . . . .
(d) Ergebnisbild . . . . . . . . . . . . . . . .
RGB Bild mit Vignettierung . . . . . . . . . .
(a) RGB Bild mit Vignettierung . . . . . . .
(b) Referenzbild . . . . . . . . . . . . . . . .
(c) Bild der LUT . . . . . . . . . . . . . . . .
(d) Ergebnisbild . . . . . . . . . . . . . . . .
. . . . . . . . . .
einem Mikroskop
. . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
33
33
33
34
35
39
39
39
39
39
40
40
40
40
40
ABBILDUNGSVERZEICHNIS
5.1
5.2
A.1
A.2
A.3
A.4
A.5
A.6
A.7
A.8
Verzerunng . . . . . . . . . . . .
(a) Verzerrte Bild . . . . . . .
(b) Unverzerrte Bild . . . . . .
Typen von Verzerrung . . . . . .
(b) Kissenförmiger Verzerrung
(c) Tonnenförmiger Verzerrung
Toolip
Graph
Graph
Graph
Graph
Graph
Graph
Graph
. .
zur
zur
zur
zur
zur
zur
zur
69
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
42
42
42
43
43
43
. . . . . . . . . . . . . . . . . . . . . . . .
Entzerrung . . . . . . . . . . . . . . . . .
Entzerrung in Toolip . . . . . . . . . . . .
Korrektur der Vignettierung in Toolip . .
Anwendung des Greyworld-Algorithmus .
Anwendung des Retinex-Algorithmus . .
Anwendung des Retinex-Algorithmus . .
Anwendung des Cheng et al.-Algorithmus
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
50
51
52
53
54
54
55
56
Tabellenverzeichnis
Tabellenverzeichnis
3.1
3.2
3.3
3.4
3.5
Beispiele für typische Farbtemperaturen
Beispiele für typische Farbtemperaturen
Farbtemperatur von Lichtquelle . . . . .
Subjektive Beurteilung von Testbildern .
Objektive Evaluation von Testbildern .
i
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
13
20
28
30
30
Literaturverzeichnis
[AAB96]
N. Asada, A. Amano, and M. Baba, Photometric calibration of zoom
lens systems, Proc. IEEE Int. Conf. on pattern Recognition (1996),
pp.186–190.
[Bau09]
Elmar Baumann, http://www.elmar-baumann.de, 2009.
[BB04]
C. Brauer Burchardt, A simple new method for precise lens distortion correction of low cost camera systems, DAGM 2004, 2004,
pp. 570–577.
[Ber05]
Jähne Bernd, Digitale bildverarbeitung, 6 ed., Springer-Verlag Berlin Heidelberg, 2005 (german).
[Bro66]
D.C. Brown, Decentering distortion of lenses, no. 3, 444–462.
[CGPV03] R. Cucchiara, C. Grana, A. Prati, and R. Vezzani, A hough
transform-based method for radial lens distortion correction, ICIAP
’03: Proceedings of the 12th International Conference on Image
Analysis and Processing (Washington, DC, USA), IEEE Computer
Society, 2003, p. 182.
[CM86]
Y. P. Chen and B. K. Mudunuri, An anti-vignetting technique for
super wide field of view mosaiced images, Journal of Imaging technology 12 (1986), no. 5, 293–295.
[Col08]
ColorFoto, Lichtverlust im objektiven, das objektiv als hindernis,
ColorFoto Fachzeitschrift (11/2008), 74–77.
[DAL09]
DALSA, http://www.dalsa.com, 2009.
[DFA95]
Frédéric Devernay, Olivier Faugeras, and Inria Sophia Antipolis,
Automatic calibration and removal of distortion from scenes of
structured environments, In SPIE, volume 2567, 1995.
[DO01]
F. Devernay and O.Faugeras, Straight lines have to be straight, Machine Vision and Applications Vol.13 (2001), no. 1, pp.14– 24.
[dxo09]
dxo, http://www.dxo.com/de/photo/, 2009.
[FCM00]
Brian Funt, Florian Ciurea, and John McCann, Retinex in matlab, Proceedings of the IST/SID Eighth Color Imaging Conference:
Color Science, Systems and Applications, (2000), pp.112–121.
LITERATURVERZEICHNIS
72
[FHH01]
Graham Finlayson, Steven D. Hordley, and Paul Hubel, Color by
correlation: A simple, unifying framework for color constancy, IEEE Transactions on Pattern Analysis and Machine Intelligence
Vol.23 (2001), no. 11, pp.1209–1221.
[Fot09]
Fotografie, http://www.puchner.org/fotografie/technik/, 2009.
[GIM09]
GIMP, http://www.gimp.de, 2009.
[GW08]
Rafael C. Gonzales and Richard E. Woods, Digital image processing, 3 ed., Pearson International Edition, 2008 (english).
[Har01]
J.Y. Hardeberg, Acquisition and reproduction of color images, Colormetric and Multispectral Approaches Universal Publshers
(2001).
[Hec05]
Eugene Hecht, Optik, 4 ed., Addison-Wesley, 2005 (german).
[Hei09]
Uni. Heidelberg, http://www.rzuser.uni-heidelberg.de, 2009.
[HKAW04] Hong-Kwai, Lam Oscar Au, and Chi-Wah Wong, Automatic white
balancing using luminance component and standard deviation of rgb
components., in ICASSP Vol.3 (2004), pp.493–496.
[IM09]
IC3-Media, http://www.ic3-media.de/index.php, 2009.
[IW09]
IT-Wissen, http://www.itwissen.info, 2009.
[Lam05]
Edmund Lam, Combining gray world and retinex theory for automatic white balance in digital photography, Consumer Electronics,
2005. (ISCE 2005). Proceedings of the Ninth International Symposium on (2005), pp.134–139.
[LAW04a] Hong-Kwai Lam, Oscar Au, and Chi-Wah Wong, Automatic white balancing using adjacent channels adjustment in rgb domain, in
ICME Vol.3 (2004), pp.979–982.
[LAW04b]
, Automatic white balancing using standard deviation of rgb
components., in ISCAS (2004), no. 3, pp.921–924.
[Möl09]
Klaus Möller, http://www.klausmoeller.net, 2009.
[MPS83]
P. Muralikrisha, S. Prakash, and B.H. Subbarays, Digital processing
of spacelab imaging, Advanced Space Research Vol.2 (1983), no. 7,
pp.107–110.
[MW04]
J. Mallon and P.F. Whelan, Precise radial un-distortion of images,
2004, pp. I: 18–21.
[Neu05]
Burkhard Neuman, Bildverarbeitung für einsteiger, Springer Berlin
Heidelberg, 2005.
LITERATURVERZEICHNIS
73
[NWT08]
Dennis Nikitenko, Michael Wirth, and Kataline Trudel, Applicability of white-balancing algorithms to restoring faded colour slides:
An empirical evaluation, Journal of Multimedia Vol.3 (2008), no. 5,
pp.9–18.
[PM97]
B. Prescott and G.F. McLean, Line-based correction of radial lens
distortion, no. 1, 39–47.
[Rap09]
Rapitron, http://www.rapitron.it/guidaobinde.htm, 1998-2009.
[Thö06]
Thomas Thöniß, Objektive in der industriellen bildverarbeitung,
2.Fachtagung Optische Industriesensorik (10.2006), pp.6–10.
[Tsa86]
R. Tsai, A efficient and accurate camera calibration technique for
3d machine vision, Proc. IEEE Conference on Computer Vision and
Pattern Recognition (CVPR 86) (1986), pp.364–374.
[Tsa87]
, A versatile camera calibration technique for high-accuracy
3d machine vision metrology using off-the-shelf tv cameras and lenses, IEEE Journal of Robotics and Automation Vol.4 (Aug.1987),
no. 4, pp.323–344.
[VFT04]
Chikane Varsha, CHiou-Shann Fuh, and Chiou T., Automatic white balance for digital still camera, Conference on Computer Vision
Graphics and Image Processing (2004), pp.134–139.
[WCF05]
Ching-Chih Weng, Homer Chen, and Chiou-Shann Fuh, A novel
automatic white balance method for digital still cameras, IEEE Conference: (2005), pp.1–8.
[WCH90]
J. Weng, P. Cohen, and M. Herniou, Calibration of stereo cameras
using a non-linear distortion model, 1990, pp. I: 246–253.
[Wik09]
Wikipedia, http://www.de.wikipedia.org, 2009.
[YCJ04]
Wompil Yu, Y. Chung, and J.Soh, Vignetting distortion correction
method for quality digital imaging, Proceedings of the 17th International Conference on Pattern Recognition(ICPR’04) IEEE (2004),
pp.666–669.
[Yu04]
Wompil Yu, Pratical anti-vignetting methods for digital cameras,
Proceedings of the 17th International Conference on Pattern Recognition(ICPR04) IEEE (2004), pp.305–350.
[Zha00]
Z. Zhang, A flexible new technique for camera calibration, Pattern
Analysis and Machine Intelligence, IEEE Transactions Vol.22 (Nov
2000), no. 11, pp.1330– 1334.
[ZLK06]
Y. Zheng, S. Lin, and Sing Bing Kang, Single-image vignetting correction, Computer Vision and Pattern Recognition, 2006. CVPR
2006. IEEE Conference: (2006).
LITERATURVERZEICHNIS
74
[ZYK+ 08] Y. Zheng, J. Yu, Sing Bing Kang, Stephen Liu, and C. Kambhamettu, Single-image vignetting correction using radial gradient symmetry, Computer Vision and Pattern Recognition, 2008. CVPR 2008.
IEEE Conference: (2008), 1–8.

Documentos relacionados