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.