3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist...

103
Goethe Universität Frankfurt Diplomarbeit 3D-unterstützte Bildmanipulation eingereicht bei Prof. Dr.-Ing. Detlef Krömker, Professur für Graphische Datenverarbeitung von Patrick Guttner Eingereicht am 27. Juli 2009

Transcript of 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist...

Page 1: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

Goethe Universität Frankfurt

Diplomarbeit

3D-unterstützte Bildmanipulation

eingereicht bei

Prof. Dr.-Ing. Detlef Krömker,

Professur für Graphische Datenverarbeitung

von

Patrick Guttner

Eingereicht am

27. Juli 2009

Page 2: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

Eidesstattliche Erklärung

Ich erkläre hiermit an Eides Statt, dass ich die vorliegende Arbeit sebstständig und ohne Be-

nutzung anderer als der angegebenen Hilfsmittel angefertigt habe; die aus fremden Quellen di-

rekt oder indirekt übernimmenen Gedanken sind als solche kenntlich gemacht.

Die Arbeit wurde bisher in gleicher oder ähnlicher Form keiner anderen Prüfungskommission

vorgelegt und auch nicht veröffentlicht.

Frankfurt am Main, den 27. Juli 2009

_____________________________ Patrick Guttner

Page 3: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

Zusammenfassung

Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise Objekte aus Fotos entfernt, indem die dahinterliegende Struktur nachgezeichnet wird, oder es werden mehrere Teilbilder zu einem neuen, verfälschten Motiv zusammengesetzt. Bei der sogenannten Bildretuschierung werden unschöne Bereiche übermalt, um einen besseren Gesamteindruck zu erreichen. All diese Manipulationen haben im Grunde das gleiche Ziel: Das Erstellen einer möglichst realistischen Verfälschung der darge-stellten Szene indem die eigentlich dreidimensionalen Elemente in 2D imitiert werden.

Ziel dieser Arbeit ist es, von der reinen Zweidimensionalität eines Bildes Abstand zu nehmen und ein neues Verfahren zu entwickeln, Manipulationen im wirklichen 3D-Inhalt des Fotogra-fierten vorzunehmen. Dazu wird die klassische Bildmanipulation mit aktuellen Verfahren aus dem Bereich Multi View Stereo verknüpft. In einem ersten Schritt wird aus einer Fotoserie ein 3D-Modell mit passenden Texturen erstellt, welches anschließend nach Belieben manipuliert werden kann. Diese Veränderungen werden schließlich wieder in die Originalbilder übertragen, wodurch eine 3D-unterstützte Bildmanipulation realisiert wird.

Die praktische Umsetzung des vorgestellten Verfahrens basiert teilweise auf bereits vorhan-dener Software, die mit dem Ziel der Bildmanipulation neu kombiniert und durch eigene Um-setzungen ergänzt wird. So entsteht eine funktionierende Implementierung, die den kompletten Weg vom Original bis hin zum manipulierten Bild abdeckt.

Page 4: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

Abstract

Traditional image editing usually focuses on the two-dimensionality, thus on the pure image plane of a photo. For example, objects are removed from a picture by repainting the structure that is supposed to be laying behind, or multiple images are joined together to form a forged photo. The so called photo retouching digitally repaints the poor image regions to achieve a better overall impression of the picture. Basically all these kinds of manipulation have the same goal: To fabricate a forged scene that is as realistic as possible by imitating the three-dimensional elements in 2D.

This works intention is to step back from the pure two-dimensionality of a photo and to de-velop a novel approach to manipulate the actual three-dimensional content of the image. For this purpose, traditional image editing is merged with state of the art multi-view stereo algorithms. In a first step, a collection of photos from the same scene is reconstructed as a 3D-model with fitting textures which can be manipulated at ones discretion afterwards. Those changes are then to be transferred into the original pictures to achieve 3D-assisted image editing.

The actual implementation of the proposed approach is partly based on available software which is combined in a novel fashion and further supplemented with own implementations. That way, a working software is developed which covers all the necessary steps, starting with the original picture all the way to the manipulated image.

Page 5: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

Danksagung

Mein Dank geht an alle, die mich während meines Studiums unterstützt und gefördert haben. Vor allem an meine Eltern, meine Tante, meinen Onkel und meine Oma, die mir dadurch das Studium erst ermöglicht haben.

Auch bedanke ich mich bei allen Korrekturlesern, die mir in mühevoller Kleinarbeit geholfen haben, diese Arbeit zu dem zu machen, was sie jetzt ist. Danke Natalie, Michael, Franz und Bob.

Ein großer Dank gilt Sebastian Schäfer für seine Betreuung und für theoretische, sowie prak-tische Ratschläge während dieser Arbeit. Danke auch an Prof. Dr.-Ing. Detlef Krömker für das Ermöglichen dieser Arbeit.

Außerdem danke ich Prof. Dr. Paul Grimm, Bastian Birnbach, Konrad Kölzer und Frank Nagl von der FH Erfurt dafür, dass ich Teil ihres Projektes PoP-EYE sein durfte.

Zu guter Letzt danke ich allen Autoren der zitierten Papers für ihre Forschungsarbeit, die der Grundstein für diese Arbeit ist. Speziell bedanke ich mich bei all denjenigen Autoren, die ihre Implementierungen frei verfügbar gemacht und somit diese Arbeit bereichert haben: Yasutaka Furukawa, Noah Snavely, Michael Kazhdan und Tommer Leyvand.

Page 6: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

Inhaltsverzeichnis

ABBILDUNGSVERZEICHNIS IX

CODEVERZEICHNIS XI

ABKÜRZUNGSVERZEICHNIS XII

1 EINLEITUNG 1

2 GRUNDLAGEN 3

2.1 Bildmanipulation 3

2.2 Repräsentation von 3D-Daten in der Computergrafik 9

2.3 3D-Modellierung 10

2.3.1 Polygonale Modellierung 10

2.3.2 Laserscanning 11

2.3.3 Multi View Stereo 13

3 STATE OF THE ART 14

3.1 Aktuelle Verfahren zur Bildmanipulation 14

3.1.1 Füllen von Löchern 14

3.1.2 Organisation von Bildern 19

3.2 Multi View Stereo 23

3.2.1 Michael Goesele 25

Page 7: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

Inhaltsverzeichnis – Seite VII

3.2.2 Yasutaka Furukawa 26

3.2.3 Carlos Hernández Esteban 29

3.3 Texturen und weiterführende 3D-Verarbeitung 32

3.3.1 Generieren von Texturen 32

3.3.2 Weiterverarbeitung des 3D-Modells 37

4 KONZEPT 41

4.1 Ziel 41

4.2 Voraussetzungen 43

4.3 Kalibrierung 43

4.4 3D-Rekonstruktion 44

4.5 Manipulation in 3D 45

4.6 Manipulation der Fotos 46

5 UMSETZUNG 47

5.1 PoP-EYE 47

5.2 ThreeDUB 50

5.3 Erstellen von Masken 52

5.3.1 Dateiformat 53

5.3.2 Erstellen der Masken 55

5.3.3 Berechnen und Speichern der Masken 59

5.4 Multi View Stereo 62

5.4.1 PMVS 62

5.4.2 Poisson Surface Reconstruction 65

Page 8: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

Inhaltsverzeichnis – Seite VIII

5.4.3 Erstellen der Texturen 65

5.5 Visualisierung der Komponenten 70

5.5.1 Thumbnails 70

5.5.2 „Fake Texturen“ 72

5.5.3 Darstellung der Modelle 73

5.6 Manipulation von Modell und Bildern 78

5.6.1 A Priori durch Maskierung 78

5.6.2 Exportieren des 3D-Modells 78

5.6.3 Editieren der Modelle 80

5.6.4 Übertragen der Änderungen in die Bilder 82

6 AUSBLICK UND DISKUSSION 85

6.1 Aktuelle Grenzen 85

6.2 Möglichkeiten zur Optimierung der Ergebnisse 86

6.3 Erweiterungsmöglichkeiten in PoP-EYE 87

7 LITERATUR- UND QUELLENVERZEICHNIS 88

Page 9: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

Abbildungsverzeichnis

Abbildung 1: Hippolyte Bayard, Selbstporträt als Ertrunkener, 1840 [bay]. 3 Abbildung 2: Lenin, Kamenew und Trotzki, 1920 [ESPI]. Oben: Original. Unten: Fälschung. 4 Abbildung 3: Fonda Speaks to Vietnam Veterans, 2004 [RhBi]. Oben: Originalbilder. Unten: Manipulation. 5 Abbildung 4: Irakischer Soldat, 2003 [ESPI], Mitte: Originalbild. 6 Abbildung 5: Klavs Bo Christensen, Haiti, 2009 [10wor]. Oben: Original. Unten: Manipulation. 7 Abbildung 6: Girlpower, Ministry of Health and Social Affairs, Sweden [MHSA]. Links: Original. Rechts:

Retuschiertes Foto. 8 Abbildung 7: Erik Johansson: „Go your own road“, 2008 [Joh09]. 9 Abbildung 8: Prinzip des Laserscanning [DMiP]. 11 Abbildung 9: „Digital Michelangelo Project“ [DMiP]. Links: Original. Rechts: 3D-Modell (Laserscan). 12 Abbildung 10: Prinzip von MVS [HerRe]. Links: Inputbilder. Mitte: Kalibrierung. Rechts: Rekonstruktion. 13 Abbildung 11: „Hole Filling Through Photomontage” [WBTC05]. Links: Inputbild. Rechts: Manipulation. 15 Abbildung 12: „Scene Completion using Millions of Photographs“ [HE07]. Oben: Original- und Inputbild.

Unten: Drei Vorschläge des Algorithmus. 16 Abbildung 13: „Image Inpainting“ [BSCB00]. Links: Originalbild. Rechts: Manipulation. 16 Abbildung 14: „Region Filling and Object Removal by Exemplar-based Image Inpainting“ [CPT04]. Oben:

Originalbild und Inputbild. Unten: Iterative Schritte zur fertigen Manipulation. 17 Abbildung 15: „Seamcarving“ [AS07]. Oben: Originalbild und markiertes Objekt mit Seams. Unten:

Verkleinertes Bild und fertige Manipulation. 18 Abbildung 16: Google Bildsuche nach „Trevi Fountain“ in Cooliris [Coir]. 20 Abbildung 17: „Notre Dame“, dargestellt in „Photo Tourism“ [SSS06]. 21 Abbildung 18: „Photo Tourism“ - „Notre Dame“, dargestellt im „Photo Explorer“ [SSS06]. 22 Abbildung 19: Microsoft Photosynth - „Trevi Fountain“ [MPho]. 23 Abbildung 20: „Multi-View Stereo for Community Photo Collection“ [GSC+07]. „Pisa Duomo“ Szene. Oben:

Inputbild, Depthmap und 3D-Modell der Depthmap. Unten: Fertiges 3D-Modell. 26 Abbildung 21: „High-Fidelity Image-Based Modeling“ [FP06]. „Twins“ Objekt. Von inks nach rechts: Visuelle

Hülle, Patches, Deformation, Verfeinerung und texturiertes Modell. 27 Abbildung 22: „Accurate, Dense, and Robust Multi-View Stereopsis“ [FP07]. „Roman“ Objekt. Oben: Inputbild

und Features. Unten: Initiale Patches, Patch-Modell und fertiges 3D-Modell. 28 Abbildung 23: „Manhattan-World Stereo“ [FCSS09]. „Kitchen“ Szene. Oben: Inputbild, Depthmap und Depth-

normal-map. Unten: 3D-Modell und texturiertes Modell. 29 Abbildung 24: „Silhouette and Stereo Fusion for 3D Object Modeling“ [HEF04]. „Twins“ Objekt. Oben:

Inputbilder. Unten: Visuelle Hülle, 3D-Modell und texturiertes 3D-Modell. 30 Abbildung 25: „Using Multiple Hypotheses to Improve Depth-Maps for Multi-View Stereo“ [CVHC08].

„Model House“ Objekt. Oben: Inputbilder. Unten: Depthmap und 3D-Modell. 31 Abbildung 26: „Silhouette and Stereo Fusion for 3D Object Modeling“ [HEF04]. „Vase 1299“ Objekt. Links:

3D-Modell. Rechts: Textur. 33 Abbildung 27: „Acquiring, Stitching and Blending Diffuse Appearance Attributes on 3D Models“ [RCMS02].

„Vase“ Objekt. Oben: 3D-Modell, Foto mit Mappingpatch und texturiertes Modell. Unten: Textur. 34

Page 10: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

Abbildungsverzeichnis – Seite X

Abbildung 28: „Reconstructing Textured Meshes from Multiple Range+RGB Maps“ [CCS02]. „Bird“ Objekt. Links: Texturiertes Modell. Rechts: Inputbilder und fertige Textur. 36

Abbildung 29: „Texturemontage: Seamless Texturing of Arbitrary Surfaces From Multiple Images“ [ZWT+05]. „Feline” Objekt. Oben: 3D-Modell und texturiertes Modell. Unten: Inputbilder und Textur. 37

Abbildung 30: „Reconstruction of Solid Models from Oriented Point Sets“ [Kaz05] „Dino” Objekt. Von links nach rechts: Unvollständiges Modell, Punktwolke und rekonstruiertes Modell. 38

Abbildung 31: „David“ Links: Rekonstruiert mit [KBH06]. Rechts: Rekonstruiert mit [BKBH07]. 39 Abbildung 32: „Unconstrained Isosurface Extraction on Arbitrary Octrees“ [KKDH07]. „Dragon“ Objekt. Oben:

Inputmodell. Unten: Isosurface und Triangulierung des vereinfachten Modells. 40 Abbildung 33: Konzept der Pipeline für 3D-unterstützte Bildmanipulation. 42 Abbildung 34: PoP-EYE: 3D-Szene, 3D-Szene mit 3D-Modell und 3D-Szene mit Kameras und Keypoints. 49 Abbildung 35: ThreeDUB integriert in PoP-EYE. 50 Abbildung 36: Detaillierter Programmablauf von ThreeDUB. 51 Abbildung 37: Karteikartensystem (Tabs) von ThreeDUB. 52 Abbildung 38: „Edit Masks for PMVS“-Tab: Darstellungsoptionen der Masken. 55 Abbildung 39: „Edit Masks for PMVS“-Tab: Manuelle Markierung ohne Keypoints, Vorschlag einer

Markierung und editierter Vorschlag mit Keypoints. 59 Abbildung 40: „Edit Masks for PMVS“-Tab: Speichern einer Maske und Vorschaufunktion. 61 Abbildung 41: „PMVS“-Tab. 64 Abbildung 42: „General“-Tab: Thumbnailbar. 71 Abbildung 43: „General“-Tab: „Fake Texturen“. 73 Abbildung 44: „General“-Tab: 3D-Modell. 75 Abbildung 45: „General“-Tab: Patch-Model. 77 Abbildung 46: „Edit Patch-Model / 3D-Model“-Tab: Oben: Original und beschnittenes Patch-Modell. Unten:

Original und beschnittenes 3D-Modell mit Markierungslinie. 81 Abbildung 47: „Modify Images“-Tab. 83 Abbildung 48: Originalbild, Masken und manipulierte Bilder. Links: Verlauf. Rechts: „Poisson Cloning“. 84

Page 11: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

Codeverzeichnis

Pseudocode 1: Einlesen einer PGM Bilddatei............................................................................................................. 54 Pseudocode 2: Berechnung der 3D-Position eines Mausklicks................................................................................... 56 Pseudocode 3: Berechnung einer vorgeschlagenen Markierung. ................................................................................ 57 Pseudocode 4: Berechnung einer Maskentextur aus einer Markierung....................................................................... 60 Pseudocode 5: Berechnung der Normalen eines 3D-Modells. .................................................................................... 67 Pseudocode 6: Berechnung der „Viewlists“ und besten Kamera für jedes Polygon eines 3D-Modells ...................... 68 Pseudocode 7: Minimierung der Anzahl der Grenzpolygone eines 3D-Modells. ....................................................... 69 Pseudocode 8: Berechnung der Positionen und Texturierung der Patches eines Patch-Modells................................. 76 Pseudocode 9: Beschneiden eines Modells mit einer Maske. ..................................................................................... 80

Page 12: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

Abkürzungsverzeichnis

2D zweidimensional

3D dreidimensional

ASCII American Standard Code for Information Interchange

bzgl. bezüglich

bzw. beziehungsweise

ca. circa

CG Computergrafik

CPC Community Photo Collection

Dr. Doktor

et al. und Andere

etc. et cetera

evtl. eventuell

FFT Fast Fourier Transform

FH Fachhochschule

EXIF Exchangable Image File Format

ggf. gegebenenfalls

GPS Global Positioning System

IBL Image Based Lighting

MB Megabyte

MSE Maximally Stable Extremals

MVS Multi View Stereo

NCC Normalized Cross Correlation

PGM Portable Gray Map

PMVS Patch Based Multi View Stereo

Prof. Professor

PSR Poisson Surface Reconstruction

RANSAC Random Sample Consensus

SfM Structure from Motion

SIFT Scale Invariant Feature Transform

sota State of the Art

z.B. zum Beispiel

Page 13: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

1 Einleitung

Seit es im 19. Jahrhundert möglich wurde, Bilder chemisch zu fixieren, spielten Fotografen mit den Möglichkeiten, Bilder zu verfälschen. Was zu den Frühzeiten der Fotografie noch eine Menge handwerkliches Geschick erforderte, lässt sich heutzutage mit relativ einfachen Mitteln am Computer bewerkstelligen.

In den 80er Jahren wurde es möglich, Bilder in digitaler Form auf einem Computer zu spei-chern und dazustellen. Damit wuchsen, vor allem mit der Entwicklung digitaler Bildverarbei-tung und der Verfügbarkeit von Bildbearbeitungssoftware auch die Möglichkeiten die digitalen Repräsentationen der Bilder zu manipulieren.

Seit dieser Zeit beschäftigt sich ein immer größer werdendes Forschungsgebiet der Informa-tik damit, Algorithmen zur automatischen Bildmanipulation zu entwickeln. Waren diese Verfah-ren Anfangs noch eher Methoden zur automatischen Bildverbesserung, wie z.B. Helligkeits-, Kontrast- und Schärfeänderung der Bilder, so entwickelten sie sich schnell zu wesentlich kom-plexeren Manipulationsmethoden.

Aktuelle Methoden führen weit über das hinaus, was früher mit der „analogen“ Fotomanipu-lation als möglich und machbar erschien. Mit Algorithmen wie z.B. „Seamcarving“ [AS07] können auf einfachste Weise ganze Bildpartien entfernt und sogar Berge versetzt werden. Auch ist ein digitaler Fotomanipulator nicht mehr darauf angewiesen, dass er mehrere (Teil-)Bilder selbst geschossen hat. Das Internet bietet durch Plattformen wie die Google Bildersuche1 und Flickr2 Millionen von Fotos an, die mehr oder weniger legal benutzt werden können. Der An-satz, „Scene Completion Using Millions of Photographs“ [HE07] automatisiert dies sogar, in-dem algorithmisch eine große Anzahl dieser „Community Photos“ dahingehend ausgewertet werden, ob sie in die zu manipulierende Szene passen. Abschließend präsentiert der Algorith-mus dem Benutzer eine Auswahl veränderter Szenen.

Ein sehr aktuelles Forschungsthema in dem Bereich der Bildmanipulation ist, aus einer Sammlung von Bildern eine dreidimensionale Repräsentation des fotografierten Objekts oder der Szene zu erstellen. Diese Verfahren werden „Multi View Stereo“ (MVS) genannt. Sie basie-ren auf einer exakten Kalibrierung der Bilder, was bedeutet, dass die genauen Standorte und Blickrichtungen, sowie interne Parameter der Kameras bekannt oder berechenbar sind. Mit die-sem Wissen können spezielle Bildfeatures räumlich zusammengeführt werden, die dann alle zusammen eine 3D-Repräsentation des Fotografierten ergeben.

1 http://images.google.de2 http://www.flickr.com

Page 14: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

1 Einleitung – Seite 2

Der Schwerpunkt dieser Arbeit ist es, eine Verbindung zwischen klassischer Bildmanipulati-on, die sich fast ausschließlich in 2D abspielt, und der aktuellen Forschung von MVS herzustel-len. Es werden Methoden dargestellt, die aus einer Bilderserie die nötigen Kamerakalibrierun-gen errechnen und aus der fotografierte Szene ein 3D-Modell erstellen. Das Modell kann an-schließend beliebig manipuliert und die Veränderungen wiederum in die Originalbilder übertra-gen werden.

Mit diesem Ansatz ist es zum Einen möglich, nicht nur ein einzelnes Bild einer Bilderserie zu manipulieren, sondern alle Bilder gleichzeitig auf die gleiche Weise zu ändern. Ferner ist dieser Ansatz ein Schritt weg von der reinen Zweidimensionalität des Bildes. Man beschäftigt sich mit dem wirklichen 3D-Inhalt einer fotografierten Szene und kann somit besser und tiefer in den tatsächlichen Inhalt des Fotos einsteigen. Dies führt zu einem sehr viel genaueren Verständnis des Fotografierten und lässt detailliertere Manipulationsmöglichkeiten zu. Beleuchtung und räumlicher Zusammenhang von Objekten in der Szene sind klarer und somit leichter nachzu-bauen bzw. zu verändern.

Im folgenden Kapitel 2 werden dafür die Grundlagen genauer erläutert, um einen allgemeinen Einstieg in das Thema der Bildmanipulation und in den Bereich der 3D-Repräsentation am Computer zu erhalten. Im Kapitel 3 wird eine Übersicht über aktuelle Themen in den beiden genannten Bereichen gegeben. Das Konzept und die Umsetzung des Ansatzes der 3D-unterstützten Bildmanipulation werden in Kapitel 4 und 5 detailliert vorgestellt. Zum Abschluss werden im Kapitel 6 aktuelle Grenzen aufgezeigt und ein kurzer Ausblick auf Möglichkeiten zur Optimierung und Erweiterung des Ansatzes gegeben.

Page 15: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

2 Grundlagen

Als Einstieg in das Thema werden zunächst einige Grundlagen über Geschichte und Anwen-dung der Bildmanipulation gegeben. Ergänzend dazu wird ein Überblick über das Konzept der Repräsentation von 3D-Daten am Computer dargestellt und Verfahren zur Akquirierung von 3D-Modellen aufgezeigt.

2.1 Bildmanipulation

Die Geschichte der Bildmanipulation reicht mittlerweile über 150 Jahre zurück, also bis in die Anfänge der Fotografie überhaupt. Das erste gefälschte Foto datiert zurück in das Jahr 1840, auf dem sich Hippolyte Bayard, ein Miterfinder der Fotografie, selbst als Ertrunkener porträtiert [Jam80]:

Abbildung 1: Hippolyte Bayard, Selbstporträt als Ertrunkener, 1840 [bay].

Page 16: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

2 Grundlagen – Seite 4

Anfang des 20. Jahrhunderts entdeckte zunehmend die Politik das Medium der Foto-manipulation für sich. Bei diesem Foto vom 5. Mai 1920 von Lenin, Kamenew und Trotzki auf dem Swerdlow-Platz in Moskau, verschwanden wenig später die, in Ungnade gefallenen Mit-streiter Kamenew und Trotzki aus dem Bild und wurden durch fünf Holzstufen ersetzt [ESPI]:

Abbildung 2: Lenin, Kamenew und Trotzki, 1920 [ESPI]. Oben: Original. Unten: Fälschung.

Page 17: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

2 Grundlagen – Seite 5

Auch aktuell werden in Politik und vor allem in der Berichterstattung der Medien sehr häufig manipulierte Bilder verwendet. Im Zeitalter von Photoshop und digitalen Bildern geschieht dies immer häufiger, denn die Grenze zwischen dem einfachen visuellen Aufarbeiten eines Fotos und der Manipulation des Inhaltes ist fließend, wenn das Bildbearbeitungstool erst einmal ge-öffnet ist.

Das folgende Bild ist ein Beispiel für den Versuch einer bewussten Manipulation der Mei-nung des Bildbetrachters. Es wurde 2004 verwendet, als Senator John Kerry zu den Vorwahlen zur amerikanischen Präsidentschaft kandidierte. Das Bild von Kerry wurde 1971 aufgenommen, das Bild von Fonda dagegen erst ein Jahr später [RhBi]:

Abbildung 3: Fonda Speaks to Vietnam Veterans, 2004 [RhBi]. Oben: Originalbilder. Unten: Manipulation.

Page 18: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

2 Grundlagen – Seite 6

Eine etwas andere Art der Bildmanipulation wurde in dem nächsten Beispiel bei der Bericht-erstattung über den Irak-Krieg 2003 verwendet. Hier wurde nicht direkt der Inhalt des Bildes manipuliert, sondern durch geschicktes Beschneiden eine bestimmte Wirkung des Bildes erzielt. Sowohl der linke als auch der rechte Bildausschnitt wurde von der Presse veröffentlicht [ESPI]:

Abbildung 4: Irakischer Soldat, 2003 [ESPI], Mitte: Originalbild.

Wenn von Bildmanipulation die Rede ist, so wird wohl primär an Bilder gedacht, in denen Teile entfernt, zusätzlich eingefügt oder Bildbereiche retuschiert wurden. Zur Bildmanipulation gehört aber auch das, mittlerweile ganz alltäglich gewordene „Verbessern“ eines Bildes, wenn z.B. ein unterbelichtetes Bild aufgehellt wird, oder der Kontrast erhöht wird, um eine bessere Farbtiefe zu erhalten.

Dass dies zuweilen auch zu einer komplett entfremdeten Aussage eines Bildes führen kann, zeigt folgendes Beispiel von Klavs Bo Christensen vom April 2009. Der Fotograf hat Fotos von Haiti derart stark bearbeitet, dass ein wesentlich schmutzigerer Eindruck der Umgebung ent-steht, als dies in Wirklichkeit ist. Er nahm mit den Bildern an einem dänischen Fotowettbewerb teil, markierte diese aber nicht als manipuliert, da die Eingriffe seiner Auffassung nach noch im Rahmen der „Verbesserung“ lagen [10wor].

Page 19: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

2 Grundlagen – Seite 7

Abbildung 5: Klavs Bo Christensen, Haiti, 2009 [10wor]. Oben: Original. Unten: Manipulation.

Wird die Bildmanipulation, wie in den bisher aufgezeigten Beispielen dazu benutzt, die Aus-sage des Bildes und vor allem auch die Meinungsbildung des Betrachters über bestimmte Ereig-nisse zu beeinflussen, so führt dies meist zu strengen Konsequenzen, sofern die Manipulation entdeckt wird. Das allgemeine Verständnis und die Akzeptanz für derartige Manipulationen ist sehr gering. So führt häufig das Aufdecken eines manipulierten Bildes in den Medien zu einer Grundsatzdiskussion darüber, was legitim ist und was nicht. Die Meinungen darüber gehen meist von „(...) Wenn ein Foto mit einem unwesentlichen aber in der Sache wahrscheinlichen Detail aufgehübscht oder ergänzt wird, ohne die Bildaussage grundsätzlich zu verändern, sehe ich da keine Probleme. (...)“ („Cornelius“, Kommentar 43 in [Nig08]) bis hin zu „Es gibt hier nichts zu deuteln: Ein Foto darf nicht manipuliert werden, (...)“ („Anreger“, Kommentar 69 in [Nig08]).

Page 20: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

2 Grundlagen – Seite 8

Im Gegensatz dazu wird in vielen anderen medialen Darstellungen eine Bildmanipulation nicht nur akzeptiert, sondern sogar vom Betrachter erwartet. Kein Mensch will beispielsweise in einem Hochglanzmagazin ein Model mit Falten, Augenringen oder gar Speckröllchen sehen. Hier ist der Einsatz von Retuschierungswerkzeugen alltäglich. Das Projekt „Girlpower“ vom schwedischen „Ministry of Health and Social Affairs“ bietet hierzu ein schönes Beispiel. Es soll als Aufklärung darüber dienen, dass Titelbilder von Models meistens nicht der Realität entspre-chen [MHSA]:

Abbildung 6: Girlpower, Ministry of Health and Social Affairs, Sweden [MHSA].

Links: Original. Rechts: Retuschiertes Foto.

Ein ganz anderer Bereich, in dem Fotomanipulation akzeptiert und erwartet wird, ist die Kunst. Die meisten Fotokünstler erheben keine Anspruch auf Authentizität ihrer Bilder, viele benutzen die Bilder nur als Grundlage für den Ausdruck ihrer künstlerischen Intention. Daher setzt auch keiner voraus, dass die Bilder eine Realität wiederspiegeln. Trotzdem handelt es sich um Bildmanipulation, in dem Fall wohl um die am freiesten praktizierte, da keinerlei politische oder moralische Restriktionen herrschen und der künstlerischen Freiheit freien Lauf gelassen werden kann. Der schwedische Künstler Erik Johansson baut seine Werke beispielsweise vor-rangig auf Bildmanipulation auf.

Page 21: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

2 Grundlagen – Seite 9

Abbildung 7: Erik Johansson: „Go your own road“, 2008 [Joh09].

Die Bild- bzw. Fotomanipulation ist ein sehr weitreichendes Gebiet mit sehr vielen Techni-ken und Möglichkeiten. Durch moderne Werkzeuge wie Computer und Photoshop sind die Ma-nipulationsmöglichkeiten enorm gewachsen und auch eher unerfahrene Benutzer können prob-lemlos Fotos ändern. Die politischen oder moralischen Implikationen einer Manipulation sollen an dieser Stelle nicht weiter diskutiert werden, da sie nicht Gegenstand dieser Arbeit sind.

2.2 Repräsentation von 3D-Daten in der Computergrafik

Der 3D-Darstellung von Geometrie am Computer liegt ein recht einfaches Konzept zugrunde. Die Geometrie befindet sich im Raum, dem ein dreidimensionales Koordinatensystem mit X-, Y- und Z-Achse zugrunde liegt. Jeder Eckpunkt (Vertex) der Geometrie ist eindeutig durch seine Raumkoordinaten (X, Y, Z) definiert und die Gesamtheit der Punkte, verbunden durch Linien (Line) und Flächen (Polygon) ergeben eine dreidimensionale Repräsentation der Geo-metrie. Dies kann am Computer sowohl dargestellt, als auch gespeichert werden. Etabliert in der Computergrafik (CG) ist die Darstellung eines Objektes durch Vertices und Polygone, wobei mit einem Polygon meist ein Dreieck gemeint ist. Viele Anwendungen lassen auch Quads, also Vierecke zu, die aber intern meist jeweils in zwei Dreiecke zerlegt werden.

Die einfache Positionierung eines Punktes im Raum wird oft durch zusätzliche Informationen über den Punkt ergänzt. Die Orientierung im Raum wird durch eine Normale gespeichert, wel-che im Idealfall senkrecht zur Außenfläche des Objektes steht. Die Farbe eines Punktes kann mit einem Farbwert (RGB) beschrieben werden und weitergehend kann eine zusätzliche Tex-turkoordinate (UV) mit angegeben werden, die aussagt wo sich der Punkt, projiziert auf eine zweidimensionalen Textur befindet. Auf diese Weise kann eine Oberflächenstruktur mit Hilfe eines Bildes erstellt werden.

Page 22: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

2 Grundlagen – Seite 10

Wichtig für die Modellierung einer Szene aus mehreren Objekten ist auch die Definition ver-schiedener Koordinatensysteme. Das erste ist der Modellraum (Object-Space), der eine grundle-gende Orientierung eines 3D-Objektes angibt. Eine Geometrie wird üblicherweise um den Ur-sprung des Modellraums gebaut. Um ein oder mehrere Modelle im Raum zu platzieren, wird ein World-Space definiert. Jedes platzierte Modell besitzt eine World-Matrix, die eine Verschie-bung (Translation) und Drehung (Rotation) bzgl. des World-Space definiert. Somit ist die Plat-zierung und Orientierung des Modells in der 3D-Welt eindeutig definiert. Ein drittes Koordina-tensystem ist der Kameraraum (Camera-Space), der die Position und Blickrichtung des Betrach-ters definiert. Jedes dieser Koordinatensysteme ist mit Hilfe der linearen Algebra eindeutig in-einander überführbar. Für die Ausgabe der 3D-Szene am Monitor (rendern) wird die komplette Szene in den Kameraraum umgerechnet, damit der Betrachter den Eindruck hat, in die Szene hinein zu schauen.

In modernen Grafiksystemen wird das Überführen von einer 3D-Szene in ein, am Monitor ausgegebenes 2D-Bild in einer Renderpipeline ausgeführt. Vereinfacht führt diese zunächst die Transformation von Object- über World- zum Camera-Space aus und entfernt die Bereiche der Szene, die weg von der Kamera zeigen (Culling). Anschließend erfolgt eine Projektion der Sze-ne auf die Ausgabegröße des Monitors. Diese Projektion kann parallel (orthogonal) oder per-spektivisch sein, wobei nicht sichtbare Teile der Szene entfernt werden (Clipping), damit sie in der anschließenden Weiterverarbeitung nicht mehr mit berechnet werden müssen. Zum Schluss wird eine Rasterisierung durchgeführt, welche der eigentliche Schritt von 3D auf 2D ist. Ab diesem Zeitpunkt wird nur noch mit Pixel gearbeitet. Bei der Rasterisierung werden diverse Szeneneigenschaften mit berücksichtigt, wie z.B. Überdeckungsrechnung, Farbe, Textur sowie Licht- und Schatteneffekte. Eine detaillierte Beschreibung der Renderpipeline kann z.B. in [Kro08] gefunden werden.

2.3 3D-Modellierung

Ein wichtiges Gebiet in der CG ist die Akquirierung von 3D-Modellen. Bevor eine 3D-Szene erstellt werden kann, werden Modelle der einzelnen Objekte, die in der Szene platziert sind, benötigt. Das heißt, auf irgendeine Art und Weise muss ein, meist real existierendes Objekt in 3D-Computerdaten umgewandelt werden. Dazu gibt es verschiedene Techniken, die im Folgen-den genauer erläutert werden.

2.3.1 Polygonale Modellierung

Polygonale Modellierung ist im Allgemeinen reine Handarbeit. Das heißt, ein 3D-Artist baut mit Hilfe einer 3D-Software das Objekt am Computer nach. Dies ist ein relativ langwieriger Prozess und erinnert in der Vorgehensweise oft an Bildhauerei, LEGO oder Tonmodellierung.

Der naivste Ansatz ist, Punkt für Punkt und Fläche für Fläche, das Objekt möglichst genau nachzuempfinden. Fortgeschrittenere Software bietet hier eine Vielzahl an effektiveren Tools, so kann z.B. ein Modell aus vorgefertigten Primitiven zusammengesetzt oder aus einem weniger detaillierten, aber der Grundform des zu modellierenden Objektes entsprechenden Volumens die Details herausgearbeitet werden. Ein anderer weit verbreiteter Ansatz ist das Benutzen von

Page 23: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

2 Grundlagen – Seite 11

Splines, wobei hier die Grundformen des Objektes mit Hilfe von Kurven im Raum definiert werden und die eigentliche Geometrie dann erst zum Schluss aus diesen Kurven heraus gene-riert wird.

Aktuelle 3D-Programme bieten eine Vielzahl von Modellierungstools, die eine durchaus effi-ziente Arbeitsweise beim Modellieren ermöglichen. In vielen Fällen ist eine polygonale Modellierung von Objekten auch sinnvoll und nötig, beispielsweise wenn keine reale Vorlage für das gewünschte Modell existiert. Dies ist in sehr vielen Bereichen der Fall, wie etwa in der Entwicklung von Computerspielen wo oftmals Fantasieszenerien entworfen werden, aber auch in der industriellen Entwicklung, wo Produkte von vornherein am Computer entworfen werden.

2.3.2 Laserscanning

Das Verfahren des Laserscanning basiert auf einem Laserstrahl, der das komplette reale Objekt abtastet. Die Reflektion des Strahls wird mit einer Videokamera erfasst, wobei der Abstand zwischen Laser und Kamera bekannt sein muss. Wird ein Reflektionspunkt von der Kamera registriert, so wird per Triangulierung der Abstand zwischen dem Punkt und der Kamera be-rechnet. Punkt für Punkt entsteht so ein Tiefenbild (Depthmap) des abgetasteten Objektes, wel-ches nach Abschluss des Scans in eine Polygonoberfläche umgewandelt wird. Auf diese Weise entsteht jedoch nur ein Bruchstück des Objektes als 3D-Modell, da nur Teile der Scanlinie von der Kamera erfasst werden können und zudem die Rückseite des Objektes nicht abgetastet wird. Um ein komplettes Modell des Objektes zu erlangen, müssen mehrere Scans aus verschiedenen Blickwinkeln gemacht werden und abschließend die Modellteile zusammengesetzt werden. Eine detailliertere Beschreibung des Verfahrens ist auf der Homepage des „Digital Michelangelo Projects“ [DMiP] zu finden.

Abbildung 8: Prinzip des Laserscanning [DMiP].

Der Vorteil dieses Verfahrens liegt ganz klar in der Genauigkeit, da die Entfernungsmessung im Bereich von wenigen Millimetern bis Submillimeter liegt. Nachteilig ist, dass kaum Informa-tionen über die Oberflächenfärbung gescannt werden können. Das heißt, ein Lasermodel ist

Page 24: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

2 Grundlagen – Seite 12

grundsätzlich einmal farblos und ohne Textur. Diese müssen anschließend manuell aufgetragen werden. Neuere Verfahren benutzen eine integrierte Digitalkamera um zusätzlich zu den ges-canten 3D-Informationen auch Texturkoordinaten zu speichern. Anhand dieser zusätzlichen Informationen kann im Nachhinein eine Textur aufprojiziert werden.

Laserscanning hat verschiedene Einsatzgebiete, wie z.B. die Land- und Architekturvermes-sung, Denkmalschutz und -pflege, Unfallforschung etc. Relevant für diese Arbeit ist allerdings ausschließlich der Einsatz zur Umwandlung von real existierenden Gegenständen in 3D-Modelle. Das Scanning wird auch häufig genutzt, um den Prozess der polygonalen Modellie-rung zu beschleunigen. Oftmals wird in der Entwicklung von Produkten und beim Entwurf von Fantasiefiguren oder -Szenen, z.B. für Computerspiele, zunächst ein reales Modell aus Ton, Gips, Plastilin etc. angefertigt, welches dann per Laser abgetastet wird, um es später am Compu-ter weiterzubearbeiten oder zu animieren.

Abbildung 9: „Digital Michelangelo Project“ [DMiP]. Links: Original. Rechts: 3D-Modell (Laserscan).

Professionelle Laserscanning-Hardware ist im Allgemeinen sehr teuer und bewegt sich im Bereich mehrerer tausend Euro. Seit einiger Zeit gibt es jedoch ein Online Projekt namens „Da-vid Laserscanner“ welches ein Freeware-Programm inklusive Bauanleitung für „Low-cost 3D Laser Scanning“ [DaLa] zur Verfügung stellt. Die Ergebnisse sind zwar nicht so exakt und de-tailliert wie die professioneller Hardware, allerdings lässt sich damit auf einfache Weise für den privaten Gebrauch ein 3D-Laserscanner realisieren.

Page 25: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

2 Grundlagen – Seite 13

2.3.3 Multi View Stereo

Multi View Stereo (MVS) ist ein aktuell intensiv erforschtes Verfahren in der CG. Es basiert darauf, ausschließlich aus einer Sammlung von Bildern eines Objektes oder einer Szene, ein 3D-Modell zu generieren. Es existieren mittlerweile diverse Ansätze um das zu realisieren, al-lerdings sind die zugrundeliegenden Prinzipien sehr ähnlich. Grundvoraussetzungen für MVS sind eine Bilderserie, die das Objekt aus möglichst vielen verschiedenen Blickwinkeln und Per-spektiven zeigt und eine genaue Kamerakalibrierung. Für die Kalibrierung gibt es zwei grundle-gende Ansätze, zum Einen manuell mit Hilfe von Kalibrierungsboards und/oder -Punkten, zum Anderen automatisch, wobei anhand von intrinsischen und extrinsischen Kameraparametern und verschiedenen Bildfeatures die Kamerakalibrierung errechnet wird.

Sind diese Voraussetzungen erfüllt, so werden spezielle Features in den Bildern wie z.B. do-minante Punkte, Kanten, Formen, etc. räumlich zusammengeführt, was schließlich zu einer 3D-Repräsentation des fotografierten Objektes führt. Das tatsächliche Generieren eines 3D-Modells kann dabei auf verschiedene Arten geschehen. Einige Ansatze erzeugen zunächst eine Punkt-wolke orientierter Vertices, die dann in eine Oberfläche umgerechnet wird [FP07], andere Ver-fahren generieren Depthmaps für jedes Bild, die anschließend zu einem Modell zusammenge-führt werden [GCS06]. Wieder Andere generieren zunächst eine visuelle Hülle des Objektes, welche dann iterativ verbessert wird [HEF04]. Die Ergebnisse variieren in ihrer Qualität sehr, wobei es auch darauf ankommt, was rekonstruiert werden soll, ob es nun ein geschlossenes Ob-jekt ist, oder eine offene Szene aus vielen Objekten. Auch kommt es stark auf die Qualität und Anzahl der verwendeten Bilder an [SCD+06].

Abbildung 10: Prinzip von MVS [HerRe]. Links: Inputbilder. Mitte: Kalibrierung. Rechts: Rekonstruktion.

Da das Forschungsgebiet um MVS noch relativ jung ist, sind die Ergebnisse meist noch nicht vergleichbar mit professionellem Laserscanning, allerdings liegt der Vorteil ganz klar darin, dass außer einer Digitalkamera keinerlei kostspielige Hardware benötigt wird. Ein Ansatz ba-siert sogar darauf, dass Community Fotos aus dem Internet für den MVS Algorithmus benutzt werden [GCS06]. Das heißt, es ist hierbei noch nicht einmal nötig, die zu rekonstruierende Sze-ne selbst fotografiert zu haben.

Page 26: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art

Bislang existiert kein State of the Art (sota) Verfahren, welches MVS für die Bildmanipulation benutzt. Im Einzelnen sind die Gebiete jedoch schon sehr intensiv erforscht worden. Dies gilt vor allem für die Bildmanipulation, die mittlerweile in der CG eine lange Tradition hat. MVS zählt zwar im weitesten Sinne mit zu diesem Bereich, da Fotos die Grundlage bilden, jedoch werden sie nicht als klassische Verfahren der Bildmanipulation gesehen, da die Bilder nur ge-nutzt, aber nicht verändert werden.

Daher wird an dieser Stelle ein Überblick über sota Verfahren gegeben, welche die Basis für den, in dieser Arbeit beschriebenen Ansatz der 3D-unterstützten Bildmanipulation bilden.

3.1 Aktuelle Verfahren zur Bildmanipulation

Die eigentliche Bildmanipulation in dem vorgestellten Ansatz erfolgt durch das Einpassen neuer Bildbereiche in die Originalfotos. Die im 3D-Modell veränderten Bereiche werden aus den Ori-ginalbildern herausgelöscht, wodurch Löcher entstehen, die mit gerenderten 3D-Informationen gefüllt werden. Allgemein wird das Füllen von Löchern in Bildern unter dem Begriff „Image Completion“ bzw. „Image Inpainting“ zusammengefasst.

3.1.1 Füllen von Löchern

Das Füllen von Löchern kann verschiedene Motivationen haben. Zum Einen werden die Verfah-ren dazu benutzt, um altes Bildmaterial zu rekonstruieren, in dem durch Verfall einzelne Bildbe-reiche nicht mehr vorhanden sind. Dies kann von kleinen Kratzern und Verschmutzungen bis hin zu komplett fehlenden Bildteilen reichen. Eine anderes Einsatzgebiet ist das absichtliche Löschen unerwünschter Bildbereiche, beispielsweise wenn Objekte oder Personen entfernt wer-den sollen.

Grundlegende Problematik beim Füllen von Löchern ist, dass anhand eines einzelnen Bildes nicht wahrheitsgemäß bestimmt werden kann, mit welchem Inhalt die Lücke gefüllt werden soll. Einige Ansätze befassen sich damit, möglichst das zu rekonstruieren, was höchstwahrscheinlich an dieser Stelle in der Szene war. Andere orientieren sich stattdessen daran, was vermeintlich am Besten an die jeweilige Position passt.

Page 27: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 15

Soll das Loch möglichst wahrheitsgemäß gefüllt werden, so liegt es nahe, bestehende Bildtei-le für die Rekonstruktion herzunehmen, da anzunehmen ist, dass Strukturen und Texturen in dem zu rekonstruierenden Bildteil nicht allzu sehr von denen des restlichen Bildes abweichen. Die intuitive Vorgehensweise ist also, in der Größe variierende Bildausschnitte kontrolliert in die Lücke zu kopieren, um diese zu schließen.

Wilczkowiak et al. schlagen in [WBTC05] vor, einen möglichst großen Patch aus dem vor-handenen Restbild in das Loch einzupassen. Dazu wird mit Hilfe von „Graph Cuts“ [BVZ01] die am Besten passende Form, und mittels einer Fourier Transformation über die Farbwerte der Pixel eines möglichen Patches, das am Besten geeignete Füllstück aus dem Restbild ermittelt. Ist ein passender Patch gefunden, so wird er perspektivisch angepasst und in das Loch einko-piert. Per Benutzereingabe lassen sich bestimmte Regionen markieren, die nicht verändert wer-den sollen, bzw. Regionen, die vorzugsweise als Füllstück genutzt werden sollen. Das Einkopie-ren führt allerdings schnell zu Kloneffekten, die vom Betrachter teils mühelos erkannt werden können.

Abbildung 11: „Hole Filling Through Photomontage” [WBTC05]. Links: Inputbild. Rechts: Manipulation.

Hays und Efros [HE07] gehen diesbezüglich einen Schritt weiter und suchen nicht in dem Restbild nach einem passenden Füllstück, sondern durchsuchen eine große Sammlung von ca. zwei Millionen Community Fotos von Flickr nach passenden Patches. Dazu werden nacheinan-der ein „Semantic Scene Matching“, ein „Local Context Matching“ und ein „Textur Matching“ über die Bildsammlung ausgeführt. In jedem Schritt verringert sich die Anzahl der passenden Fotos immens, sodass schließlich ca. 20 passende Szenen übrig bleiben. Diese werden dann per „Graph Cuts“ [BVZ01] und einem Verfahren namens „Poisson Image Editing“ [PGB03] saum-los in das Originalbild eingepasst. Der User kann anschließend aus diesen manipulierten Bildern wählen, welche der Vorschläge am Besten passen und für seine Bedürfnisse geeignet sind.

Page 28: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 16

Abbildung 12: „Scene Completion using Millions of Photographs“ [HE07].

Oben: Original- und Inputbild. Unten: Drei Vorschläge des Algorithmus.

Viele Autoren haben sich damit beschäftigt, nicht große Patches in die Lücke einzupassen, sondern mit Hilfe kleiner Strukturen das Loch iterativ zu schließen. Pioniere dieses Ansatzes sind Bertalmio et al. [BSCB00]. In ihrem Paper wird entlang der Trennlinie zwischen Loch und Restbild die Farbe aufgegriffen und senkrecht zu dieser Linie in die Lücke hinein geblendet bis das Loch geschlossen ist. Auf diese Weise wird keinerlei Struktur oder Textur rekonstruiert, was bei kleinen Löchern wenig auffällt, allerdings bei größeren zu entfernenden Strukturen unschöne Verschmierungen erkennen lässt.

Abbildung 13: „Image Inpainting“ [BSCB00]. Links: Originalbild. Rechts: Manipulation.

Page 29: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 17

Ein weiterführender Schritt ist, nicht nur die fehlende Farbe zu rekonstruieren, sondern auch die Textur. Dazu werden kleine Patches aus dem vorhanden Bildmaterial nacheinander an die äußere Grenze des Lochs kopiert, um schließlich den kompletten fehlenden Teil mit sinnvoller Textur zu füllen. Diese Verfahren werden „Texture Synthesis“ genannt, da aus anderen Bildbe-reichen künstlich eine neue Textur für die zu füllenden Bildbereiche hergestellt wird.

Ein erster Algorithmus, der dieses Prinzip verfolgt, wurde von Drori et al. in [DCY03] entwi-ckelt. Er füllt die Löcher nach dem Zwiebelschalenprinzip, indem er entlang der Kante zwi-schen Loch und Restbild sukzessive, der umliegenden Textur entsprechende neue kleine Füll-stücke einsetzt, bis die Lücke geschlossen ist. Diese Verfahren berücksichtigen allerdings kei-nerlei Struktur, die zumeist in Bildern vorherrscht, wie z.B. Kanten zwischen Objekten oder Horizontlinien.

Dies verfeinerte Criminisi et al. [CPT04], indem der Reihenfolge der hinzugefügten Patches eine Gewichtung gegeben wird und somit dominante Strukturen den Vorrang haben. Dadurch wird in jedem Iterationsschritt zunächst die Struktur des Bildes erhalten, um dann die homoge-neren Lückenstücke mit klassischer Textursynthese zu füllen.

Abbildung 14: „Region Filling and Object Removal by Exemplar-based Image Inpainting“ [CPT04].

Oben: Originalbild und Inputbild. Unten: Iterative Schritte zur fertigen Manipulation.

Page 30: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 18

Andere Ansätze verfeinern dieses Prinzip weiter, indem sie z.B. die Gewichtungen anders de-finieren [HCLT07]. Das Verfahren von Sun et al. [SYJS05] beinhaltet eine Benutzereingabe, um vorhandene Strukturen besser zu rekonstruieren. Dazu wird zunächst die Struktur vervoll-ständigt, um dann anschließend die so entstandenen kleineren Lücken mit neuer Textur zu fül-len.

Ein weiterer Ansatz zum Entfernen von Bildteilen ist, wenn auch ursprünglich nicht für die-

sen Zweck vorgesehen, „Seamcarving“ [AS07]. Das eigentlich angestrebte Einsatzgebiet von „Seamcarving“ ist die Größenänderung von Bildern unter Berücksichtigung des Bildinhaltes. Dazu werden Seams, also Pixelreihen oder Pixelspalten mit einer möglichst niedrigen Energie-funktion aus dem Bild gelöscht, oder niedrig energetische Reihen bzw. Spalten eingefügt. Die Energiefunktion hat die Eigenschaft, dass Bildteile bevorzugt gelöscht werden können. Das heißt, um ein Objekt aus dem Bild zu entfernen, kann man es in einem ersten Schritt per Ge-wichtung der Energiefunktion herausnehmen, wodurch das komplette Bild kleiner wird, und in einem zweiten Schritt das Bild wieder auf die Originalgröße „carven“. Dank der gewichteten Energiefunktion sind nun alle anderen Teile des resultierenden Bildes wie im Original, einzig das markierte Objekt ist verschwunden.

Abbildung 15: „Seamcarving“ [AS07]. Oben: Originalbild und markiertes Objekt mit Seams.

Unten: Verkleinertes Bild und fertige Manipulation.

Page 31: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 19

3.1.2 Organisation von Bildern

Mit der stetig steigenden Anzahl an günstigen Digitalkameras auf dem Markt steigt auch die Menge der gespeicherten digitalen Fotos kontinuierlich. Viele Menschen laden ihre Fotos zu-dem im Internet auf Plattformen wie z.B. Flickr3, Photobucket4 oder Picasa5. So kommen schnell viele Millionen, meist unsortierte digitale Fotos zusammen. Dies wirft die Frage auf, wie eine große Menge an Bildern am Besten verwaltet und organisiert wird.

Die meisten Onlinedienste bieten ein „Taggen“ des hochgeladenen Fotos an, das heißt, zu je-dem Bild werden ein oder mehrere Stichwörter gespeichert, die das Foto einem bestimmten Bereich zuordnen. Zusätzlich können Bilder zu Gruppen verlinkt werden, sodass in einer Grup-pe nur Motive zu finden sind, die zu einem bestimmten Thema gehören. So können nicht nur die Eigenen, sondern auch Fotos vieler verschiedener Autoren thematisch strukturiert werden.

Für persönliche „offline“ Bilder bieten viele Bildbrowsing-Tools ähnliche Tagging Funktio-nen an. Laut einer Studie von Rodden und Wood [RW03] sind aber für die meisten Benutzer vor allem zwei Funktionen wichtig: Die Möglichkeit, Bilder chronologisch zu sortieren und die Option, eine große Anzahl von Bildern als Thumbnails (kleine Vorschaubilder) darzustellen. Kategorisiert werden die Bilder meist nur in Ordnern, benannt nach der Veranstaltung auf der die Fotos geschossen wurden.

Allgemein ist die Vorschau mittels Thumbnails die wohl am häufigsten verwendete Darstel-lungsform für Online-, sowie Offline-Fotosammlungen. Das Unternehmen Cooliris Inc. [Coir] entwickelte ein gleichnamiges Browserplugin für Firefox, Safari und Internet Explorer, welches die Thumbnailansicht von großen Bildsammlungen visuell erweitert. Anhand einer Art 3D-Fotowand kann sich der User per Mausgesten entlang der Bilder bewegen. Die Fotowand wird kontinuierlich nachgeladen, sodass für große Sammlungen oder Bildsuchmaschinen der Ein-druck einer unendlich langen Wand entsteht. Wird auf ein Bild geklickt, so wird es vergrößert dargestellt und optional eine Verlinkung auf die Website des Bildes gegeben. Auch wenn dem Benutzer dies übersichtlicher präsentiert wird und man damit schneller einen Überblick über die Sammlung bekommt, so basiert dieses System immer noch auf verkleinerten Vorschauversionen der eigentlichen Bilder.

3 http://www.flickr.com4 http://www.photobucket.com5 http://picasaweb.google.com

Page 32: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 20

Abbildung 16: Google Bildsuche nach „Trevi Fountain“ in Cooliris [Coir].

Die aktuelle Forschung versucht, Bilder in komplett neuen Zusammenhängen darzustellen. Schaffalitzky et al. haben dazu in [SZ02] einen ersten Ansatz geliefert, indem sie die Fotos dreidimensional im Raum anordnen und darstellen. Offensichtlich hat dieser Ansatz einige Re-striktionen. Zum Einen können nur Bilder von statischen Objekten wie z.B. Architektur oder Landschaften derartig angeordnet werden und zum Anderen müssen von einer derartigen Szene mehrere Aufnahmen aus verschiedenen Blickwinkeln vorhanden sein. Der Algorithmus basiert auf dem Zusammenführen von speziellen Bildfeatures im Raum. Zunächst werden für jedes Bild zwei Arten von Bildmerkmalen gesucht, „Invariant Neighbourhoods“ und „Maximally Stable Extremals“ (MSE). Diese Features werden anschließend jeweils zwischen den Bildern verglichen und versucht, diese möglichst gut zusammenzuführen. Daraus entstehen ein oder mehrere Pfade, welche die Bilder miteinander verknüpfen, woraus dann eine 3D-Anordnung der Kameras berechnet werden kann.

Brown et al. greifen in [BL05] diesen Ansatz auf und verfeinern die Schritte, indem sie als zusammenzuführende Bildmerkmale SIFT-Features (Scale Invariant Feature Transform) [Low04]6 benutzen, die den Vorteil haben, dass sie trotz unterschiedlicher Skalierung der Fea-tures auf den Bildern erkannt werden. Im nächsten Schritt werden die gefunden Features mit denen aus benachbarten Bildern verglichen, bei Übereinstimmung zusammengeführt und an-schließend mit Hilfe des RANSAC (RANdom SAmple Consensus) Algorithmus [FB81] diese Matches verfeinert. Zum Schluss wird mittels „Bundle Adjustment“ [TMHF99] auf die Positio-nen und Orientierungen der Kameras geschossen.

6 Frei verfügbare Implementierung von „SIFT Keypoint Detector“ [Low04]: http://www.cs.ubc.ca/~lowe/keypoints

Page 33: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 21

Motiviert von diesem Ansatz greifen Snavely et al. [SSS06] diesen Teil des Verfahrens aus [BL05] auf und verfeinern ihn, um ihn für ein breiteres Spektrum von Bildern, vor allem für Community Fotos aus dem Internet, anwendbar zu machen. Eine entscheidende Verbesserung ist, dass für den letzten Teil des Algorithmus, dem „Bundle Adjustment“, welcher weitläufiger auch „Structure from Motion“ (SfM) [RC08] genannt wird, Informationen über die benutzte Brennweite der Kamera aus, in JPG Dateien eingebettete EXIF-tags (Exchangable Image File Format, Matadaten) benutzt werden. Dies führt zu einer wesentlich genaueren Bestimmung der Kamerapositionen. Der komplette Algorithmus zum Erstellen der Kamerakalibrierung sowie der Generierung von Punktwolken aus den SIFT-Features ist zusammengefasst in einem Tool na-mens „Bundler“ auf der Homepage von „Photo Tourism“ veröffentlicht.7

Abbildung 17: „Notre Dame“, dargestellt in „Photo Tourism“ [SSS06].

In [SSS06] beschäftigen sich Snavely et al. weiterführend damit, die mit Hilfe von „Bundler“ gewonnenen Informationen über die Bilder und deren Kameras dazu zu benutzen, um die Bilder in einem Tool namens „Photo Explorer“ in ihrem dreidimensionalen Zusammenhang darzustel-len. Durch die Einbindung von Community Fotos sind zu jedem Bild zusätzliche Informationen über das abgebildete Objekt verfügbar. Sind diese Informationen ursprünglich nicht mit dem

7 Frei verfügbare Implementierung von „Bundler“: http://phototour.cs.washington.edu/bundler

Page 34: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 22

betrachteten Foto verknüpft, so können sie anhand der räumlichen Zusammenhänge von ande-ren Bildern übernommen werden. Der „Photo Explorer“ bietet eine ganze Reihe an Inter-aktionsmöglichkeiten, die das Betrachten großer Bildsammlungen einer Szene wesentlich er-leichtern. Der Benutzer kann sich wesentlich direkter mit dem Inhalt der Fotos beschäftigen, als es mit der klassischen Ansicht der einzelnen Bilder im Miniaturformat möglich ist.

Abbildung 18: „Photo Tourism“ - „Notre Dame“, dargestellt im „Photo Explorer“ [SSS06].

Aufbauend auf „Photo Tourism“ haben die gleichen Autoren, Snavely et al. in [SSS07] ihr Verfahren weiter verfeinert, was die Grundlage für die erste frei verfügbare webbasierte An-wendung dieser Art von 3D-Bildbrowsing ist. Dieses, von Microsoft unterstützte Projekt nennt sich „Photosynth“ [MPho]. Das Verfahren zum Errechnen der Kamerakalibrierung und Punkt-wolken im Raum ist das Gleiche wie bei „Photo Tourism“, allerdings sind die Bilder keine Community Fotos, sondern kleinere Sammlungen, die der Benutzer persönlich hochlädt. Auch die Navigation innerhalb des bereitgestellten 3D-Interface weicht von dem, in [SSS06] vorge-stellten „Photo Explorer“ ab. Der User navigiert per Mausklicks durch die dreidimensionale Anordnung der Bilder, im Gegensatz zu der, auf Markierung von bestimmten Bereichen basier-ten Navigation im „Photo Explorer“. Außerdem gibt es in „Photsynth“ keinerlei zusätzlich ein-gebetteten Informationen über die dargestellte Szene, da diese aufgrund des manuellen Uplo-ads der Bilder nicht zur Verfügung stehen.

Page 35: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 23

Abbildung 19: Microsoft Photosynth - „Trevi Fountain“ [MPho].

3.2 Multi View Stereo

Die soeben vorgestellten Verfahren zur Organisation von Bildern im 3D-Raum setzen alle eine genaue Kamerakalibrierung voraus, damit die exakten Standorte und Orientierungen der Kame-ras relativ zueinander errechnet werden können. Wie schon in [BL05] und [SSS06] erwähnt, existiert aufgrund des Featurematching auch schon eine erste dreidimensionale Repräsentation der fotografierten Szene in Form von Punktwolken. Dies ist im Grunde schon eine Vorstufe zu einer kompletten 3D-Rekonstruktion der Szene, ausschließlich basierend auf den Fotos, Multi View Stereo (MVS) genannt.

Wie im letzten Abschnitt beschrieben wurde, benötigt eine Bildersammlung bestimmte Ei-genschaften, um eine Darstellung im Raum zu ermöglichen. Diese Kriterien verschärfen sich für MVS Algorithmen noch weiter, da sich bestimmte Ansätze meist auch nur für bestimmte Sze-nen eignen. Im Allgemeinen kann zwischen drei verschiedenen Szenenarten unterschieden wer-den [FP07]:

1. Geschlossenes Objekt: Die zu rekonstruierende Szene besteht aus einem in sich geschlos-senen Objekt, welches von allen Seiten, sphärenartig fotografiert wird. Das Objekt ist Ide-alerweise auf allen Bildern komplett sichtbar, sodass dessen Kontur leicht erfasst werden kann.

Page 36: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 24

2. Offene Szene: Die Szene besteht aus mehreren Objekten in einer belebten Umgebung, die sich mehr oder weniger überdecken. Die Bilder werden von vielen verschiedenen Stand-orten aus geschossen, die sich meist innerhalb der Szene befinden, sodass prinzipiell die Objekte mitsamt ihrer Umgebung rekonstruiert werden. Typische Szenarien sind Außen-anlagen wie Sehenswürdigkeiten oder Gebäude.

3. Gestörte Szene: Eine offene Szene, die auf mehreren Bildern von bewegten Objekten ver-deckt wird, wie z.B. Autos oder Touristen, die sich vor einer Sehenswürdigkeit bewegen.

Ob nun ein bestimmter MVS Algorithmus für eine oder mehrere Szenenarten geeignet ist,

wird meist durch seine grundsätzliche Herangehensweise bestimmt. Auch hierzu existieren drei verschiedene Ansätze:

1. Tiefenbilder: Anhand eines Matchingverfahrens von Features in den Bildern wird für je-des Bild ein Tiefenbild erstellt. Dies hat für jedes Pixel die gleichen x-y Informationen wie das Originalbild, speichert jedoch nicht die Farbwerte, sondern eine Tiefeninformati-on in Form einer Graustufenskala. Im finalen Schritt werden alle Tiefenbilder zusammen genommen und daraus ein 3D-Model errechnet. Diese Verfahren eignen sich im Allge-meinen für alle drei vorgestellten Szenenarten.

2. Volumenbeschneidung: Grundlage für das 3D-Modell ist hierbei eine allgemeinere Initia-lisierung des Modells, dessen Volumen das finale 3D-Modell einschließt, ähnlich wie die Bildhauerei. Dieses initialisierte Modell wird dann mittels verschiedener Verfahren so-weit verfeinert, dass zum Schluss möglichst genau die Oberfläche des fotografierten Ob-jektes rekonstruiert wird. Offensichtlich eignen sich diese Ansätze nur für die Szenenart des geschlossenen Objektes, da bei offenen Szenen kein Initialvolumen gegeben werden kann.

3. Volumenaufbau: Anhand eines Matchingverfahrens von Features in den Bildern wird eine Punktwolke im Raum generiert. Diese stellt die Basis für eine direkte Triangulierung ei-nes 3D-Modells dar, oder wird mit Hilfe eines „Surface Growing“ Verfahrens zu einer vollständigen Oberfläche komplettiert. Diese Ansätze eignen sich meist für alle drei Sze-nenarten.

Eine genauere Klassifizierung und ein Vergleich verschiedener MVS Verfahren ist in [SCD+06] zu finden. Dabei haben Seitz et al. diverse Bilderserien inklusive Kamerakalibrierung bereitgestellt und die Autoren aktueller MVS Algorithmen gebeten, die dargestellten Objekte zu rekonstruieren. Anhand eines Vergleichsmodells, einem Laserscan der Objektes, wird das ein-gereichte Modell auf Vollständigkeit und Abweichung vom Original überprüft. Eine regelmäßig aktualisierte Auflistung und Evaluation der eingereichten Modelle ist auf deren Homepage zu finden.8

Im Folgenden werden einige sota Verfahren der führenden Autoren von MVS Algorithmen vorgestellt.

8 http://vision.middlebury.edu/mview/eval

Page 37: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 25

3.2.1 Michael Goesele

Goesele et al. gehen in [GCS06] den Weg über Tiefenbilder der einzelnen Fotos. Voraussetzung ist eine vorhandene Kamerakalibrierung, die z.B. mit Hilfe des im Zusammenhang mit „Photo Tourism“ [SSS06] entwickelten „Bundler“ Tools bestimmt werden kann. Für jedes Bild werden zunächst eine Menge von Nachbarbildern gesucht, mit deren Hilfe das Tiefenbild erstellt wird. In diesen Prozess fließt eine zusätzliche Wahrscheinlichkeitsberechnung mit ein, sodass nur die Teile des Tiefenbildes berücksichtigt werden, die mit einer gewissen Sicherheit auch wirklich Teil der zu rekonstruierenden Szene sind. Daher entstehen, zumeist in offenen oder gestörten Szenen aufgrund von Überdeckungen, Störungen oder Reflektionen Löcher in den Depthmaps. Dies wird aber dadurch ausgeglichen, dass mit großer Wahrscheinlichkeit diese Lücken in Re-konstruktionen aus anderen Perspektiven nicht vorhanden sind. Im letzten Schritt, wenn die einzelnen Tiefenbilder mit Hilfe des Verfahrens aus [CL96]9 zu einem 3D-Modell zusammen-gefügt werden, werden so die Löcher mit den 3D-Informationen aus allen anderen Fotos geschossen.

In [GSC+07] haben die Autoren Goesele et al. in Zusammenarbeit mit den Entwicklern von „Photo Tourism“ [SSS06] das Verfahren aus [GCS06] auf „Community Photo Collections“ (CPCs) erweitert. Dies bringt zusätzliche Probleme mit sich, da CPCs im Allgemeinen sehr verschiedenartige Fotos bezüglich Bildauflösung, Beleuchtung, Zoomfaktor und Störungen (wie z.B. Touristen im Bild) aufweisen. Da aber die Menge an Fotos sehr groß ist, ist anzunehmen, dass sich eine große Teilmenge an Bildern finden lässt, die sich gut für einen MVS Algorithmus eignen. Der erste Schritt des Verfahrens ist wiederum die Kamerakalibrierung, auch hier wird das in [SSS06] vorgestellte und in „Bundler“ implementierte Verfahren genutzt, allerdings wird schon in diesem Schritt erstmals aussortiert und es werden nur Fotos verwendet, deren Brenn-weite und radiale Verzerrung bekannt ist (auslesbar aus den EXIF-Tags). Bei der Generierung der Depthmaps wird eine weitere Bildauslese vollzogen, indem nicht nur nach den nächstgele-genen Nachbarbildern gesucht wird, sondern in einem zweistufigen Verfahren mittels „Global View Selection“ und „Local View Selection“ die besten Nachbarn gesucht werden. Das heißt, jedes generierte Tiefenbild basiert auf einer anderen Untermenge von Fotos. Ferner basiert die Initialisierung einer Depthmap auf den, von Bundler initialisierten Punktwolken in Form von SIFT Keypoints. Diese sind als Teilmengen, referenziert für jedes einzelne Bild gespeichert. Ausgehend von diesen Punkten werden pixelbasiert Flächenstücke generiert, bis ein möglichst hoher Grad an Sicherheit erreicht wird. Wie in [GCS06] auch, entstehen dadurch lückenhafte Tiefenbilder, die schließlich auf dem gleichen Weg zu kompletten 3D-Modellen zusammenge-setzt werden.

9 Frei verfügbare Implementierung von „vrip“ [CL96]:

http://grail.cs.washington.edu/software-data/vrip

Page 38: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 26

Abbildung 20: „Multi-View Stereo for Community Photo Collection“ [GSC+07]. „Pisa Duomo“ Szene.

Oben: Inputbild, Depthmap und 3D-Modell der Depthmap. Unten: Fertiges 3D-Modell.

3.2.2 Yasutaka Furukawa

Furukawa und Ponce [FP06] sehen im Vergleich zu Goesele et al. von Tiefenbildern ab. Ihr Ansatz setzt auf einen iterativen Deformationsprozess der visuellen Hülle [Lau94] des zu rekon-struierenden Objektes, welche als Input zusätzlich zu den Bildern vorausgesetzt wird. Daher ist das Verfahren auch nur für ein einzelnes geschlossenes Objekt (siehe Kapitel 3.2) geeignet. Zunächst wird mit Hilfe eines „Affine Invariant Interest Point Detector“ [MS02]10 eine Samm-lung von Patches entlang der Oberfläche des zu rekonstruierenden Objektes erstellt. Anschlie-ßend wird auf die visuelle Hülle des Objektes zurückgegriffen und dessen Oberfläche soweit verformt, dass sie durch die Mittelpunkte der rekonstruierten Patches verläuft. Abschließend werden feine Details auf der Oberfläche ausgearbeitet, indem in einem weiteren Deformations-prozess sowohl Homogenität, als auch photometrische und geometrische Bedingungen für jedes einzelne Vertex im Modell berechnet werden.

10 Frei verfügbare Implementierung „affine invariant interest point detector“ [MS02]:

http://www-cvr.ai.uiuc.edu/ponce_grp/software/3d.html

Page 39: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 27

Abbildung 21: „High-Fidelity Image-Based Modeling“ [FP06]. „Twins“ Objekt.

Von inks nach rechts: Visuelle Hülle, Patches, Deformation, Verfeinerung und texturiertes Modell.

Inspiriert von dem Zwischenschritt des Generierens eines „Patch-Modells“ zur Verfeinerung der visuellen Hülle, haben Furukawa und Ponce in [FP07] einen eigenen Algorithmus entwi-ckelt, um ein noch detaillierteres Patch-Modell zu erstellen. Der Ansatz folgt dem Prinzip von „match, expand and filter“, das heißt, zunächst werden wieder spezielle Features in den Bildern gesucht, in diesem Fall „Harris“ und „Difference-of-Gaussians“, welche zwischen den Fotos abgeglichen werden und somit eine weit zerstreute Menge an Feature Keypoints bilden. Diese dienen als Ausgangsbasis für folgende Schritte, die iterativ angewendet werden: Im ersten Schritt werden die Keypointmatches auf benachbarte Pixel ausgeweitet um eine größere und vor allem dichtere Menge an Keypoints zu erlangen, woraufhin dann im zweiten Schritt die neuen Keypoints auf ihre Sichtbarkeit überprüft und gegebenenfalls wieder gelöscht werden. Für jeden verbleibenden Keypoint kann anhand der Positionen und Anzahl der Kameras, die ihn registrie-ren eine Normale berechnet werden, sodass schließlich alle Keypoints die Grundlage für eindeu-tig im Raum orientierte Patches bilden. Das so entstandene Patch-Modell kann dann entweder auf die in [FP06] beschriebene Weise zur Optimierung einer visuellen Hülle benutzt werden, oder an sich als eine 3D-Rekonstruktion der Szene betrachtet werden. Da es allerdings allge-mein das Ziel eines MVS Algorithmus ist, ein fertiges Polygonmodell zu erhalten, schlagen die Autoren ein Verfahren namens „Poisson Surface Reconstruction“ (PSR) [KBH06]11 vor, um aus der orientierten Punktwolke ein geschlossenes 3D-Modell zu generieren. Das Verfahren wird in Kapitel 3.3.2 genauer erläutert.

11 Frei verfügbare Implementierung von „Poisson Surface Reconstruction“ [KBH06]:

http://www.cs.jhu.edu/~misha/Code/PoissonRecon

Page 40: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 28

Abbildung 22: „Accurate, Dense, and Robust Multi-View Stereopsis“ [FP07]. „Roman“ Objekt.

Oben: Inputbild und Features. Unten: Initiale Patches, Patch-Modell und fertiges 3D-Modell.

Wird der Weg über PSR gewählt, so entfallen quasi die Restriktionen der verschiedenen Sze-nenarten (Kapitel 3.2), da Einerseits ein Patch-Modell für geschlossene Objekte und offene Sze-nen erstellt werden kann, wobei Störungen aufgrund des „filter“ Schrittes unerheblich sind, und Andererseits kein Modell der visuellen Hülle mehr nötig ist, um ein geschlossenes 3D-Modell zu generieren. Furukawa stellt eine funktionierende Implementierung diese sogenannten „Patch-Based Multi-View Stereo“ (PMVS) Software auf seiner Homepage zur Verfügung.12 In Kombi-nation mit den Implementierungen von „Bundler“ und PSR stellt dies die zur Zeit einzig voll-ständig verfügbare Pipeline für eine funktionierende Umsetzung eines MVS Verfahrens von den Fotos bis hin zur Rekonstruktion des 3D-Modells dar.

12 Frei verfügbare Implementierung von „PMVS“ [FP07]:

http://www.cs.washington.edu/homes/furukawa/research/pmvs/index.html

Page 41: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 29

Ein aktuelles Projekt von Furukawa et al. [FCSS09] beschäftigt sich mit einer Erweiterung des PMVS Verfahrens [FP07] im Bezug auf Architektur. Das Problem bei 3D-Rekonstruktionen von Gebäuden oder Inneneinrichtungen ist, dass meist große Teile der Szene aus flachen, wenig strukturierten Oberflächen besteht. Diese sind für klassische MVS Algorithmen nur sehr schwer rekonstruierbar, da immer eine gewisse Struktur für den Matchingprozess verlangt wird. Dies wird gelöst, indem zunächst ein Patch-Modell erstellt wird, welches dann auf Flächen in drei dominanten Ebenen (X, Y und Z) hin untersucht wird. Daraus wird eine Depthmap für jedes Bild erstellt, welche zusammen die Grundlage für die eigentliche 3D-Rekonstruktion bilden.

Abbildung 23: „Manhattan-World Stereo“ [FCSS09]. „Kitchen“ Szene.

Oben: Inputbild, Depthmap und Depth-normal-map. Unten: 3D-Modell und texturiertes Modell.

3.2.3 Carlos Hernández Esteban

Hernández und Schmitt verfolgen in [HEF04] einen ähnlichen Ansatz wie Furukawa et al. in [FP06]. Ausgangsbasis ist ein Modell der visuellen Hülle des zu rekonstruierenden Objektes, welches in den weiterführenden Schritten entsprechend der Oberfläche des Objektes deformiert wird. Hierzu benutzen Hernández und Schmitt ein Modell welches auf “Snakes“ [KWT88] ba-siert, um iterativ jeden Vertex der visuellen Hülle möglichst nahe an die tatsächliche Oberfläche zu verschieben. Die Schlange wird dabei von drei verschiedenen Kräften gelenkt die, sobald sie im Gleichgewicht sind, auf der Oberfläche konvergieren. Diese Kräfte sind:

1. Eine baryzentrische Kraft, die tendenziell die Oberfläche zur Mitte des Objektes hin zieht. 2. Eine Silhouettenkraft, welche die Oberfläche hin zur visuellen Hülle zieht. 3. Eine texturbasierte Kraft, die gefundene Bildfeatures auf benachbarten Bildern möglichst

genau auf der Oberfläche der visuellen Hülle findet und räumlich zusammenführt.

Page 42: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 30

[HEF04] ist außerdem einer der wenigen MVS Verfahren, das bereits eine Lösung zur Tex-turgenerierung für das 3D-Modell mit vorstellt. Das Verfahren dazu basiert auf [SY99], welches in Kapitel 3.3.1 näher erklärt wird. Da [HEF04] eine visuelle Hülle als Ausgangsmodell fordert und die Silhouette des Objektes für den Verfeinerungsprozess benötigt, ist es offensichtlich nur für die spezielle Szenenart des geschlossen Objektes (siehe Kapitel 3.2) geeignet.

Abbildung 24: „Silhouette and Stereo Fusion for 3D Object Modeling“ [HEF04]. „Twins“ Objekt.

Oben: Inputbilder. Unten: Visuelle Hülle, 3D-Modell und texturiertes 3D-Modell.

Ein weiterer Ansatz von Hernández et al. zum Lösen des MVS Problems ist [VHTC07]. Grundlage ist ein „Bounding Volume“ also ein Volumenblock, der das zu rekonstruierende Objekt komplett einschließt. Dies ist ähnlich wie die visuelle Hülle, jedoch sehr viel gröber definiert und nicht unbedingt auf Silhouetten gestützt. Mit Hilfe von dreidimensionalen „Graph Cuts“, einer Erweiterung von [BVZ01], wird dieses Volumen in zwei Regionen, „Objekt“ und „Leer“ eingeteilt, wobei das resultierende Volumen „Objekt“ eine möglichst optimale Lösung für das 3D-Modell ist. Die „Graph Cuts“ folgen der minimalen Lösung einer Kostenfunktion, die zwei Faktoren beinhaltet. Erstens einen Term, der die Grenze zwischen den Regionen durch fotokonsistente Punkte treibt, wobei die fotometrische Konsistenz mittels „Normalized Cross Correlation“ (NCC) [ZHG06] berechnet wird. Zweitens einem „Ballooning“ Term, der dafür zuständig ist das Objekt „aufzublasen“, also eine Gegenkraft zu dem beschneidenden ersten Term. Das eigentliche 3D-Modell wird dabei dadurch erlangt, indem das „Bounding Volume“ in kleine, würfelförmige Volumenteile (Voxel) eingeteilt und anhand der „Graph Cut“ Funktion ermittelt wird, welche Teile zur „Object“ Region gehören.

Page 43: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 31

In [HCV07] haben Hernández et al. im Groben den Ansatz von [VHTC07] aufgegriffen, sich aber intensiver mit dem „Ballooning“ Term der „Graph Cut“ Funktion auseinandergesetzt. In früheren Ansätzen wird dieser Teil für das komplette Objekt als konstant vorausgesetzt. Dies kann schnell zu Problemen bei Objekten mit dünnen und konkaven Strukturen führen, da ein starker „Ballooning“ Faktor das Modell schnell zu sehr aufbläst (wodurch konkave Strukturen verloren gehen) und ein zu niedriger Faktor das Modell in sich zusammen fallen lässt (wodurch dünne Strukturen verloren gehen). Dies wird in [HCV07] durch eine probabilistische Sichtbar-keitsfunktion verhindert, die auf Grundlage von Tiefenbildern entscheidet, ob sich ein registrier-ter Punkt innerhalb oder außerhalb der Geometrie befindet. In [CVHC08] wird die Berechnung der Depthmaps für kleinere Bildsequenzen (10-20 Bilder) noch weiter verfeinert. Dazu wird für jedes gematchte Pixel und dessen Nachbarn in jedem Bildpaar, welches Grundlage für eine Depthmap ist, zusätzlich eine Reihe von NCC Scores [ZHG06] gebildet und diese nach dem möglichst besten Match durchsucht. Daraus folgt eine erhebliche Verringerung an fehlerhaften Raumpunkten („Outliers“) in dem Tiefenbild. Zusätzlich wird für Pixel, die kein zuverlässiges „best Match“ haben ein neuer Zustand definiert, der sie als Unbekannt deklariert. Bei der Umre-chung zu einem 3D-Modell wird mit Hilfe anderer Depthmaps versucht, deren Tiefe zu ermit-teln.

Beide Erweiterungen, [HCV07] und [CVHC08] wurden schließlich in [VHTC07] integriert, um per „Graph Cuts“ in einem Voxelgrid ein Verfahren vorzustellen, welches ein fertiges 3D-Modell als Ausgabe hat.

Abbildung 25: „Using Multiple Hypotheses to Improve Depth-Maps for Multi-View Stereo“ [CVHC08].

„Model House“ Objekt. Oben: Inputbilder. Unten: Depthmap und 3D-Modell.

Page 44: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 32

3.3 Texturen und weiterführende 3D-Verarbeitung

Meist haben die vorgestellten MVS Verfahren als Output ein blankes 3D-Modell, ohne Textu-ren (mit Ausnahme von [HEF04] das ein Verfahren zum Erstellen der Textur mit vorschlägt). Sollen die generierten Modelle jedoch eine, außer zur Vermessung dienende Anwendung fin-den, beispielweise in der Computergrafik, so ist ein 3D-Modell ohne Textur relativ wenig wert. Daher müssen die Modelle nach Abschluss einen MVS Algorithmus gemappt werden, das heißt, der Oberfläche muss auf irgendeine Weise Farbe und Struktur gegeben werden. Dieser Vorgang ist keinesfalls trivial, weswegen in diesem Kapitel ein kurzer Überblick über derartige Verfah-ren gegeben wird.

Ein zweites Problem, welches bei vielen MVS Algorithmen entsteht ist, dass die Modellober-fläche nicht geschlossen ist. Einige Verfahren beinhalten schon Ansätze, nicht perfekt zusam-mengeführte Bereiche zu interpolieren, dies ist jedoch nicht Standard. Einige Ansätze, wie die Patch-basierten Verfahren (z.B. [FP07]) berechnen gar nur Oberflächenstücke, die erst zusam-men gesetzt werden müssen, um ein fertiges 3D-Modell zu erhalten. Ferner ist es allgemein erstrebenswert, selbst ein geschlossenes 3D-Modell nach der Akquirierung noch weiter zu verbessern, indem z.B. die Oberfläche geglättet oder die Polygonstruktur vereinfacht bzw. ver-bessert wird, allgemein „Remeshing“ genannt [AUGA07]. Aus diesem Grund wird auch zu diesem Thema ein kurzer Überblick gegeben.

3.3.1 Generieren von Texturen

Der in [HEF04] (siehe Kapitel 3.2.3) vorgeschlagene, auf [SY99] basierende Ansatz zum Erstel-len von Texturen für ein fertiges 3D-Modell generiert auf Polygonbasis eine komplett neue Tex-tur. Dazu wird für jeden Vertex jedes Polygons im fertigen 3D-Modell ein Bildpaar gesucht, auf dem der Vertex sichtbar ist (drei Bildpaare pro Polygon). Über das jeweilige Polygon wird ein Netz von Farbpartikeln (Color Particles) entsprechend der Pixelverteilung in den ausgewählten Bildern gelegt. Für jedes Partikel wird ein Farbwert anhand der Vertexfarben errechnet, wobei gleichzeitig Highlights eliminiert werden. Die Farbwerte der Partikel werden anschließend in-einander übergeblendet und für jedes Polygon auf einer neuen Textur gespeichert. Eine auf die-se Weise generierte Textur hat quasi mit den Originalbildern außer deren Farbwerten nicht mehr viel zu tun. Sie ist für die Weiterverarbeitung des Modells nicht gut geeignet, da möglicherweise Teile der Textur verändert werden sollen, was mit dieser, für das menschliche Auge sehr unzu-gänglichen Textur annähernd unmöglich ist.

Page 45: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 33

Abbildung 26: „Silhouette and Stereo Fusion for 3D Object Modeling“ [HEF04]. „Vase 1299“ Objekt.

Links: 3D-Modell. Rechts: Textur.

Ein naiver Ansatz wäre, auf das Modell einfach ein passendes Bild zu projizieren. Dies ist in den meisten Fällen jedoch mit großen Schwierigkeiten behaftet, da einerseits für ein geschlos-senes Modell ein einzelnes Bild nicht ausreicht, weil es keine Informationen über die Farbstruk-tur von Verdeckungen, wie z.B. den Seiten und Rückseiten des Modells hat. Andererseits kön-nen so ausschließlich die frontal betrachteten Teile des Modells ohne Verzerrungen auf dem Modell dargestellt werden können. Das heißt, eine Textur für ein geschlossenes Modell muss aus Teilen von mehreren Fotos synthetisch zusammengesetzt sein, damit die Oberfläche des Modells komplett ohne Verzerrungen bedeckt ist.

Rocchini et al. präsentieren in [RCMS02] ein Mapping- und Texturgenerierungs-Verfahren, welches die besten Bilder und Mappingbereiche aus einer Fotoserie auswählt und anschließend daraus eine Textur zusammenstellt. Zunächst basiert das Verfahren auf einer bestimmten Akqui-rierungsmethode der Bilder und einer Methode zum Errechnen der Kalibrierungsdaten anhand eines Abgleichs zwischen Bildern und 3D-Modell. In diesem Schritt werden die Bilder von Schattierung und Highlights befreit, um eine möglichst homogene Oberfläche zu erlangen. Dies findet in Kombination mit einem MVS Algorithmus jedoch keine Anwendung, da die Kameras schon kalibriert sind und die Bilder im Normalfall nicht derart „gereinigt“ werden können, da dies darauf beruht, dass die gleichen Fotos unter verschiedenen Beleuchtungen aufgenommen werden. Der nächste Schritt, der sich auf das eigentliche Texturieren konzentriert, ist jedoch auch für MVS Verfahren anwendbar. Dazu wird zunächst für jede Kameraposition (also für jedes Bild), jeder Vertex in dem 3D-Modell in einem dreistufigen Verfahren auf Sichtbarkeit überprüft. Ist (a) die Projektion des Vertex im Bild, (b) die Normale des Vertex in Richtung

Page 46: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 34

Kamera gerichtet und (c) der Vertex von keinem Modellteil zwischen Vertex und Kamera ver-deckt, so wird das Bild dem Punkt in Form eines „Valid Image Sets“ (Menge der gültigen Bil-der) zugeordnet. Im Allgemeinen wird es für jeden Vertex mehrere solche Bilder geben, sodass abschließend dasjenige Bild als „Target Image“ (Zielbild) ausgewählt wird, bei dem der Winkel zwischen Vertexnormale und Blickrichtung der Kamera am kleinsten ist. Im nächsten Schritt werden alle Polygone des 3D-Modells in zwei Klassen eingeteilt: Haben alle drei Eckpunkte des Polygons das gleiche „Target Image“, so wird es als „Internal“ (intern) klassifiziert, andernfalls als „Frontier“ (an der Grenze liegend). Ziel ist es nun, die Menge an Grenzpolygonen zu mini-mieren, indem in einem iterativen Verfahren jeder Vertex der Grenzpolygone auf seine gültigen Bilder untersucht und überprüft wird, ob sich die Menge der „Frontier“ Polygone verringert, wenn das „Target Image“ geändert wird. So entstehen möglichst große Stücke auf der Modell-oberfläche, die einem bestimmten Foto zugewiesen sind. Aus den Originalbildern werden an-schließend rechteckige Regionen ausgeschnitten, die genau diese Patches enthalten und in eine neue Textur kopiert. Für die restlichen Grenzpolygone wird ein ähnliches Verfahren wie in [HEF04] benutzt, um mittels Überblendung der Farbwerte scharfe Schnittkanten im Mapping zu verhindern.

Abbildung 27: „Acquiring, Stitching and Blending Diffuse Appearance Attributes on 3D Models“ [RCMS02].

„Vase“ Objekt. Oben: 3D-Modell, Foto mit Mappingpatch und texturiertes Modell. Unten: Textur.

Page 47: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 35

Lensch et al. schlagen in [LHS01] ein ähnliches Verfahren vor, jedoch unterscheidet sich dies hauptsächlich in der Kamerakalibrierung der Bilder, was für MVS Verfahren an diesem Punkt nicht weiter relevant ist, da die Fotos schon für die 3D-Rekonstruktion kalibriert wurden. Das Verfahren zum eigentlichen Mapping und Generieren einer Textur entspricht dem von [RCMS02].

Wie in Abbildung 27 zu sehen ist, erhöht dieses Verfahren nur in geringem Maße die Zu-gänglichkeit der Textur. Große Bereiche bestehen immer noch aus einzelnen, unzusammenhän-genden Polygontexturen, was eine Weiterverarbeitung der Textur nicht wirklich erleichtert.

Dieser Herausforderung haben sich Callieri et al. in [CCS02] angenommen. Ihr Ansatz ba-

siert wiederum auf [RCMS02], unterscheidet sich jedoch in den Schritten zur Visibilitäsrech-nung und der Behandlung der Grenzpolygone. Für die Sichtbarkeitsberechnung der Polygone wird ein openGL Verfahren ausgenutzt, welches jedes Polygon des Modells in einer anderen Farbe darstellt. Folglich kann für jede Kameraeinstellung anhand des gerenderten Bildes auf einfache Weise die Menge der sichtbaren Dreiecke erfasst werden. Anschließend wird für jedes Polygon mittels der Flächennormalen überprüft, welches Bild das „Target Image“ ist. Ähnlich wie in [RCMS02] wird nun versucht, die Größe der so entstandenen Mapping-Patches zu ma-ximieren und somit deren Anzahl zu minimieren. Anschließend werden wiederum die Grenzpo-lygone der Patches markiert. Anders als in dem zuvor beschriebenen Verfahren wird schon an dieser Stelle die Textur erstellt, und zwar aus den jeweils rechteckigen Bereichen des Patches auf dem Bild, inklusive aller Grenzpolygone, die den Patch umgeben. So entstehen redundante Bereiche auf der Textur, die für den folgenden Farbabgleich hergenommen werden. Die Farb-werte werden hier nicht nur für die Grenzpolygone übergeblendet, sondern wirken sich auf die komplette Textur aus. Dazu werden die Vertexfarbwerte der Grenzpolygone der einzelnen Pat-ches auf der Textur miteinander verglichen und ein Mittelwert errechnet. Das so entstehende Bild aus Farbabweichungen der einzelnen Vertices wird auf die gesamte Textur ausgedehnt und übergeblendet. Diese neue Textur wird anschließend über die vorherige Originaltextur addiert, wodurch ein fließender Übergang der Farbwerte über die Nahtstellen erreicht wird. Die so resul-tierende Textur hat keinerlei zusätzliche Texturartefakte die durch das Überblenden der Grenz-polygone entstehen und basiert nur auf „echten“ Bildteilen. Daher ist sie auch für eine mögliche Weiterverarbeitung gut geeignet.

Page 48: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 36

Abbildung 28: „Reconstructing Textured Meshes from Multiple Range+RGB Maps“ [CCS02]. „Bird“ Objekt.

Links: Texturiertes Modell. Rechts: Inputbilder und fertige Textur.

Einen etwas anderen Weg schlagen Zhou et al. in [ZWT+05] vor. Hierbei wird das Modell nicht mit Fotos des Originalobjektes texturiert, sondern es bietet die Möglichkeit, das 3D-Modell mit fremden Bildern zu mappen. Da dadurch keinerlei automatische Beziehung zwi-schen Bild und Modell errechnet werden kann, bedarf der Ansatz eine große Menge an User-interaktion um die initialen Schritte wie Visibilität und Texturpatches zu definieren. Es müssen manuell Bereiche auf dem Modell selektiert und mit den entsprechenden Bereichen auf den Bildern verbunden werden. Das optimale Mapping und die resultierende Textur werden aber automatisch errechnet. Für nichtdefinierte Bereiche auf dem Modell, z.B. Stellen, die mit kei-nem Inputbild verbunden werden können, bietet das Verfahren Möglichkeiten zum Inpainting (siehe Kapitel 3.1.1) und zur Überblendung von Texturen.

Page 49: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 37

Abbildung 29: „Texturemontage: Seamless Texturing of Arbitrary Surfaces From Multiple Images“ [ZWT+05].

„Feline” Objekt. Oben: 3D-Modell und texturiertes Modell. Unten: Inputbilder und Textur.

3.3.2 Weiterverarbeitung des 3D-Modells

Viele MVS Verfahren haben als Output ein 3D-Modell mit Löchern in den Bereichen, die schlecht rekonstruiert werden können. Oder sie geben gar nur eine Sammlung an Oberflächen-stücken aus. Ziel ist es, diese unvollständigen Modelle zu Modellen mit geschlossener Oberflä-che zu komplettieren, damit sie entsprechend gut weiterverarbeitet werden können.

Kazhdan schlägt dazu in [Kaz05] ein Verfahren vor, welches als Input eine Menge von orien-tierten Punkten hat. Um damit 3D-Modelle zu vervollständigen, werden also nur seine Vertices und die entsprechenden Normalen extrahiert und daraus die Oberfläche komplett neu rekon-struiert. Dazu werden zunächst die orientierten Punkte in einem Voxelgrid (Raster aus Volu-menteilen) verteilt. Ziel ist es nun, das so entstandene Volumen mit einer charakteristischen Funktion zu beschreiben, dessen Werte innerhalb des Volumens gleich Eins und außerhalb des Volumens gleich Null ist. Dies wird erreicht, indem mittels einer „Fast Fourier Transform“ (FFT) [FJ05] dessen Fourier Koeffizienten errechnet werden. Aufgrund von Stokes Theorem

Page 50: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 38

[Mac01] kann dieses Volumenintegral durch ein Oberflächenintegral ausgedrückt werden, wel-ches durch die orientierten Inputpunkte komplett definiert ist. Mit Hilfe dieser so gewonnenen Funktion kann die genaue Oberfläche, die das Volumen einschließt, „Isosurface“ genannt, er-rechnet werden.

Abbildung 30: „Reconstruction of Solid Models from Oriented Point Sets“ [Kaz05] „Dino” Objekt.

Von links nach rechts: Unvollständiges Modell, Punktwolke und rekonstruiertes Modell.

Ein sehr ähnliches, mathematisch fast identisches Verfahren schlagen Kazhdan et al. in [KBH06] vor. Die Hauptunterschiede bestehen darin, dass für die initiale räumliche Verteilung der orientierten Punkte anstatt eines uniform verteilten Voxelgrids eine Octreedarstellung [WG92] verwendet wird. Dies reduziert den Speicherbedarf enorm, da ein Octree nur die Berei-che des Volumens fein unterteilt, die auch von einem Punkt besetzt sind. Außerdem kann da-durch die Tiefe des Octrees und somit auch die Genauigkeit der Rekonstruktion besser paramet-risiert werden. Der Unterschied in der Berechnung der charakteristischen Funktion besteht dar-in, dass anstelle der Anwendung einer Fourier Transformation, das Problem auf ein Standart Poisson-Problem zurückgeführt wird. Dies ist im Grunde identisch mit dem Verfahren in [Kaz05], da die Fourier Transformation eine gängige Technik zum Lösen periodischer Poisson Systeme ist.

Ist die Menge an Inputpunkten sehr groß und wird zudem eine sehr tiefe Octreestruktur ge-fordert, um eine sehr genaue Oberflächenrekonstruktion zu erhalten, so ist selbst bei dem Ver-fahren aus [KBH06] der Speicherbedarf so groß, dass auf gängigen Computersystemen schnell der maximale Speicher überschritten wird. Daher erweitern Bolitho et al. in [BKBH07] diesen Ansatz mit einem Streamingverfahren, welches die Verarbeitung der Octreedaten und das Lösen des Poisson Gleichungssystems dezentralisiert. Anhand eines Beispieles aus [BKBH07] wird dies deutlich: Input sind 210 Millionen orientierte Punkte eines Scans von „David“ von Michel-angelo [DMiP]. Der Vergleich zeigt das normale Verfahren mit einer Octreetiefe von 11 und 4442MB Speicherbedarf, gegenüber dem Streamingverfahren mit einer Octreetiefe von 13 und nur 780MB Speicherbedarf:

Page 51: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 39

Abbildung 31: „David“ Links: Rekonstruiert mit [KBH06]. Rechts: Rekonstruiert mit [BKBH07].

Alle drei Verfahren rekonstruieren im Grunde identische Modelle bei gleichem Input. Der Vorteil von [KBH06] liegt vor allem in seiner geringeren Speicherbelastung gegenüber [Kaz05], was in [BKBH07] noch weiter verbessert wird. Für alle Verfahren stellt der Autor eine funktio-nierende Implementierung auf seiner Homepage13 zur Verfügung.

In [KKDH07] widmen sich Kazhdan et al. näher dem Problem, aus einer Octreerepräsentati-on von Punkten eine geschlossene Oberfläche zu erzeugen. Dazu wird aus der Octreetopologie eine Menge von „Edge-Trees“ (Kantenbäume) extrahiert, die dann dazu benutzt wird, ein poly-gonales Modell zu erzeugen.

Die vorgestellten Verfahren eigenen sich grundsätzlich zum Komplettieren von unvollständi-gen Modellen und zum Triangulieren von orientierten Punktmengen. Aufgrund der Voxelgrid- bzw. Octreerepräsentation der Inputpunkte eignen sie sich aber auch sehr gut zur Vereinfachung von Modellen („Mesh Simplification“). Da die Auflösung des Voxelgrids bzw. die Tiefe des Octrees parametrisierbar ist, kann damit eine Voreinstellung für die maximale Anzahl der Poly-gone des resultierenden 3D-Modells getroffen werden. Die Implementierung von [KKDH07] (ebenfalls auf der Autorenhomepage verfügbar) fordert als Eingabe bereits ein geschlossenes Modell. Für die anderen Verfahren ist es ebenfalls leicht aus einem 3D-Modell eine orientierte Punktmenge zu generieren, sodass auch diese für „Mesh Simplification“ anwendbar sind. Das Parametrisieren des Octrees ist allerdings nur eine indirekte Form der Modellvereinfachung. Klassische Verfahren hierfür gehen mehr auf die eigentliche Topologie der Inputmodelle ein. Eine Übersicht und Vergleich derartiger Algorithmen wird in [HG97] bzw. [Lue01] gegeben. Eine detailliertere Beschreibung der einzelnen sota Verfahren zu „Mesh Simplification“ würde aber den Rahmen dieser Arbeit übersteigen.

13 http://www.cs.jhu.edu/~misha/Code

Page 52: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

3 State of the Art – Seite 40

Abbildung 32: „Unconstrained Isosurface Extraction on Arbitrary Octrees“ [KKDH07]. „Dragon“ Objekt.

Oben: Inputmodell. Unten: Isosurface und Triangulierung des vereinfachten Modells.

Page 53: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

4 Konzept

In den letzten beiden Kapiteln wurde eine Übersicht über diverse Verfahren gegeben, die sich allgemein mit Bildern und 3D-Modellen, deren Darstellung und Manipulationsmöglichkeiten beschäftigen. In diesem Abschnitt werden vorher angeführte Ansätze zu einer Pipeline ver-knüpft, welche die Grundlage für das Konzept der 3D-unterstützten Bildmanipulation darstellt.

4.1 Ziel

Ziel des vorgestellten Verfahrens ist es, im Gegensatz zu der klassischen Bildmanipulation, wo Bildinhalte mit 2D-Informationen „übermalt“ werden, den wahren dreidimensionalen Inhalt eines Bildes zu manipulieren. Um dies zu erreichen genügt es nicht, über ein einzelnes Bild einer Szene zu verfügen, sondern es müssen mehrere, im Idealfall unter bestimmten Bedingun-gen fotografierte Bilder vorhanden sein. Die Bilder und die zugehörigen Kamerapositionen und -orientierungen sollen mittels eines Kalibrierungsverfahrens möglichst ausschließlich aus In-formationen der Bilder errechnet werden. Die 3D-Repräsentation der fotografierten Szene soll anschließend mit Hilfe eines Multi View Stereo Verfahrens aus den Bildern konstruiert werden. Dies soll unter Einbeziehung möglichst fotorealistischer Texturen geschehen, die aus den Input-bildern erstellt werden. Das so generierte 3D-Modell der Szene wird dann entsprechend den Vorstellungen des Benutzers verändert. Um diese veränderten 3D-Informationen wieder in die Originalbilder einzufügen, werden in den Fotos die veränderten Bereiche erfasst und anschlie-ßend komplett gelöscht. Dadurch entstehen in den Bildern Löcher, die im nächsten Schritt wie-der gefüllt werden sollen. Dazu wird das manipulierte 3D-Modell aus, den Bildern entsprechen-den Perspektiven und mit passender Beleuchtung gerendert. Aus diesen neu entstandenen Bil-dern sollen anschließend die Bereiche ausgeschnitten werden, welche in die Löcher der Origi-nalbilder passen und mit Hilfe eines klassischen Bildmanipulationsverfahrens übergangslos eingepasst werden. So entstehen manipulierte Bilder, die mittels realistischer 3D-Informationen verändert wurden.

Die folgende Abbildung 33 skizziert das Konzept dieser Pipeline und verdeutlicht visuell den Ablauf des Verfahrens.

Page 54: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

4 Konzept – Seite 42

Abbildung 33: Konzept der Pipeline für 3D-unterstützte Bildmanipulation.

Page 55: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

4 Konzept – Seite 43

4.2 Voraussetzungen

Um eine fotografierte Szene rein anhand von Bildern dreidimensional zu rekonstruieren, müssen diese gewisse Bedingungen erfüllen. Zunächst ist klar, dass aus einem einzelnen Bild nicht ge-nügend Tiefeninformation extrahiert werden kann um eine 3D-Repräsentation der Szene zu erzeugen. Je nach Beschaffenheit der Umgebung und gewünschtem Detailgrad der Rekonstruk-tion, müssen mindestens zehn oder bis zu über 100 Fotos vorliegen. Sollen selbst kleinste De-tails eines Objektes erfasst werden, so kann die Anzahl der Bilder im Grunde beliebig erhöht werden, allerdings steigt damit natürlich auch die Rechenzeit, die für die Rekonstruktion benö-tigt wird.

Die Fotos sollen aus möglichst vielen verschiedenen Perspektiven und Standorten geschossen werden, damit eine hohe Parallaxe zwischen den einzelnen Bildern entsteht. Dies ist später wichtig, um die Tiefeninformation für zusammengeführte Features genau bestimmen zu können. Auch sollte versucht werden, eine möglichst lückenlose Fotoserie zu erstellen, damit in den nachfolgenden Schritten auch wirklich alle Bereiche der Szene rekonstruiert werden können. Löcher im 3D-Modell sind zwar relativ gut rekonstruierbar (siehe Kapitel 3.3.2), jedoch stellt eine unvollständige Fotoserie ein größeres Problem beim Erstellen einer guten Textur dar. Das heißt, entweder wird diesen schlecht bzw. undefinierten Bereichen ein falsches Foto zugewie-sen, oder die Löcher müssen mit Hilfe anderer Bildmanipulationsmethoden gefüllt werden. Bei-des kann den Realismus der Rekonstruktion entscheidend beeinträchtigen.

Eine weitere Voraussetzung ist, dass die fotografierte Szene statisch, also unbewegt sein muss. Störungen von bewegten Objekten, die nicht mit rekonstruiert werden sollen, sind in den meisten Fällen unerheblich, aber der eigentliche Inhalt der Szene darf sich auf den einzelnen Fotos nicht verändern, da sonst kein Featurematching zwischen den Bildern ausgeführt werden kann.

Die verwendete Kamera mit der die Bilder geschossen werden, kann eine beliebige, handels-übliche Digitalkamera sein. Professionelle und damit auch meist sehr kostenintensive Hardware ist nicht nötig, solange die Kamera in der Lage ist, EXIF-Tags mit den Fotos zu speichern. Dies ist jedoch mittlerweile zum Standart geworden, sodass es nur noch sehr wenige Kameras gibt, die dies nicht können. Die zusätzlichen Metadaten werden für den folgenden Schritt der Kalib-rierung benötigt.

4.3 Kalibrierung

Unter einer Kalibrierung der Bilder wird in diesem Kontext das Errechnen des genauen Stand-orts und Orientierung der Kamera für jedes Foto verstanden. Nur mit diesen Informationen kön-nen die Bilder in einen dreidimensionalen Zusammenhang gebracht werden (siehe auch Kapitel 3.1.2). In manchen Fällen ist sogar eine geologisch genaue Standortbestimmung (z.B. mittels GPS) gefordert, was aber für diesen Ansatz nicht notwendig ist. Für MVS Verfahren sind ledig-lich die Standorte und Orientierung relativ zueinander erforderlich.

Für den Vorgang der Kalibrierung existieren verschiedene Ansätze, wie z.B. der Abgleich von Silhouetten, wie in [HEF04] vorgeschlagen wird, oder mit Hilfe von Kalibrierungsboards

Page 56: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

4 Konzept – Seite 44

oder -punkten, welche in die fotografierte Szene gesetzt werden. Der in [SSS06], im Zusam-menhang mit „Photo Tourism“ vorgeschlagene Ansatz basiert ausschließlich auf den EXIF-Tags und einem Matchingverfahren von SIFT-Features (siehe Kapitel 3.1.2).

Da das vorgestellte Verfahren so allgemein wie möglich gehalten werden soll, eignen sich manuelle Verfahren, wie Silhouettenabgleich oder Kalibrierungsboards eher weniger, da sie entweder nur auf geschlossene Objekte (siehe Szenenarten in Kapitel 3.2) anwendbar sind, oder bereits beim Fotografieren vorhanden sein müssen. Das in [SSS06] angeführte Verfahren ist in dieser Hinsicht das wohl allgemeingültigste und dazu noch in Form des „Bundler“ Tools frei verfügbar. Ein großer Vorteil dieses Tools ist, dass es sogar für verschiedene verwendete Kame-ras in einer Fotoserie anwendbar ist. Aus diesem Grund wird in der späteren praktischen Umset-zung des vorgestellten Verfahrens, „Bundler“ zur Kamerakalibrierung verwendet.

4.4 3D-Rekonstruktion

Die Rekonstruktion der fotografierten Szene als 3D-Modell ist das Herzstück der 3D-unterstützten Bildmanipulation. In Kapitel 3.2 wurden diverse Multi View Stereo Verfahren vorgestellt. Aus Benutzersicht bestehen die Hauptunterschiede der verschiedenen Ansätze darin, welche Inputs gefordert werden und somit auch, für welche Szenenarten der jeweilige Algo-rithmus geeignet ist. Wird z.B., wie in [HEF04] oder [FP06] eine visuelle Hülle der zu rekon-struierenden Szene gefordert, so schränkt dies die Anwendungsmöglichkeiten erheblich ein.

Da auch an dieser Stelle eine möglichst allgemeine Anwendbarkeit des vorgestellten Verfah-rens gefordert wird, sollte der verwendete MVS Algorithmus möglichst für alle Szenenarten geeignet sein und außer den Inputbildern und Kamerakalibrierung möglichst keine zusätzliche Eingabe erfordern. Diese Voraussetzungen werden von mehreren vorgestellten Verfahren er-füllt, jedoch bietet Furukawa als einziger Autor eine funktionierende Implementierung seines, in [FP07] vorgestellten PMVS Algorithmus an. PMVS gibt zunächst nur ein Patch-Modell aus, welches jedoch zusammen mit einer ebenfalls verfügbaren Implementierung von Kazhdans „Poisson Surface Reconstruction“ [KBH06] zu einem 3D-Modell komplettiert werden kann. Dies wird auch so in der praktischen Umsetzung des vorgestellten Verfahren genutzt. Um eine funktionierende Verknüpfung zwischen Bundler und PMVS herzustellen, müssen vor Beginn der eigentlichen 3D-Rekonstruktion die Outputdaten von Bundler in ein, für PMVS lesbares Format umgewandelt werden. Außerdem bietet PMVS an, mittels Masken bestimmte Bereiche der Bilder von der Rekonstruktion auszuschließen. Dies kann einerseits für die Szeneart des geschlossenen Objektes verwendet werden, quasi ähnlich wie die Einbeziehung der Silhouette, wobei Bildbereiche außerhalb dieser Kontur komplett vernachlässigt werden. Andererseits kön-nen dadurch selektiv einzelne Objekte aus einer Szene rekonstruiert werden, für den Fall, dass es für die Manipulation nicht nötig ist, die komplette Szene in 3D nachzustellen.

Optimal wäre eine Möglichkeit, je nach Szenenart zwischen verschiedenen MVS Algorith-men zu wechseln, jedoch ist die Implementierung mehrerer der vorgeschlagenen Verfahren sehr aufwändig und würde den Rahmen dieser Arbeit übersteigen.

Wie bereits erwähnt, ist es außerdem notwendig, eine möglichst fotorealistische Textur für das 3D-Modell zu erstellen. Das von PMVS generierte Patch-Modell lässt sich leicht mit den

Page 57: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

4 Konzept – Seite 45

Originalfotos als Textur darstellen, da die einzelnen Patches gebündelt für jedes Foto berechnet werden und auch die jeweilige Position auf dem Bild bekannt ist. Dies ist jedoch für das fertige 3D-Modell nicht mehr so einfach möglich. Daher muss eine der Methoden aus Kapitel 3.3.1 für den vorgestellten Ansatz adaptiert werden. Um auch an dieser Stelle möglichst allgemein in der Anwendung zu bleiben, wird eine vereinfachte Version des in [CCS02] vorgeschlagenen Ansat-zes implementiert, da die resultierende Textur sich am besten für die anschließende Manipulati-on des 3D-Modells eignet.

4.5 Manipulation in 3D

Wurde ein 3D-Modell für die fotografierte Szene erfolgreich erstellt, so soll dies anschließend nach Belieben verändert werden können. Denkbare Veränderungen wären z.B. das Löschen oder Versetzen von Modellteilen, das Hinzufügen von neuen Modellen, oder das Ändern der Textur von Modellteilen bzw. des ganzen Modells. Dies ist auf manuelle oder automatische Art und Weise denkbar.

Eine manuelle Bearbeitung des 3D-Modells ist wohl am einfachsten umsetzbar. Dazu muss nur eine Möglichkeit gegeben werden, das texturierte Modell in ein gängiges 3D-Format zu exportieren. Dieses kann der Benutzer dann beliebig in einer professionellen 3D-Software wie z.B. „Blender“14 oder „3D Studio Max“15 verändern und das Ergebnis wieder importieren. Diese Variante lässt wohl die größte Vielfalt an Manipulationsmöglichkeiten zu, setzt aber auch vor-aus, dass der User mit einer 3D-Software vertraut ist.

Automatische Editiermöglichkeiten beschränken sich darauf, dass innerhalb der Implementie-rung des vorgestellten Verfahrens Bereiche des Modells markiert und gelöscht, oder zusätzliche Modelle importiert werden können. Außerdem soll die Möglichkeit geboten werden, die zu löschenden Bereiche auf einem oder mehreren Inputbildern zu markieren. Ausgehend von dieser Markierung und den Kamerainformationen kann auf die entsprechenden Bereiche des 3D-Modells geschlossen und diese so entfernt werden. Der Vorteil hierbei ist, dass bereits das Patch-Modell auf diese Weise verändert werden kann, noch bevor ein finales 3D-Modell erstellt wird. Auf die Implementierung weiterführender Werkzeuge, die professionelle 3D-Software bietet, wird im Hinblick auf eine Exportfunktion verzichtet.

In der praktischen Umsetzung des vorgestellten Verfahrens wird sowohl die manuelle als auch die automatische Manipulation angeboten, um ein Maximum an Editiermöglichkeiten zu bieten und das Verfahren so flexibel wie möglich zu gestalten.

14 Open Source 3D-Software: http://www.blender.org15 Kommerzielle 3D-Software: http://www.autodesk.com/3dsmax

Page 58: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

4 Konzept – Seite 46

4.6 Manipulation der Fotos

Abschließend sollen die Änderungen, die am 3D-Modell vorgenommen wurden, in die origina-len Fotos eingepasst werden. Damit die Übergänge für das menschliche Auge möglichst nicht erkennbar sind, muss eine passende Technik ausgewählt werden, die keinerlei Nahtstellen zwi-schen Original und manipuliertem Bild zurücklässt. Da das einzupassende Bildstück von der gleichen Position aus gerendert wird, von der aus auch das Originalbild entstanden ist und der Bildausschnitt exakt der gleiche ist, besteht die einzige Schwierigkeit beim Einfügen darin, dass die Farben entsprechend angepasst werden müssen. Die Struktur des Bildes ändert sich entlang der Schnittkante nicht und es wird erwartet, dass umliegende Bereiche im Original und Rekon-struktion gut übereinstimmen. Sind die Textur und die Beleuchtung des modifizierten 3D-Modells gut rekonstruiert und somit möglichst fotorealistisch, so weichen die Farben zwischen Original und Manipulation nur sehr geringfügig voneinander ab und eine einfache Überblen-dung entlang der Schnittkante genügt. Ist dies nicht der Fall, so bietet sich der Ansatz von Pérez et al. aus [PGB03] (siehe Kapitel 3.1.1) an. Dieses Verfahren, namens „Poisson Image Editing“ blendet nicht nur die Schnittkanten über, sondern vollzieht zusätzlich einen Farbabgleich zwi-schen Originalbild und Füllstück und passt das einzufügende Bildstück entsprechend an, um einen nicht erkennbaren Übergang zu schaffen.

Ziel ist es, beide Ansätze in der Implementierung des Verfahrens umzusetzen. Liefert eine einfache Überblendung nicht den gewünschten saumlosen Effekt, so kann dies optional mit „Poisson Image Editing“ verbessert werden. Eine integrierte Implementierung des Verfahrens ist geplant, vorübergehend wird jedoch eine online verfügbare, vereinfachte Umsetzung von „Poisson Seamless Cloning“16 verwendet. Auch wenn darin nicht alle Funktionen aus dem An-satz [PGB03] umgesetzt wurden, so ist das „Cloning“ für das vorgestellte Verfahren vollkom-men ausreichend, da nur ein exakt definierter Bildausschnitt in die Originalbilder eingepasst werden soll.

16 Frei verfügbare Implementierung von „Poisson Image Editing“ [PGB03]:

http://www.cs.tau.ac.il/~tommer/adv-graphics/ex1.htm

Page 59: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung

Nachdem im letzten Kapitel das zugrundeliegende Konzept der 3D-unterstützten Bildmanipula-tion vorgestellt wurde, wird an dieser Stelle ein detaillierter Einblick in dessen praktische Um-setzung gegeben. Neben Details zum Entwurf und der Implementierung werden die Einbindung der, in den letzten Kapiteln bereits vorgestellten, frei verfügbaren Implementierungen von Bundler, PMVS, „Poisson Surface Reconstruction“ und „Poisson Image Editing“ erläutert.

5.1 PoP-EYE

Zu Beginn der Arbeit stellte Prof. Dr. Kömker den Kontakt zu Prof. Dr. Grimm an der FH Er-furt her. Dieser entwickelt zusammen mit seinen Mitarbeitern Bastian Birnbach, Konrad Kölzer und Frank Nagl eine Software namens PoP-EYE, welche sich ebenfalls mit Bildern und deren 3D-Darstellung im Raum beschäftigt.

PoP-EYE entsteht in Zusammenarbeit mit dem Unternehmen „Eastern Graphics“17, welches sich auf die Planung und 3D-Visualisierung von Büroräumen spezialisiert hat. Das heißt, in einer dreidimensionalen grafischen Umgebung werden 3D-Modelle von Büromöbeln platziert, um so dem Betrachter einen räumlichen Eindruck der geplanten Büroausstattung zu geben. PoP-EYE soll dieses Konzept noch weiter führen, indem die Möbel in eine Rekonstruktion des ech-ten Büroraumes gesetzt werden. Dazu wird von dem leeren Büro eine Bilderserie erstellt und mittels Bundler die exakten Kamerapositionen errechnet. Es ist jedoch nicht das Ziel von PoP-EYE, ein tatsächliches 3D-Modell des Raums zu rekonstruieren, vielmehr sollen die Fotos so in der virtuellen 3D-Welt angeordnet werden, dass der Eindruck eines Büroraumes entsteht. Die Modelle der Büromöbel werden anschließend so platziert, dass es aus Sicht der Kameras so aussieht, als ob sie in dem fotografierten Raum stehen. So kann eine geplante Büroausstattung wesentlich realistischer in dem dreidimensionalen Abbild der tatsächlichen Umgebung visuali-siert werden.

Der Programmablauf von PoP-EYE ist wie folgt: Zunächst wird die Bilderserie mit dem Pro-gramm Bundler (siehe Kapitel 3.1.2) kalibriert. Das Tool ist eine Sammlung von Shell-Scripten, die auf einem Windows-Rechner z.B. mit dem Programm „Cygwin“18 ausgeführt werden kön-nen. Bundler sucht nach SIFT-Features in jedem Foto der Bilderserie und führt diese, mit Hilfe der, aus den EXIF-Tags der Bilder ausgelesen Brennweite, räumlich zusammen. So wird eine Datei namens „bundler.out“ erstellt, die für jede Kamera die Brennweite, radiale Verzerrung,

17 http://www.easterngraphics.com18 http://www.cygwin.com

Page 60: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 48

Rotations- und Translationsmatrix und für jeden berechneten Punkt die Position, die Farbe und eine „View List“ speichert. PoP-EYE liest die „bundler.out“ Datei ein und stellt mit Hilfe der so gewonnenen Informationen die Fotos in ihrem dreidimensionalen Zusammenhang korrekt dar. Zum aktuellen Zeitpunkt muss Bundler getrennt von PoP-EYE ausgeführt werden, was jedoch nach geplanter direkten Integration umgangen werden kann.

In dem 3D-Fenster von PoP-EYE werden verschiedene Darstellungsmöglichkeiten angebo-ten, so kann der Benutzer beispielsweise wählen ob alle oder nur selektierte Bilder der Szene angezeigt werden sollen und auch die zusammengeführten SIFT-Keypoints können in Form einer gefärbten Punktwolke im Raum dargestellt werden. Weitere, bereits implementierte Fea-tures beinhalten unter anderem eine frei im Raum bewegliche „Viewcamera“, das Anzeigen der Positionen und Orientierungen der Bildkameras mittels skalierbarer „Viewfrustums“ und das Anzeigen und Platzieren von 3D-Modellen im Raum. Noch nicht komplett umgesetzt, aber ge-plant sind die Funktionen wie „Image Based Lighting“ (IBL) und das Erstellen von Depthmaps aus den Fotos. IBL berechnet mit Hilfe von Farbinformationen der Bilder die Positionen, Rich-tungen und Farben der Lichtquellen in der Szene. Dies ist wichtig für die Rekonstruktion der ursprünglichen Beleuchtung der Szene, die dazu verwendet wird um die eingefügten 3D-Modelle naturgetreu auszuleuchten.

Da in PoP-EYE bereits einige der, für den Ansatz der 3D-unterstützten Bildmanipulation grundlegenden Probleme wie das Einlesen der Bundler Outputdaten und das Darstellen der Bil-der im Raum, umgesetzt sind, wird das vorgestellte Verfahren in PoP-EYE integriert.

PoP-EYE wird von den Autoren in C#19 programmiert, wobei die 3D-Darstellung aller Kom-ponenten mit Hilfe von XNA20, einer von Microsoft entworfenen Entwicklungsumgebung zur Spielprogrammierung für Xbox und Windows, realisiert wird. Da C# eine aktuell vielverwende-te Programmiersprache ist und in Verbindung mit XNA ein bewährtes Werkzeug zum Erstellen von 3D-Applikationen aller Art darstellt, ist dies für die Umsetzung des vorgestellten Ansatzes ideal.

19 http://msdn.microsoft.com/de-de/vcsharp/default.aspx20 http://www.xna.com

Page 61: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 49

Abbildung 34: PoP-EYE: 3D-Szene, 3D-Szene mit 3D-Modell und 3D-Szene mit Kameras und Keypoints.

Page 62: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 50

5.2 ThreeDUB

Das entwickelte Verfahren der 3D-unterstützten Bildmanipulation wird unter dem Namen „ThreeDUB“ in PoP-EYE integriert. Dies findet nach dem Prinzip eines Plugins statt, wobei ThreeDUB weitestgehend abgekapselt von PoP-EYE implementiert wird und nur auf einige wichtige Basiskomponenten des Hauptprogramms zugreift. Es wird gestartet, indem zunächst PoP-EYE geöffnet und die gewünschte Fotoserie geladen wird. ThreeDUB wird erst initialisiert, wenn auf das entsprechende Icon geklickt wird und öffnet sich in Form eines Andockfensters am rechten Rand des 3D-Fensters.

Abbildung 35: ThreeDUB integriert in PoP-EYE.

Page 63: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 51

Die Benutzeroberfläche von ThreeDUB wird in Form eines Karteikartensystems (Tabs) um-gesetzt. Die Karteikarten beinhalten verschiedene, für den Ablauf des Programms wichtige Funktionen und sind so angeordnet, dass sie der chronologischen Abfolge der nacheinander auszuführenden Teilschritte entsprechen.

Ausgehend von dem in Kapitel 4 vorgestellten Konzept des Ansatzes können die einzelnen umzusetzenden Teilschritte des Programmablaufs von ThreeDUB noch weiter aufgegliedert werden. So entsteht folgende Pipeline, die den Ablauf des Verfahrens detailliert darstellt. Um-rahmte Teilschritte werden mit Hilfe bereits implementierter Software gelöst:

Abbildung 36: Detaillierter Programmablauf von ThreeDUB.

Der Schritt der Kalibrierung der Bilder mit Hilfe des Bundler Tools wird, wie bereits er-wähnt, bereits vor dem Start von PoP-EYE bzw. ThreeDUB durchgeführt. Das Einlesen der

Page 64: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 52

„bundler.out“ Datei geschieht beim Start von PoP-EYE, daher wird auf diesen Vorgang nicht mehr detailliert eingegangen.

Die restlichen Teilschritte laufen alle innerhalb von ThreeDUB ab und finden sich daher je-weils auf den entsprechenden Karteikarten wieder.

Abbildung 37: Karteikartensystem (Tabs) von ThreeDUB.

Die Tabs „Edit Masks for PMVS“ und „PMVS“ sind für den, in Abbildung 36 gezeigten Teilschritt „3D-Rekonstruktion“ zuständig. Erstere Karteikarte ist dabei nur für das Erstellen von Bildmasken (siehe Kapitel 5.3) zuständig, während „PMVS“ alle Schritte von der Konver-tierung der Bundler Daten zu PMVS Kalibrierungsdaten über das Erstellen des Patch-Modells bis hin zum fertig texturierten 3D-Modell (siehe Kapitel 5.4) beinhaltet. Der Schritt der „Mani-pulation“ wird von zwei Karteikarten abgedeckt, „Edit Patch-Model / 3D-Model“ und „Modify Images“ (siehe Kapitel 5.6). Zusätzlich existiert noch eine Karteikarte namens „General“, wel-che Optionen für die Darstellung einzelner Komponenten von ThreeDUB und der generierten Modelle im 3D-Fenster von PoP-EYE bietet (siehe Kapitel 5.5).

Die jeweiligen Funktionen auf den Karteikarten und deren praktische Umsetzung werden in den folgenden Kapiteln genauer erklärt.

5.3 Erstellen von Masken

Masken definieren mit Hilfe eines Graustufenbildes diejenigen Bereiche auf einem Foto, die rekonstruiert werden sollen. Die Benutzung ist optional und nicht immer sinnvoll. Besteht die Szene beispielsweise aus einem einzelnen geschlossenen Objekt oder soll nur ein bestimmtes Objekt der Szene rekonstruiert werden, so bieten sie sich allerdings an, da durch eine Maskie-rung diejenigen Bereiche der Fotos, die außerhalb des Objektes liegen, komplett ignoriert wer-den. Dies hat den Vorteil, dass die Laufzeit des Algorithmus wesentlich verringert wird und unter Umständen das maskierte Objekt genauer rekonstruiert werden kann, da mit den Masken eine zusätzliche Information über dessen Silhouette gegeben wird. Für eine offene Szene ist die Verwendung von Masken allerdings weniger sinnvoll, da im Normalfall die komplette Szene rekonstruiert werden soll.

Das Erstellen der Masken ist der erste Schritt zur Rekonstruktion der Szene und sollte abge-schossen sein, bevor PMVS ausgeführt wird. Die Karteikarte „Edit Masks for PMVS“ beinhal-tet alle Funktionen und Werkzeuge, um vorhandene Masken darzustellen und um neue Masken zu zeichnen sowie zu speichern. Zu diesem Zweck ist sie in zwei, getrennt voneinander akti-vierbare Bereiche gegliedert, einen für die Darstellung und einen für das Erstellen der Masken. Per Klick auf die jeweilige Checkbox werden die entsprechenden Funktionen auf der Karteikar-te aktiviert.

Page 65: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 53

5.3.1 Dateiformat

Wird die Checkbox „Load Existing Masks“ aktiviert, so werden bereits vorhandene Masken geladen und dargestellt. Dazu muss deren Dateiformat bekannt und lesbar sein und vor allem später im Ablauf auch geschrieben werden können.

Das von PMVS geforderte Format ist PGM (Portable Grey Map), ein relativ einfaches Bild-format zum Speichern von Graustufenbildern. Es existieren zwei Variationen von PGM Bildern, Das Eine speichert die Pixelwerte im ASCII Format (American Standard Code for Information Interchange), das Andere binär. Als Unterscheidung steht in der ersten Zeile des Dateiheaders die „Magic Number“, für ASCII ist diese „P2“ und für binär „P5“. Das von PMVS geforderte und im weiteren Verlauf benutzte Format ist „P5“. Der Header einer PGM Datei ist für beide Formate ASCII codiert und wie folgt aufgebaut:

- <Magic Number (P5)> - <Bildbreite in Pixel> <Bildhöhe in Pixel> - <maximal benutzter Grauwert> Im anschließenden Datenblock werden die einzelnen Farbwerte jedes Pixels, für „P2“ in

ASCII und für „P5“ binär gespeichert. Dies erfolgt in Form eines Rasters aus der angegebenen Anzahl von Pixelzeilen (Bildhöhe) und Pixelspalten (Bildbreite). Der maximale Grauwert wird normalerweise auf 255 gesetzt, da dies einerseits der RGB-Darstellung von Graustufen ent-spricht und andererseits so jeder Pixelwert mit einem Byte gespeichert werden kann. Eine de-tailliertere Spezifikation des PGM-Formats kann z.B. online21 abgerufen werden.

In C# kann eine PGM Datei einfach mit Hilfe eines „StreamReaders“ und eines „BinaryRea-ders“ eingelesen werden. Der „StreamReader“ liest zunächst den ASCII Header ein, überprüft die „Magic Number“ und speichert die Höhe und Breite des codierten Bildes. Anschließend wird, im Fall von „P5“, der „BinaryReader“ gestartet. Dieser überspringt den Header indem er eine entsprechende Anzahl an Bytes vorrückt, anschließend jedes nachfolgende Byte einliest und jeweils als Grauwert in ein Farbarray speichert. Dieses Farbarray kann im Anschluss, je nach Bedarf einer „Texture2D“ in XNA übergeben und so auf dem Bildschirm dargestellt wer-den. Auf die gleiche Weise kann auch eine PGM Datei gespeichert werden. Ein „StreamWriter“ schreibt zunächst den Header in ASCII Codierung und ein „BinaryWriter“ schreibt anschlie-ßend den Datenblock aus Pixelwerten des Bildes.

21 PGM-Spezifikation: http://netpbm.sourceforge.net/doc/pgm.html

Page 66: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 54

// lese ASCII-Header streamReader = new StreamReader(fileName); // lese “magic Number” magicNumber = ReadLine(streamReader); // lese Bildbreite ImgWidth = ReadLine(streamReader); // lese Bildhöhe ImgHeight = ReadLine(streamReader); // lese maximalen Grauwert maxVal = ReadLine(streamReader); // initialisiere das Farbarray pixelData = new Color[ImgWidth * ImgHeight]; // lese Binärwerte der Pixel binaryReader = new BinaryReader(fileName); // überspringe den Header binaryReader.Seek(Header in Bytes); // lese Binärdaten for (int i = 0; i < ImgHeight * ImgWidth; i++) { x = binaryReader.ReadByte(); pixelData[i] = new Color(x, x, x); }

Pseudocode 1: Einlesen einer PGM Bilddatei.

Mittels eines Klicks auf die Checkbox „Load Existing masks“ werden alle vorhandenen Mas-ken auf dem beschriebenen Weg geladen und dem Betrachter stehen vier verschiedene Optionen für die Darstellung der Masken in Verbindung mit den originalen Bildern im 3D-Raum von PoP-EYE zur Verfügung:

1. Darstellung als Alphakanal in den Originalbildern, wobei schwarz als undurchsichtig und weiß als transparent behandelt wird.

2. Überlagerung von Originalbild und Maske, transparente Bereiche werden schwarz einge-färbt.

3. Nur die Maske wird dargestellt. 4. Anzeigen der Originalbilder In PoP-EYE werden die im Raum verteilten Bilder in Form von Quads mit den Originalfotos

als Textur dargestellt. Sobald die Masken geladen werden, werden diese Originaltexturen zwi-schengespeichert und je nach gewählter Darstellungsart in Laufzeit die darzustellenden neuen Texturen errechnet. In der 3D-Ansicht werden die Texturen der Quads anschließend durch die neu berechnete Maskentextur ersetzt. Sobald die Vorschaufunktion der Masken beendet wird, werden die zwischengespeicherten Originaltexturen wieder auf die Quads gelegt.

Page 67: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 55

Abbildung 38: „Edit Masks for PMVS“-Tab: Darstellungsoptionen der Masken.

5.3.2 Erstellen der Masken

Durch Klicken auf „Draw Masks“ wird dem Benutzer die Möglichkeit gegeben, selbst Masken für eine Bilderserie zu erstellen. Dazu war ursprünglich geplant, eine vereinfachte Variante des Konzepts der visuellen Hülle [Lau94] zu nutzen, um anhand dieses Modells automatisch für jedes Bild eine Maske zu generieren. So sollte der User für eine geringe Anzahl von Bildern einen „View Cone“ (Sichtkegel) zeichnen, indem er auf den Bildern entlang der Kontur des zu rekonstruierenden Objektes eine geschlossene Linie zieht, wobei die Tiefe des Kegels durch eine Verbindung der Linie mit dem Ursprung der Kamera automatisch erstellt wird. Sind genü-gend derartige Sichtkegel erzeugt, so stellt deren Schnittvolumen eine vereinfachte Version der visuellen Hülle dar. Das Problem bei der Umsetzung dieses Ansatzes war allerdings, dass die Berechnung des Schnittvolumens und das Erstellen des Modells der visuellen Hülle sehr kom-pliziert und aufwändig ist. Aus diesem Grund wurde auf diese Art der Maskengenerierung ver-zichtet und ein einfacherer Ansatz entwickelt.

Das schließlich umgesetzte Verfahren basiert nun auf einer möglichst sinnvollen Gruppierung der SIFT-Keypoints und ist in mehrere Schritte gegliedert. Zunächst wird dem Benutzer die

Page 68: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 56

Möglichkeit gegeben, freihändig eine Markierung um das zu rekonstruierende Objekt zu zeich-nen. Mittels Mausklicks werden die Eckpunkte auf der Bildebene gesetzt und die Markierung zum Schluss durch einen Klick in der Nähe des Anfangspunktes geschossen. Dies geschieht durch Auslesen der Mausposition auf dem Bildschirm. Sobald geklickt wird, wird vom Kame-raursprung aus ein Strahl durch die, ins 3D übersetzten Mauskoordinaten geschickt und der Schnittpunkt mit der Bildebene im Raum ausgelesen. Dieser wird als Eckpunkt für die Markie-rung gespeichert und mittels einer Linie mit dem vorherigen Vertex verbunden.

// Bildschirmposition der Maus Vector3 nearSource = mousePosition, 0f; // Bildschirmposition der Maus eine Einheit tiefer Vector3 farSource = mousePosition, 1f; // übersetzen der Positionen in 3D-Weltkoordinaten Vector3 nearPoint = Unproject(nearSource); Vector3 farPoint = Unproject(farSource); // erstellen des Strahls aus Ursprung und Richtung Vector3 direction = farPoint - nearPoint; Ray r = new Ray(nearPoint, direction); // erstellen der Bildebene aus Normale und Position Vector3 normal = cam.Rotation.Backward; Plane p = new Plane(normal, usedCcam.ImagePosition); // berechnen der Distanz zw. Ursprung und Bildebene float denominator = Dot(p.normal, r.direction); float numerator = Dot(p.normal, r.position) + p.D; float t = -(numerator / denominator); // berechnen der 3D-Position aus Ursprung, Länge und Richtung des Strahls Vector3 pickedPosition = nearPoint + direction * t; return pickedPosition;

Pseudocode 2: Berechnung der 3D-Position eines Mausklicks.

Ist eine Markierung erstellt, so teilt sie den Raum in zwei Bereiche, einen innerhalb und einen außerhalb der Markierung. Anhand dieser Aufteilung kann für jeden vorhandenen SIFT-Keypoint festgestellt werden, ob er in der Markierung liegt. Per Klick auf den Button „Update Keypoints“ wird dies für jeden der Punkte berechnet und anschließend diejenigen Keypoints gelöscht, die außerhalb der Markierung liegen. Das Verfahren sieht vor, dass der User diesen Vorgang für einige Bilder aus möglichst unterschiedlichen Perspektiven manuell durchführt. So reduziert sich die Punktwolke aus SIFT-Keypoints mit jeder durchgeführten Markierung und nähert sich immer mehr der Form und Ausbreitung des zu rekonstruierenden Objektes an. Im nächsten Schritt wird diese Punktwolke als Ausgangsbasis für einen möglichst genauen Vor-

Page 69: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 57

schlag einer neuen Maske genutzt, der über die Checkbox „Estimate Selection“ aufgerufen wer-den kann.

Dazu wird zunächst jeder SIFT-Keypoint in die Bildebene projiziert, um die zweidimensiona-le Beziehung zwischen den Punkten betrachten zu können. Die gesamte Bildhöhe wird an-schließend in uniform verteile Balken unterteilt, wobei deren Höhe mittels des Sliders „Number of Keypoints Used for Estimation“ auf der Karteikarte kontrolliert werden kann. Anschließend werden von oben nach unten für jeden Balken diejenigen Keypoints gesucht, die in ihm liegen und die Koordinaten des am weitesten links und am weitesten rechts liegenden Punktes in je einem Array gespeichert. Wurden nach diesem Verfahren alle Balken durchlaufen, wird das Array für die rechtsliegenden Punkte umgedreht und abschließend alle Punkte miteinander ver-bunden - zuerst das „Linksarray“ und anschließend das „Rechtsarray“. So entsteht eine ge-schlossene Markierung, die gegen den Uhrzeigersinn um das zu rekonstruierende Objekt läuft.

// projiziere alle Keypoint is die Bildebene for (int i = 0; i < Keypoints.Length; i++) { projVerts[i] = getCamCoords(Keypoints[i]); } // berechne die Höhe des Balkens und Startkoordinate float bar = slider.value; float ypos = (imageHeight / 2) + bar; // berechne linken und rechten Punkt für jeden Balken for (int i = 0; i < #bars; i++) { // unterer Rand des Balkens float yposPlus = ypos - bar; // suche jeden Keypont der im Balken liegt for (int j = 0; j < projVerts.Count; j++) { if (projVerts[j].Y < ypos && projVerts[j].Y > yposPlus) rowVerts.Add(projVerts[j]); } // suche linken und rechten Punkt leftVerts.Add(rowVerts.mostLeft); rightVerts.Add(rowVerts.mostRight); } // drehe rechtes Array um rightVerts.Reverse();

Pseudocode 3: Berechnung einer vorgeschlagenen Markierung.

Im Idealfall entspricht dieser Vorschlag auch der wirklichen Kontur des zu rekonstruierenden Objektes. Allerdings kann es vorkommen, dass aufgrund einer ungünstigen Verteilung der Key-points oder noch vorhandenen Ausreißern, also Keypoints die weit außerhalb der Silhouette liegen, die vorgeschlagene Markierung an einigen Stellen sehr von der Kontur des Objektes

Page 70: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 58

abweicht. Aus diesem Grund werden einige Werkzeuge angeboten, um die Markierung manuell anzupassen. Diese Funktion übernehmen drei Slider auf der Karteikarte. Erstens, der bereits vorgestellte „Number of Keypoints Used for Estimation“, mit dem die Höhe des Balkens verän-dert werden kann. Der zweite nennt sich „Horizontal Delta X“ und addiert jeweils links oder rechts einen Deltawert zu den X-Koordinaten der Vertices der Markierung, wodurch sie sich im ganzen verbreitert. Als drittes steht ein Slider namens „Vertical Scale Y“ zur Verfügung, der die komplette Markierung vertikal skaliert. Mit Hilfe der beiden letzten Slider können evtl. abge-schnittene Teile des Objektes wieder mit eingeschlossen werden, oder auch einfach die kom-plette Maske nach außen hin erweitert werden. Für den Fall, dass die vorgeschlagene Markie-rung vollkommen falsch ist, können die Eckpunkte mit gedrückter Maustaste einzeln in der Bildebene verschoben werden. So kann eine stark verzogene Markierung mittels einiger Maus-bewegungen an die tatsächliche Kontur des Objektes angepasst werden.

Auch an dieser Stelle kann der Benutzer die verbleibenden SIFT-Keypoints weiter anpassen, indem er auf „Update Keypoints“ klickt. Dies kann sinnvoll sein, wenn eine vorgeschlagene Markierung stark bearbeitet wird und dadurch viele Keypoints außerhalb der Maske liegen.

Zusätzlich zu den bereits beschriebenen Werkzeugen stehen dem User noch einige andere Funktionen zur Verfügung, die hauptsächlich zum Ziel der Benutzerfreundlichkeit implemen-tiert wurden. Mit Hilfe der Buttons „Previous Image“ und „Next Image“ kann auf einfache Wei-se durch die Fotos navigiert werden, um die nächsten zu maskierenden Bilder auszuwählen. Mit dem Button „Reset Selection“ kann eine abgeschlossene, aber nicht zufriedenstellende manuelle Markierung rückgängig gemacht werden. Für den Fall, dass die Markierung noch nicht abge-schlossen ist, sind außerdem die mittlere und rechte Maustasten belegt, wobei per Klick auf die Mittlere, die komplette bis dahin gemachte Markierung gelöscht wird und per Klick auf die rechte Maustaste der letzte Eckpunkt in der aktuellen Markierung entfernt wird. Um die Markie-rungslinie auf verschiedenfarbigen Bildern besser erkennen zu können, kann dessen Farbe über den Button „Selection Color“, der einen Farbauswahldialog öffnet, beliebig verändert werden. Schließlich besteht außerdem mittels der Checkbox „Show Keypoints“ die Möglichkeit, die Keypoints an- und abzuschalten. Dies ist vor allem bei der manuellen Erstellung der Maskie-rung von Vorteil, da ohne Keypoints die Bilder besser erkennbar sind.

Page 71: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 59

Abbildung 39: „Edit Masks for PMVS“-Tab: Manuelle Markierung ohne Keypoints, Vorschlag einer Markierung

und editierter Vorschlag mit Keypoints.

5.3.3 Berechnen und Speichern der Masken

Ist eine Markierung manuell oder automatisch erstellt worden, so wird daraus per Klick auf den Button „Generate Mask“ eine Bildmaske berechnet. Diese kann anschließend gespeichert oder verworfen werden. Eine Maske ist im Grunde nichts anders als ein Graustufenbild welches als Alphakanal für das Originalbild benutzt wird. Schwarze Pixel der Maske werden dabei als opak und weiße als transparent betrachtet. Bezogen auf eine Markierung in ThreeDUB bedeutet das, dass der Bereich, welcher von der Markierungslinie eingeschlossen ist, mit schwarzen Pixel gefüllt werden muss und der Rest mit weißen. Da die Markierung per Definition eine geschlos-sene Linie um das zu rekonstruierende Objekt ist, muss für jede Pixelzeile im Originalbild die Anzahl der Liniensegmente, welche sie überschneiden gerade sein. Das heißt außerdem, dass in einer Pixelzeile von jeder Position aus überprüft werden kann, ob rechts davon eine gerade oder ungerade Anzahl an Liniensegmenten die Zeile schneiden. Ist die Anzahl gerade, so folgen wei-ße Pixel, da ihre Position außerhalb der Markierung sein muss, ist sie ungerade, so folgen schwarze, da sich der Pixel innerhalb der Markierung befinden muss. Auf diese Weise kann das

Page 72: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 60

komplette Bild Zeile für Zeile und Pixel für Pixel durchlaufen und so für jeden Bildpunkt ein-deutig eine Farbe bestimmt werden.

// für jede Pixelreihe ypos = imageHeight / 2; for (int i = 0; i < ImageTexture.Height; i++) { ypos -= pixel; int k; // suche nach Überschneidungen der Pixelreihe for (int j = 0; j < markVert.Length; j++) { // Überschneidung von unten nach oben if (markVert[j].Y < ypos & markVert[j+1].Y > ypos) { x = computeIntersectionPosition; xcross.Add(x); } // Überschneidung von oben nach unten if (markVert[j].Y > ypos & markVert[j+1].Y < ypos) { x = computeIntersectionPosition; xcross.Add(x); } } // sortiere die Schnittpunkte von links nach rechts xcross.Sort(); // fülle die Pixelreihe mit schwarzen oder weißen Pixeln xpos = -imageWidth / 2; for (int j = 0; j < ImageTexture.Width; j++) { // entferne Überschneidung links von xpos if (xpos > xcross[0]) xcross.RemoveAt(0); // keine Überschneidung, d.h. weiße Pixel if (xcross.Count == 0) colorData[(i*ImageTexture.Width)+j] = white; else { // wenn gerade Anzahl, dann weiße Pixel if (xcross.Count % 2 == 0) colorData[(i*ImageTexture.Width)+j] = white; // wenn ungerade Anzahl, dann schwarze Pixel else colorData[(i*ImageTexture.Width)+j] = black; } xpos += pixel; } }

Pseudocode 4: Berechnung einer Maskentextur aus einer Markierung.

Page 73: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 61

Sind so alle Pixelfarben einer Bildmaske berechnet worden, steht dem Benutzer zunächst eine Vorschaufunktion zur Verfügung, welche die Maske in vier verschiedenen Darstellungsformen zeigt:

1. Darstellung als Alphakanal in den Originalbildern. 2. Überlagerung von Originalbild und Maske. 3. Nur die Maske wird dargestellt. 4. Anzeigen des Originalbildes An dieser Stelle kann der User überprüfen, ob die errechnete Maske dem gewünschten Er-

gebnis entspricht und sie entsprechend speichern oder verwerfen. Das Speichern der neuen Maskentextur geschieht, wie in Kapitel 5.3.1 bereits beschrieben, mit Hilfe eines „StreamWri-ters“ und eines „BinaryWriters“ im PGM Format.

Abbildung 40: „Edit Masks for PMVS“-Tab: Speichern einer Maske und Vorschaufunktion.

Page 74: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 62

5.4 Multi View Stereo

Die für jedes Bild erstellten Masken, zusammen mit der Kamerakalibrierung von Bundler bilden die Grundlage für den verwendeten MVS-Algorithmus. PMVS ist in mehrere Schritte aufgeteilt, dem Suchen von Keypoints, anschließendem Zusammenführen der Keypoints im Raum und Berechnen eines Patch-Modells. Dieses wird anschließend mit PSR in ein 3D-Modell umge-wandelt. Der Ablauf wird in der Umsetzung des vorgestellten Verfahrens um die Schritte der automatischen Konvertierung der Kalibrierungsdaten und der Texturierung des ausgegebenen 3D-Modells erweitert. Alle diese Funktionen können in ThreeDUB über die Karteikarte „PMVS“ detailliert gesteuert werden.

5.4.1 PMVS

“Patch-Based Multi-View Stereo” ist die, von Furukawa umgesetzte Implementierung des in [FP07] (siehe Kapitel 3.2.2) vorgestellten Verfahrens. Es ist im Moment das einzige Programm, welches einen MVS-Algorithmus praktisch für jeden verfügbar macht und wird aus diesem Grund auch in dieser Arbeit verwendet.

PMVS ist in Form eines Kommandozeilenprogramms aus vier einzelnen EXE-Dateien umge-setzt. „affine.exe“ ist dafür zuständig, in jedem Bild „Difference of Gaussian“ und „Harris“ Keypoints zu suchen. Anschließend wird mit „match.exe“ ein räumlicher Zusammenhang zwi-schen den gefundenen Keypoints herstellt und ein Patch-Modell daraus errechnet. Dieses Mo-dell kann mit „patchviewer.exe“ in einem 3D-Fenster betrachtet werden. Der letzte Schritt in PMVS wird mit der Datei „patch2pset.exe“ ausgeführt, welche die Vertices und Normalen des Patch-Modells in einem Format abspeichert, das von der Implementierung des „Poisson Surface Reconstruction“ Algorithmus gelesen werden kann. Alle Input- und Outputdaten von PMVS werden in einem Ordnerbaum, bestehend aus vier Ordnern gespeichert. Als Eingabe werden die Fotos der zu rekonstruierenden Szene in dem Ordner „visualize“ vorausgesetzt und für jedes Bild muss in dem Ordner „txt“ eine Textdatei mit der darin gespeicherten Projektionsmatrix für die verwendete Kamera, vorhanden sein. In einem weiteren Ordner „masks“ werden die, in Ka-pitel 5.3 detailliert erklärten Masken für die Bilder gespeichert. Die Ausgabedaten werden schließlich in dem Ordner „models“ gespeichert, wobei die gefundenen Keypoints jedes Fotos in Form von „affin0“-Dateien“ und das Patch-Modell als „patc0“-Dateien gespeichert werden. Die Ausgabe von „patch2pset.exe“ wird dagegen im darrüberliegenden Ordner als „output.pset“ gespeichert.

Die Fotos der Szene und die Masken sind an dieser Stelle bereits vorhanden, das heißt, im ersten Schritt müssen die Kalibrierungsdateien für PMVS erzeugt werden. Die Projektionsmat-rizen können auf einfache Weise aus den Bundler Outputs, die in der Datei „bundler.out“ ge-speichert sind, berechnet werden.

Page 75: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 63

Zunächst wird eine sogenannte 3x3 K-Matrix aus den intrinsischen Kameraparametern er-stellt:

⎟⎟⎟

⎜⎜⎜

⎛⋅⋅−

=100

5,005,00

BildhöheBrennweiteBildbreiteBrennweite

K Anschließend wird aus der Position (Translationsvektor T) und Orientierung (Rotationsmatrix

R) der jeweiligen Kamera im Raum eine 3x4 Ptmp-Matrix gebildet:

⎟⎟⎟

⎜⎜⎜

⎛=

z

y

x

tmp

TRRRTRRRTRRR

P

333231

232221

131211 Die Projektionsmatrix P ist nun das Produkt aus K und Ptmp, multipliziert mit –1:

PP

PKP tmp

⋅−=

⋅=

1 Diese Matrix P wird für jedes Bild berechnet und schließlich in der entsprechenden Textdatei

in folgender Form gespeichert: - CONTOUR - P11 P12 P13 P14 - P21 P22 P23 P24 - P31 P32 P33 P34 Dieser Schritt der Konvertierung der Kamerakalibrierung in ein Format, welches von PMVS

lesbar ist, erfolgt in ThreeDUB über die Karteikarte „PMVS“, indem die Checkbox „Generate Camera Calibration files for PMVS“ aktiviert wird.

Der Rest der 3D-Rekonstruktion wird von PMVS selbst übernommen, wobei für jede der

exe-Dateien eine Reihe von Parametern gesetzt werden können. „affine.exe“ hat drei dieser Parameter, „num“, „root“ und „A“. „num“ gibt die Anzahl der verwendeten Bilder an, „root“ ist der Pfad zu dem Ordner, der die vier PMVS Ordner enthält und „A“ legt die Dichte der zu fin-denden Keypoints fest, wobei das Bild in Quadrate mit A Pixel Kantenlänge zerlegt und ver-sucht wird, in jedem Quadrat einen Keypoint zu finden. „match.exe“ hat dagegen sieben Para-meter, „num“, „root“, „A“, „fullin“, „theshold“, “size“ und „minImage“. Die ersten drei sind identisch mit denen von “affine.exe”, wobei hier „A“ besagt, dass versucht wird, in jedem der Quadrate einen Patch zu rekonstruieren. Mit „fullin“ wird festgelegt, ob das zu rekonstruierende Objekt in jedem Bild komplett zu sehen ist, oder nicht. Daher sind nur 1 oder 0 für diesen Para-meter zulässig. „threshold“ kontrolliert den „Photometric Consistency Score“, der zwischen –1 und 1 liegt, wobei 0 den besten Wert darstellt. Mittels „threshold“ kann festgelegt werden, ab wann ein Wert unzureichend ist und somit nicht mehr berücksichtigt werden soll. Der Parameter „size“ steuert die Kantenlänge in Pixel des Fensters innerhalb dessen der „Photometric Con-

Page 76: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 64

sistency Score“ berechnet wird und mit „minImage“ kann festgelegt werden, auf wie vielen Bildern ein Patch sichtbar sein muss, damit er als korrekt klassifiziert und damit gespeichert wird. „patch2pset.exe“ besitzt drei Parameter, „num“, „root“ und „output“. Die ersten beiden sind wiederum identisch zu denen der vorigen EXE-Dateien und „output“ gibt den Pfad inklusi-ve des Dateinamens der auszugebenden „pset“-Datei an. „patchviewer.exe“ hat dagegen nur die zwei bekannten Parameter „num“ und „root“.

Alle Teilprogramme können per Klick auf die entsprechende Checkbox auf der Karteikarte „PMVS“ in ThreeDUB aktiviert bzw. deaktiviert werden und deren Parameter mit Hilfe von Textfeldern angegeben werden.

Abbildung 41: „PMVS“-Tab.

Page 77: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 65

5.4.2 Poisson Surface Reconstruction

Wird nur PMVS ausgeführt, so besteht die Rekonstruktion der fotografierten Szene aus einem Patch-Modell. Für den vorgestellten Ansatz ist es jedoch wichtig, ein geschlossenes 3D-Modell der Szene zu erhalten. Dies geschieht, wie bereits erwähnt, mit Hilfe einer, von Michael Kazh-dan umgesetzten und frei verfügbaren Implementierung von „Poisson Surface Reconstruction“ [KBH06] (siehe Kapitel 3.3.2). Furukawa stellt in PMVS mit der EXE-Datei „patch2pset.exe“ bereits die Voraussetzung für die Benutzung von PSR bereit, da „pset“-Dateien von Kazhdans Programm gelesen werden können.

PSR ist, wie PMVS auch, ein Kommandozeilenprogramm namens „PoissonRecon.32.exe“, welches mit bis zu zehn Parametern gestartet werden kann. Für den vorliegenden Fall reichen allerdings die drei Parameter „--in<input points>“, „--out<output trinangle mesh>“ und „--depth<reconstruction depth>“ aus. „--in“ und „--out“ geben den Pfad, inklusive Dateinamen der Eingabe- bzw. Ausgabedatei an, wobei das ausgegebene 3D-Modell immer im Dateiformat PLY gespeichert wird. Mit „--depth“ kann die maximale Tiefe des, für die Rekonstruktion benutzten Octrees, gesetzt werden. Eine genauere Dokumentation der übrigen Parameter kann auf der Homepage des Autors nachgeschlagen werden. 22

In ThreeDUB wird „patch2pset.exe“ und „PoissonRecon.32.exe“ ausgeführt, wenn die Checkbox „Convert Patch-Model to 3D-Modell“ aktiviert ist.

5.4.3 Erstellen der Texturen

Der letzte Schritt in der Rekonstruktion des finalen 3D-Modells ist das Erstellen einer Textur und entsprechend das Mappen des Modells mit dieser Textur. Zu diesem Zweck wird in Three-DUB eine vereinfachte Version des in [CCS02] (siehe Kapitel 3.3.1) vorgestellten Verfahrens implementiert, wobei die letzten beiden Schritte, das Erstellen einer einzelnen Textur und der Farbabgleich über die Schnittkanten nicht ausgeführt werden.

Der erste Schritt der Texturierung ist das Einlesen des 3D-Modells. PSR gibt das Modell im Dateiformat PLY aus. PLY wurde an der Stanford University als ein einfaches Modellformat für Forschende im Bereich der CG entwickelt. Das Basisformat beinhaltet einen Header, eine Ver-texlist, also eine Liste aus Koordinatentrippeln für jeden Punkt und eine Indexlist, die jeweils drei Punkte aus der Vertexlist zu einem Polygon verknüpft. Es existieren drei Variationen dieses Basisformats, wobei der Unterschied nur in der Codierung des Datenblocks liegt. Die einfachste Version speichert die Daten im ASCII Format ab, die anderen beiden binär, in „Little Endian“ bzw. „Big Endian“ Schreibweise. Der Dateiheader ist in allen drei Fällen in ASCII geschrieben und ist folgendermaßen aufgebaut.

22 http://www.cs.jhu.edu/~misha/Code/PoissonRecon

Page 78: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 66

- ply - format binary_little_endian 1.0 - comment <Kommentare> - element vertex <Anzahl der gespeicherten Vertices> - property float x - property float y - property float z - element face <Anzahl der gespeicherten Polygone> - property list uchar int vertex_indices - end_header Die drei Einträge “property float” bedeuten hier, dass die Koordinaten der Punkte in float, al-

so als Fließkommazahl gespeichert sind. Der Eintrag „property list uchar int vertex_indices“ bedeutet, dass jedes Polygon als Liste aus Integerwerten (ganze Zahlen), welche jeweils der Nummerierung des Punktes in der Datei entsprechen, gespeichert ist. Eine detailliertere Be-schreibung der einzelnen Einträge und Möglichkeiten zur Erweiterung des PLY-Formats kann online auf der Homepage von Paul Bourke eingesehen werden. 23

PSR benutzt genau dieses Basisformat mit binär geschriebenen Datenblock. Das heißt, um es einzulesen wird, ähnlich wie bei dem PGM Bildformat bereits beschrieben wurde, zunächst der Header mit einem „StreamReader“ gelesen, um die Anzahl der gespeicherten Punkte und Poly-gone zu erhalten und anschließend der Binärblock mit einem „BinaryReader“ gelesen.

Bei diesem Lesevorgang entsteht eine Liste aus Punkten im Raum und eine Liste aus Indizes, die zusammen jedes einzelne Polygon des 3D-Modells definieren. Dies kann auch in PoP-EYE so dargestellt werden, jedoch ohne Beleuchtung, da Informationen über die Oberflächennorma-len fehlen. Das heißt folglich, dass im nächsten Schritt für jeden Vertex im Modell eine Norma-le berechnet werden muss. Dazu wird zunächst jeder Punkt mit einem Normalenvektor von Null initialisiert. Anschließend wird für jedes Polygon die Oberflächennormale, also der Vektor, der senkrecht auf der, von dem Dreieck aufgespannten Oberfläche steht, berechnet und zu den Normalen der drei Vertices, die das Polygon definieren, addiert. So entsteht für jeden Vertex ein Normalenvektor, der die Summe aller Oberflächennormalen der angrenzenden Polygone ist. Dieser Vektor wird abschließend normalisiert, das heißt, er wird auf eine Einheitslänge gekürzt, damit alle Normalen gleich lang sind. Die Oberflächennormale wird ebenfalls mit abgespei-chert, da sie später während des Aufbrechens des Modells in Mappingpatches wieder gebraucht wird.

23 http://local.wasp.uwa.edu.au/~pbourke/dataformats/ply

Page 79: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 67

// initialisiere jede Normale mit Null for (int i = 0; i < vertices.Length; i++) vertices[i].Normal = new Vector3(0, 0, 0); // berechne die Normalen for (int i = 0; i < faces.Length; i++) { // berechne die Flächennormale firstvec = vertices[indices[i*3+1]].Position - vertices[indices[i*3]].Position; secondvec = vertices[indices[i*3]].Position - vertices[indices[i*3+2]].Position; faceNormal[i] = Vector3.Cross(firstvec, secondvec); faceNormal[i].Normalize(); // addiere die Flächennormale zu jedem Vertex des Polygons vertices[indices[i*3]].Normal += faceNormal[i]; vertices[indices[i*3+1]].Normal += faceNormal[i]; vertices[indices[i*3+2]].Normal += faceNormal[i]; } // normalisiere die Normalen for (int i = 0; i < vertices.Length; i++) vertices[i].Normal.Normalize();

Pseudocode 5: Berechnung der Normalen eines 3D-Modells.

Vorerst wird darauf verzichtet, eine einzelne Textur zu erstellen, stattdessen wird das 3D-Modell in kleinere Bereiche aufgebrochen, die dann jeweils mit dem passenden Bild texturiert werden. Das heißt, der nächste Schritt zu einem vollständigen Mapping des 3D-Modells ist das Berechnen von Texturkoordinaten für jedes Bild. Dies wird umgesetzt, indem die Position jedes Vertex des Modells von Weltkoordinaten in Kamerakoordinaten umgerechnet und anschließend in die Bildebene projiziert wird, damit die Z-Koordinaten der Punkte identisch sind. Texturko-ordinaten haben die Eigenschaft, dass sie im Bereich der Textur auf Werte zwischen Null und Eins normiert sind, wobei das linke obere Eck der Textur die Koordinaten (0, 0) und das rechte untere Eck der Textur die Koordinaten (1, 1) hat. Daraus folgt nun, dass die X- und Y-Koordinaten des projizierten 3D-Modells anhand der Bilddimensionen auf eben diese Werte normiert werden. Somit entsteht für das Modell ein Multitextursystem, welches Texturkoordina-ten für jedes einzelne Bild der Szene beinhaltet.

Der Vorgang des Aufbrechens des 3D-Modells in Teilmodelle wird in mehreren Teilschritten vollzogen. Zunächst wird jedes Polygon daraufhin überprüft, auf welchen Bildern es sichtbar ist. Dazu werden für jeden Vertex in dem Polygon die im letzten Schritt errechneten Texturko-ordinaten betrachtet. Ist jeweils einer der beiden Werte kleiner als Null oder größer als Eins, so liegt der Punkt und somit auch ein Teil des Polygons außerhalb des Bildes und kann daher nicht damit texturiert werden. Gleichzeitig wird für jedes Polygon der Winkel zwischen Oberflächen-normale und Blickrichtung der Kamera auf dessen Mittelpunkt berechnet. Ist der Winkel größer als 70°, so ist es aus der jeweiligen Kameraperspektive zu schlecht sichtbar und kann ebenfalls nicht mit dem jeweiligen Bild texturiert werden. Diese beiden Faktoren werden für jede Kamera überprüft und, falls sie Beide positiv ausfallen wird der jeweilige Kameraindex in eine „View-

Page 80: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 68

list“ für das jeweilige Polygon gespeichert. Jene Liste wird im Anschluss nach Größe des Sichtwinkels sortiert und diejenige Kamera mit dem kleinsten Winkel als beste Kamera für das jeweilige Polygon gespeichert.

// berechne die Viewlist und beste Kamera für jedes Polygon for (int i = 0; i < numFaces; i++) { // überprüfe die Sichtbarkeit jedes Polygons in jeder Kamera und erstelle eine temp Viewlist mit Winkeln for (int j = 0; j < Cameras.Count; j++) { angleViewList.Add(90); if (1 > uvPos[j][faceVert[i][0]] > 0 && 1 > uvPos[j][faceVert[i][1]] > 0 && 1 > uvPos[j][faceVert[i][2]] > 0) { lookAt = facePosition[i] - Cameras[j].Position; angle = Vector3.Dot(faceNormal[i], lookAt); if (angle < 70) angleViewList[i] = angle; } } // sortiere die temp Viewlist und speichere die Indices der Kameras in die finale Viewlist tmpList = angleViewList; for (int j = 0; j < angleViewList.Count; j++) { min = tmpList.getSmallestValue(); if (min != 90) { faceViewList[i].Add(angleViewList.IndexOf(min)); angleViewList[angleViewList.IndexOf(min)] = 90; } tmpList.Remove(min); } // speichere den ersten Index der Viewlist als beste Kamera faceBestCam[i] = faceViewList[i][0]; }

Pseudocode 6: Berechnung der „Viewlists“ und besten Kamera für jedes Polygon eines 3D-Modells

Nun ist das komplette Modell auf alle Kameras aufgeteilt, wobei kein Polygon doppelt vor-handen ist und Polygone, die auf keinem Bild gut sichtbar sind, komplett entfernt wurden. Da allerdings immer nur die beste Kamera aus der Viewlist selektiert wurde, ist es sehr wahrschein-lich, dass das Modell sehr ungleichmäßig aufgeteilt ist, das heißt, dass es nur wenige große, zusammenhängende Bereiche (Mappingpatch) gibt, die dem gleichen Bild zugeordnet sind. Dies soll in den folgenden Schritten optimiert werden, indem nacheinander die Anzahl der sogenann-ten Grenzpolygone - Dreiecke, dessen umliegende Polygone verschiedenen Kameras zugeordnet sind - und die Anzahl der Mappingpatches minimiert werden.

Page 81: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 69

Zunächst werden alle Polygone im Modell in zwei Klassen eingeteilt, Grenzpolygone und in-terne Polygone. Dazu werden die jeweils umliegenden Dreiecke eines jeden Polygons betrach-tet. Sind alle der gleichen Kamera zugeordnet, so wird es als intern klassifiziert, andernfalls als Grenzpolygon. Nun werden sukzessive alle Grenzpolygone durchgegangen und überprüft, ob sich daraus ein internes Polygon erstellen lässt, indem die Kameras der umliegenden Dreiecke verändert werden. Diese beiden Schritte werden solange wiederholt, bis sich die Anzahl der Grenzpolygone nicht weiter verringern lässt. Anschließend wird für jede Kamera eine Liste aus denjenigen Polygonen erstellt, die ihr zugeordnet sind. Ist die Anzahl der Elemente in der jewei-ligen Liste kleiner als 0,5% der gesamten Anzahl an Polygonen in dem 3D-Modell, so wird versucht, die Einträge jeweils anderen Kameras zuzuordnen. Dadurch wird die Anzahl an Map-pingpatches auf ca. die Hälfte reduziert. Anschließend werden nochmals die Grenzpolygone minimiert, um die Grenzen des jeweiligen Mappingpatches zu verbessern. Schließlich wird jede Polygonteilmenge in eine eigene Vertex- und Indexlist gespeichert, sodass das Texturieren des Modells fertiggestellt ist.

// wiederhole bis die Anzahl der Grenzpolygone gleich bleibt while (borderCount != borderCountOld) { // wiederhole für alle Grenzpolygone for (int i = 0; i < borderFaces.Count; i++) { // suche alle anliegenden Polygone und die beste Kamera adjFaces = borderFaces[i].getAdjacentFaces(); for (int j = 0; j < adjFaces.Count; j++) adjFacesBestCam[j] = faceBestCam[j]; adjFacesBestCam.Sort(); int compareValue = adjFacesBestCam.getBiggestSubsetIndex; // versuche alle adjFaces in die beste Kamera zu bekommen for (int j = 0; j < adjFaces.Count; j++) { if (FaceBestCam[j] != compareValue) { for (int k = 0; k < faceViewList[j].Count; k++) { if (faceViewList[j][k] = campareValue) { faceBestCam[j] = faceViewList[j][k]; break; } } } } } // suche erneut alle Grenzpolygone im 3D-Modell borderFaces = faces.getBorderFaces(); borderCount = borderFaces.Count; }

Pseudocode 7: Minimierung der Anzahl der Grenzpolygone eines 3D-Modells.

Page 82: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 70

Damit dieses komplexe Verfahren nicht jedes Mal ausgeführt werden muss, wenn das Modell geladen wird, wird das aufgebrochene Modell permanent gespeichert. Dies geschieht in einem neu definierten Dateiformat namens DUB, welches auf dem PLY-Format basiert, aber zusätz-lich Informationen über die Vertexnormalen und Texturkoordinaten speichert. Das Format hat die Eigenschaft, dass es mit demselben Prinzip eingelesen werden kann wie PLY-Dateien, es muss nur das erste Wort im Header überprüft werden. Ist dies „ply“, so beinhaltet die Datei nur Vertexelemente und Indizes, ist es „dub“, dann sind zusätzlich Normalen und Texturkoordina-ten gespeichert. DUB besteht ebenfalls aus einem Header in ASCII Codierung und einem binä-ren Datenblock, wobei der Header etwas vereinfacht ist und folgendermaßen aussieht:

- dub - # <comment> - element vertex <Anzahl der gespeicherten Vertices> - element face <Anzahl der gespeicherten Polygone> - end_header Auf die „property“ Tags wurde bewusst verzichtet, da die Vertexelemente immer mit Fließ-

kommazahlen und die Indexelemente immer mit Integerwerten gespeichert werden. Im An-schluss an den Header werden nacheinander alle Punktkoordinaten, alle Indizes, alle Punktnor-malen und alle Texturkoordinaten binär geschrieben. Dies geschieht, ähnlich wie das Schreiben einer PGM Bilddatei, mit Hilfe eines „StreamWriters“ für den ASCII Header und eines „Bina-ryWriters“ für den binären Datenblock. Da das Modell in viele kleinere Teile aufgebrochen wurde, wird jedes dieser Teilmodelle in einer separaten Datei gespeichert. Alle DUB-Dateien werden zusammen in einem zusätzlichen Ordner namens „dub“, innerhalb der PMVS Ordner-struktur abgelegt.

Damit ist der Vorgang der 3D-Rekonstruktion einer fotografierten Szene abgeschlossen. Im nächsten Abschnitt wird detailliert erklärt, wie einzelne Komponenten in PoP-EYE dargestellt und visualisiert werden.

5.5 Visualisierung der Komponenten

In ThreeDUB können einzelne darzustellende Komponenten wie z.B. das Patch-Modell, das 3D-Modell oder eine Thumbnailbar, mit Hilfe von Checkboxen auf der Karteikarte „General“ aktiviert und deaktiviert werden. Die eigentliche Darstellung erfolgt dann im 3D-Fenster von PoP-EYE.

5.5.1 Thumbnails

Um eine bessere Übersicht über die einzelnen Fotos der Szene zu bekommen, wurde eine Vorschaufunktion in Form einer Thumbnailbar umgesetzt. Diese zeigt in einer Leiste am unte-ren Rand des 3D-Fensters mittig eine verkleinerte Version des aktuell betrachteten Bildes. Rechts und links davon werden, im Vergleich zum mittigen Bild um ein Drittel verkleinert, die nachfolgenden bzw. vorherigen Bilder der Fotoserie angezeigt. Wird mit der Maus auf eines der Vorschaubilder geklickt, so wechselt die Szene automatisch auf das jeweilige Bild. Dem User stehen außerdem rechts und links „Pfeilicons“ zur Verfügung, mit denen er jeweils ein Bild vor

Page 83: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 71

bzw. zurück navigieren oder automatisch auf das erste bzw. letzte Bild in der Szene springen kann. Mittels des Sliders „Scale Thumbnailbar“ auf der Karteikarte „General“ kann die kom-plette Vorschauleiste vergrößert und verkleinert werden, um entsprechend mehr kleinere oder weniger größere Vorschaubilder dazustellen. Diese Navigationsfunktion ist nützlich um einen besseren Überblick über die Fotoserie zu bekommen, erweist sich aber auch als sinnvoll wäh-rend die Masken für die Bilder erstellt werden (siehe Kapitel 5.3). So kann der Benutzer leicht überblicken, für welche Bilder bereits Masken erstellt wurden und ggf. schnell zu Fotos ohne Maske springen.

Abbildung 42: „General“-Tab: Thumbnailbar.

Page 84: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 72

Umgesetzt wird die Thumbnailbar mit Hilfe von „Sprites“, also 2D-Bildern, welche vor die 3D-Szene gesetzt werden. Der Slider „Scale Thumbnailbar“ definiert die Höhe des mittleren Thumbnails in Pixel und somit auch die Höhe der kleineren Vorschaubilder, die auf 2/3 dieser Höhe definiert sind. Aus den Seitenverhältnissen der einzelnen Originalbilder kann damit auch deren jeweilige Breite berechnet werden. Nun wird jeweils der zur Verfügung stehende Platz rechts und links des mittleren Thumbnails berechnet und überprüft, wie viele der kleineren Vor-schaubilder zusätzlich dargestellt werden können. Anschließend werden, entsprechend der be-rechneten Höhe und Breite, rechteckige Bereiche an den jeweiligen Positionen definiert, die dann mit den verkleinerten Originalbildern gefüllt werden. Die Ausdehnungen und Positionen dieser Rechtecke werden später zur Überprüfung der Mausposition und des Mausklicks benutzt, um zu einem angeklickten Bild zu springen.

Der Rahmen der Leiste setzt sich aus drei Teilen zusammen, einem, in der Breite skalierbaren Mittelteil und zwei Abschlussstücken rechts und links. Die Größe des Rahmens basiert wieder-um auf der vorgegebenen Höhe des mittleren Thumbnails, wobei die drei Teile entsprechend passend skaliert und positioniert werden.

5.5.2 „Fake Texturen“

Die Funktion der „Fake Texturen“ setzt zwischen die Kamera und das Originalbild eine transpa-rente und kleiner skalierte Kopie des Bildes. Sie war ursprünglich dazu gedacht, für ein untextu-riertes 3D-Modell den Eindruck einer aufprojizierten Textur zu erwecken und Details im Modell sichtbar zu machen. Nachdem jedoch der Algorithmus zum Texturieren des Modells implemen-tiert wurde, war diese Funktion überflüssig. Allerdings hat sich herausgestellt, dass durch kleine Erweiterungen in der Bedienung diese zusätzlichen Bilder ein geeignetes Instrument zum besse-ren Verständnis der Szene werden. So wurden in dem entsprechenden Bereich auf der Karteikarte zwei Checkboxen und zwei Slider hinzugefügt. Durch aktivieren der Checkbox „Show All“ werden für jede Kamera diese zusätzlichen Bilder angezeigt und per Klick auf „Show Camera(s)“ wird jedes Bild über vier Linien mit der Position der jeweiligen Kamera verbunden. Dies stellt den Kamerasichtkegel, auch Frustum genannt, dar. Die Slider „Opacity“ und „Position Between Camera and Image“ steuern dabei, wie die Namen schon aussagen, die Transparenz und die Position der zusätzlichen Bilder. So wird eine Darstellungsform, ähnlich dem in Kapitel 3.1.2 vorgestellten „Photo Explorer“ von „Photo Tourism“ erreicht.

In der praktischen Umsetzung des Verfahrens werden die „Fake Texturen“ auf einfache Wei-se erstellt, indem die Originalbilder auf zusätzliche Quads kopiert werden, die mit Hilfe der, von den Slidern übergebenen Variablen entsprechend verkleinert, entlang der Sichtachse der Kame-ras dargestellt werden.

Page 85: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 73

Abbildung 43: „General“-Tab: „Fake Texturen“.

5.5.3 Darstellung der Modelle

Nachdem die fotografierte Szene mit PMVS in ein Patch-Modell und anschließend in ein 3D-Modell umgewandelt wurde, ist es natürlich auch nötig diese auch in dem 3D-Fenster darzustel-len. Dies geschieht mittels der Checkboxen „Display Patch-Model“ und „Display 3D-Model“, wobei die Funktion dahinter so angelegt ist, dass immer nur eines der beiden Modelle angezeigt wird. Daher teilen sich beide Modelle einen Optionenbereich auf der Karteikarte. Darin werden verschiedene Anzeigearten für das jeweilige Modell angeboten. „Solid“ stellt jedes Polygon als

Page 86: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 74

geschlossene Oberfläche dar, im Gegensatz zu „Wireframe“ (Drahtgittermodell), wo nur die Kanten der Polygone dargestellt werden. Ist „Vertices“ aktiviert, so wird das Modell nur als gefärbte Punktwolke dargestellt. Mittels des Sliders „Scale Vertices“, der nur erreichbar ist, wenn auch „Vertices“ aktiviert ist, kann die Größe der einzelnen Punkte verändert werden. Au-ßerdem kann der Benutzer mit der Checkbox „Show Texture“ die Textur an- und ausschalten, mittels „Backface Culling“ die Polygonrückseiten aktivieren und deaktivieren, über „Show Complete Model“ beeinflussen, ob das komplette Modell oder nur das Teilmodel, welches der aktuellen Kamera zugeordnet ist, angezeigt werden soll und mit der Checkbox „Use Lighting“ die Beleuchtung und Schattenwurf des Modells an- bzw. ausschalten. Für die Manipulation der Beleuchtung stehen zusätzlich zwei Slider. „Specular Power“ und „Specular Color“ zur Verfü-gung. Diese beeinflussen die Stärke bzw. die Farbe der Glanzlichter auf dem Modell.

Das Anzeigen des 3D-Modells bereitet im Grunde keine großen Probleme, da im letzten

Schritt der 3D-Rekonstruktion, dem Texturieren des Modells bereits alle notwendigen Informa-tionen wie z.B. Normalen und Texturkoordinaten berechnet und in Form von DUB-Dateien (siehe Kapitel 5.3.3) gespeichert wurden. Das heißt, um das Modell anzuzeigen, müssen nur die DUB-Dateien eingelesen werden, was wiederum mit Hilfe eines „StreamReaders“ und eines „BinaryReaders“ geschieht, und die so gewonnenen Informationen in ein Array von „VertexPo-sitionNormalTextures“ eingefügt werden. Wie der Name schon sagt, ist dies ein Konstrukt, welches für jeden Punkt (Vertex) die Position, die Normale und eine Texturkoordinate spei-chert. Dies kann anschließend in dem 3D-Fenster von PoP-EYE gezeichnet werden.

Die Abbildung 44 stellt das gleiche 3D-Modell in sechs verschiedenen Darstellungsformen dar. Von links nach rechts und von oben nach unten:

1. Solid, mit Textur, mit Beleuchtung, Specular Color = 0. 2. Solid, mit Textur, mit Beleuchtung, Specular Color = 0,5. 3. Solid, ohne Textur, mit Beleuchtung, Specular Color = 0. 4. Solid, mit Textur, ohne Beleuchtung. 5. Wireframe, mit Textur, ohne Beleuchtung. 6. Vertex, mit Textur, ohne Beleuchtung. Die Darstellung des Patch-Modells ist dagegen etwas komplizierter, da es von PMVS nicht

als klassisches Oberflächenmodell gespeichert wird, sondern in Form einer Ansammlung von „patc0“-Dateien. Jede dieser Dateien ist mit einer einzelnen Kamera der Szene verknüpft und speichert nur den Teil des Patch-Modells, welches für diese Kamera rekonstruiert wurde. Eine „patc0“-Datei ist folgendermaßen aufgebaut: Die erste Zeile besteht aus einer Zahl, die dem Parameter „A“ von „match.exe“ aus dem Teilschritt der 3D-Rekonstruktion mit PMVS, ent-spricht (siehe Kapitel 5.4.1). In der zweiten Zeile steht die Anzahl, der in der Datei gespeicher-ten Patches. Anschließend wird jeder Patch durch einen eigenen Datenblock beschrieben. Dieser beginnt mit einem Header „PATCH0“. Die zweite Zeile speichert die homogene Koordinate des Patches, das heißt, es existiert eine vierte Koordinate, die in diesem Fall gleich Eins ist, da es sich um eine Position im Raum handelt. In der zweiten Zeile steht die Normale des Patches,

Page 87: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 75

ebenfalls in homogener Form, aber diesmal mit einer Null als vierte Koordinate, da es sich um einen Richtungsvektor handelt. Danach wird der „Photometric Consistency Score“ für den Patch angegeben. In den drauf folgenden vier Zeilen wird zunächst die Anzahl der Bilder genannt, auf denen die Textur an der Stelle des Patches gleichermaßen beschaffen ist und danach die Indizes dieser Bilder. Anschließend die Anzahl der Fotos, auf denen der Patch theoretisch sichtbar ist, die Texturen aber nicht konsistent sind und schließlich die Indizes dieser Bilder. Die wichtigsten Informationen sind demnach die beiden ersten Zeilen, da sie die Anzahl und Größe der Patches definieren. Zusätzlich haben in jedem Datenblock die Position und Normale des Patches die größte Bedeutung.

Abbildung 44: „General“-Tab: 3D-Modell.

Page 88: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 76

Da die „patc0“-Dateien ASCII-Codiert sind, können sie einfach mit Hilfe eines „StreamRea-ders“ eingelesen werden. So kann für jedes Bild eine Wolke aus orientierte Punkten konstruiert werden, die als Grundlage für die Darstellung des Patch-Modells dienen. Aus diesen Punktwol-ken müssen nun texturierte Patches erstellt werden. Ein Patch ist ein Quadrat mit der Kanten-länge entsprechend dem, in „match.exe“ angegebenen Parameter „A“. Das heißt, aus der Positi-on und Normalenrichtung des Patches, dem nach oben zeigenden „up-Vektor“ der Kamera und dem Parameter „A“ können eindeutig die vier Eckpunkte eines Patches im Raum berechnet werden. Diese müssen anschließend nur noch mit zwei Polygonen gefüllt werden.

Im nächsten Schritt müssen für jeden Patch Texturkoordinaten gefunden werden. Der Para-meter „A“ hat nicht nur die Eigenschaft, dass die Größe eines Patches bestimmt werden kann, man kann mit ihm auch die Ausdehnung des Patches auf der Textur berechnen. Die komplette Ausdehnung einer Textur wird in Texturkoordinaten auf den Wertebereich (0, 1) normiert. Ist also die Breite des Fotos in Pixel bekannt, so kann leicht auf die Breite des Parameters „A“ in Texturkoordinaten geschlossen werden. Nun müssen noch die Texturkoordinaten der Patchmit-telpunkte berechnet werden. Dazu wird zunächst seine Position von Welt- nach Kamerakoordi-naten umgerechnet und in die Bildebene projiziert. Dies hat zur Folge, dass dem Punkt eindeutig eine Position auf dem Bild zugeordnet werden kann. Diese Koordinaten, normiert auf (0, 1) in X- und Y-Richtung entsprechen den Texturkoordinaten des Mittelpunktes, aus denen die Eck-punkte des Patches auf der Textur berechnet werden können.

// für jede Kamera in der Szene for (int i = 0; i < Cameras.Count; i++) { float size = matchA; // für jeden Vertex in der Punktwolke for (int j = 0; j < patches[i].Count; j++) { // berechne die Koordinaten der Eckpunkte des Patches left = Vector3.Cross(patchNormal, up); upCenter = (patchUp * size / 2) + patchPosition; upLeft = upperCenter + (left * size / 2); upRight = upperCenter - (left * size / 2); lowLeft = upperLeft - (patchUp * size); lowRight = upperRight - (patchUp * size); // berechne die Texturkoordinaten des Patches projPos = getCamCoords(patches[i][j].Position); // normiere die Koordinaten auf (0,1) uvPos.X = (projPos.X + (imageWidth / 2) / imageWidth, uvPos.Y = (projPos.Y - (imageHeight / 2) / -imageHeight; // setze die Texturkoordinaten der Eckpunkte uvLowLeft = (uvPos.X - (size / 2), uvPos.Y + (size / 2)); uvUpLeft = (uvPos.X - (size / 2), uvPos.Y - (size / 2)); uvLowRight = (uvPos.X + (size / 2), uvPos.Y + (size / 2)); uvUpRight = (uvPos.X + (size / 2), uvPos.Y - (size / 2)); } }

Pseudocode 8: Berechnung der Positionen und Texturierung der Patches eines Patch-Modells.

Page 89: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 77

Die Positionen, Normalen und Texturkoordinaten jedes Patches werden abschließend, wie beim 3D-Modell auch, in ein „VertexPositionNormalTexture“ Array gespeichert. Dies kann im 3D-Fenster von PoP-EYE dargestellt werden.

Abbildung 45: „General“-Tab: Patch-Model.

Page 90: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 78

In Abbildung 45 ist das gleiche Patch-Modell in sechs verschiedenen Darstellungsformen ab-gebildet. Von links nach rechts und von oben nach unten:

1. Solid, mit Textur, ohne Beleuchtung. 2. Solid, mit Textur, ohne Beleuchtung, nur eine Kamera. 3. Solid, ohne Textur, mit Beleuchtung, Specular Color = 0. 4. Wireframe, mit Textur, mit Beleuchtung, Specular Color = 0,5. 5. Vertex, mit Textur, ohne Beleuchtung. 6. Vertex, ohne Textur, ohne Beleuchtung.

5.6 Manipulation von Modell und Bildern

In den letzten Kapiteln wurde die praktische Umsetzung aller, für die eigentliche Bildmanipula-tion vorausgesetzten Teilschritte detailliert erklärt. An dieser Stelle ist klar, wie Masken für die Fotoserie gemacht werden, wie eine 3D-Rekonstruktion der Szene erstellt wird und wie all diese Komponenten in ThreeDUB bzw. PoP-EYE dargestellt werden können. Auf dieser Basis wer-den nun die umgesetzten Möglichkeiten zur Manipulation der 3D-Szene und schließlich der Bilder vorgestellt.

5.6.1 A Priori durch Maskierung

Eine erste Möglichkeit das 3D-Modell zu verändern bzw. zu beeinflussen bietet sich schon vor der eigentlichen 3D-Rekonstruktion. Durch geschicktes Maskieren der Bilder (siehe Kapitel 5.3.2) kann verhindert werden, dass ein bestimmter Teil der Szene im 3D-Modell rekonstruiert wird. Dies entspricht einem Löschen des ausmaskierten Bereichs aus der Szene. Da aber beim Erstellen der Textur und Mappen des Modells davon ausgegangen wird, dass die komplette Szene rekonstruiert wurde, wird es in den gelöschten Bereichen zu fehlerhaften und verzerrten Texturen kommen. Aus diesem Grund wird es anschließend nötig sein das Modell manuell zu bearbeiten, um diese Fehler zu beseitigen. Zu diesem Zweck wird die Möglichkeit gegeben, das 3D-Modell im geläufigen OBJ-Dateiformat zu exportieren. Dieses Format bietet sich an, da es von den meisten gängigen 3D-Anwendungen gelesen und geschrieben werden kann. Die Ex-port- und Importfunktion in ThreeDUB wird im Folgenden detailliert erklärt.

5.6.2 Exportieren des 3D-Modells

Wie in Kapitel 4.5 bereits erläutert wurde, kann das rekonstruierte 3D-Modell auf zwei Arten editiert werden - manuell und automatisch in ThreeDUB. Die manuelle Manipulation des Mo-dells findet in einer externen 3D-Software statt, wozu es nötig ist, die Rekonstruktion in ein gängiges 3D-Format zu exportieren und nach der Manipulation wieder zu importieren. Das ge-wählte Format ist OBJ. Es ist in ASCII codiert und somit leicht umsetzbar, außerdem wird es von einer breiten Masse an 3D-Anwendungen unterstützt. Die Export- und Importfunktion ist in ThreeDUB über die Karteikarte „Edit Patch-Model / 3D-Model“ erreichbar und wird mit Hilfe der Buttons „Export as OBJ“ und „Import OBJ“ ausgeführt.

OBJ-Dateien können sehr vielfältige 3D-Informationen speichern, darunter auch „free-form curves“ und „free-form surfaces“ in Form von Bezier, B-Spline, NURB, etc. Kurven und Ober-

Page 91: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 79

flächen, sowie Informationen über Beleuchtungs- und Renderattribute. Der vorliegenden Fall beschränkt sich jedoch auf das Speichern von klassischen Geometrieinformationen aus Vertices, Normalen und Texturkoordinaten. Informationen über benutzte Texturen und Materialdefinitio-nen des 3D-Modells werden in einer zweiten Datei mit der Endung MTL gespeichert. Eine typi-sche OBJ Datei ist folgendermaßen aufgebaut: Die erste Zeile verknüpft das Modell mit einer MTL-Datei in der Form „mtllib <Name der MTL-Datei>“. Danach wird der Objektname der folgenden Geometrie in der Form „g <Name>“ festgelegt. Anschließend werden die Raumkoor-dinaten aller Punkte des 3D-Modells mit „v <X Y Z>“, je in einer Zeile gespeichert. Die Norma-len folgen danach in der Form „vn <X Y Z>“ und anschließend die Texturkoordinaten in der Schreibweise „vt <U V>“. In der darauf folgenden Zeile wird das benutzte Material aus der MTL-Datei mittels „usemtl <Name des Materials in der MTL-Datei>“ angegeben. Die einzel-nen Polygone werden danach in Form einer Indexliste gespeichert. Jedes Polygon besteht aus drei Vertices, wobei für jeden Vertex der Index in Form eines Tripels aus Vertexposition, Nor-male und Texturkoordinate angegeben wird: „f <v0/vn0/vt0 v1/vn1/vt1 v2/vn2/vt2>“. Da eine ein-zelne OBJ-Datei mehrere Modelle speichern kann, wird dieser Block für jedes zu speichernde Objekt wiederholt.

Die entsprechende MTL-Datei ist ebenfalls sehr variabel hinsichtlich der gespeicherten In-formationen über die verwendeten Materialien. So können verschiedenste Attribute bezüglich Textur, Farbe, Beleuchtung, Reflektionen, etc. angegeben werden. Die in ThreeDUB verwende-ten Informationen beschränken sich jedoch auf das Wesentlichste und führen zum folgenden Aufbau der MTL-Datei: Die erste Zeile speichert den Namen des Materials in der Form „newmtl <Name>“. Anschließend werden in je einer Zeile Informationen über die Farben der Beleuchtung gespeichert: „Ka <r g b>“ definiert die Farbe des Umgebungslichtes (ambient color), „Kd <r g b>“ die Farbe der Textur (diffuse color) und „Ks <r g b>“ die Farbe der Glanz-lichter (specular color). Anschließend wird mittels „illum <n>“ die Art der Beleuchtung des Materials festgelegt, wobei n gleich 1 bedeutet, dass das Material nicht beleuchtet ist und n gleich 2 aussagt, dass eine Beleuchtung und somit Glanzlichter vorhanden sind. Die nächste Zeile definiert die Stärke dieser Highlights mit „Ns <specular Power>“. Abschließend wird über „map-Kd <Name der Textur>“ die Textur des Materials festgelegt. Wie eine OBJ-Datei auch, können innerhalb einer MTL-Datei mehrere Materialien definiert werden, indem der be-schriebene Bock mehrmals wiederholt wird. Über den Namen des Materials kann das ge-wünschte Material in der zughörigen OBJ-Datei eindeutig zugeordnet werden. Eine detaillierte-re Beschreibung der einzelnen Einträge und aller zusätzlichen Informationen, die im OBJ- und MTL-Format gespeichert werden können, ist online auf der Homepage von Paul Bourke abruf-bar. 24

Die Informationen über die Beleuchtung der Materialien ist im Grunde für ThreeDUB nicht notwendig, da diese Faktoren über die Karteikarte „General“ (siehe Kapitel 5.5.3) in Laufzeit angepasst werden. Allerdings sind sie für die Darstellung des Modells in einem externen Pro-gramm wichtig und werden daher trotz allem mit gespeichert.

24 http://local.wasp.uwa.edu.au/~pbourke/dataformats/obj http://local.wasp.uwa.edu.au/~pbourke/dataformats/mtl

Page 92: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 80

Da OBJ- und MTL-Dateien ASCII codiert sind, können sie einfach mit Hilfe eines „StreamWriters“ geschrieben und mittels eines „StreamReaders“ wieder eingelesen werden. Nachdem ein modifiziertes Modell in ThreeDUB importiert wurde, wird es intern wieder in Form von DUB-Dateien (siehe Kapitel 5.4.3) abgespeichert, damit es den in Kapitel 5.5.3 defi-nierten Standards für die Darstellung im 3D-Fenster von PoP-EYE entspricht.

5.6.3 Editieren der Modelle

Neben der Export- und Importfunktion bietet ThreeDUB einige einfache Werkzeuge, um das 3D-Modell und das Patch-Modell direkt zu verändern. Diese beschränken sich auf das Löschen einzelner Patches oder, im Fall des 3D-Modells, einzelner Vertices. Aktiviert werden sie über die Checkboxen „Delete Patches from Patch-Model“ bzw. „Delete Vertices from 3D-Model” auf der Karteikarte “Edit Patch-Model / 3D-Model”. Da die Werkzeuge für Patch- und 3D-Modell identisch sind, teilen sie sich einen gemeinsamen Optionenbereich, der so angelegt ist, dass immer nur eine der Checkboxen aktiviert sein kann.

Wird auf eine der Checkboxen geklickt, so wird das entsprechende Modell geladen und in Form einer farbigen Punktwolke dargestellt. Andere Darstellungsmöglichkeiten werden nicht angeboten, da das Löschen von Punkten im Vordergrund steht. Die erste Möglichkeit die dem Benutzer zur Verfügung steht basiert auf Masken, wobei hier vorausgesetzt wird, dass die Mas-ken nicht für die Rekonstruktion des Modells benutzt wurden (siehe Kapitel 5.3). Mittels der beiden Buttonpaare „Crop Complete Model with the Mask“ und „Crop the Modelpart Associa-ted to the Mask“ kann das Modell mit den Masken beschnitten werden, das heißt, alle Punkte, die außerhalb des maskierten Bereichs liegen, werden gelöscht. Dies kann auf zwei Arten ge-schehen, im ersten Fall wird das komplette Modell mit der aktuellen Maske beschnitten und im zweiten Fall nur das Teilmodell, welches mit der Maske bzw. der Kamera verknüpft ist. Zusätz-lich wird mit den Buttons „Crop Current“ und „Crop All“ bestimmt, ob dieser Schritt nur für die aktuelle Sichtkamera, oder für alle in der Szene vorhandenen Kameras ausgeführt werden soll.

// gehe jeden Punkt im Modell durch for (int i = 0; i < vertices.Length; i++) { // berechne die Farbe des Punktes auf der Maske vertColor = maskData.getColorAt(pixelPos[i]); // wenn die Farbe schwarz ist, speichere den Punkt if (vertColor < 127) { tempVerts.Add(vertices[i]); tempPixelPos.Add(pixelPos[i]); } } // kopiere die temporären Arrays zurück vertices = new VertexPositionColor[tempVerts.Count]; tempVerts.CopyTo(vertices); pixelPos = new Vector2[tempPixelPos.Count]; tempPixelPos.CopyTo(pixelPos);

Pseudocode 9: Beschneiden eines Modells mit einer Maske.

Page 93: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 81

Wird die Checkbox „Delete Single Vertices“ aktiviert, so kann der User im 3D-Fenster per Mausklick einzelne Punkte löschen. Dazu wird der jeweilige Punkt, sobald sich der Mauszeiger über ihm befindet, rot markiert, damit der Benutzer genau erkennen kann, welcher Vertex in Frage kommt. Mittels eines Klicks wird der markierte Punkt komplett aus der Vertexliste des Modells gelöscht. Um manuell ganze Bereiche zu löschen, steht dem User außerdem eine Mar-kierungsfunktion, ähnlich der zum Erstellen von Masken, zur Verfügung. Ist die Checkbox „De-lete Selected Group of Vertices“ aktiviert, so kann der Benutzer im 3D-Fenster eine Linie zie-hen und sobald sie geschlossen wird, werden alle Punkte, die sich innerhalb dieser Markierung befinden, gelöscht.

Abbildung 46: „Edit Patch-Model / 3D-Model“-Tab: Oben: Original und beschnittenes Patch-Modell.

Unten: Original und beschnittenes 3D-Modell mit Markierungslinie.

Wurden auf diese Weise bestimmte Regionen des Modells gelöscht, so kann das veränderte Modell mit Hilfe der Buttons „Save Patch-Model“ und „Save 3D-Model“ gespeichert werden. Soll ein editiertes Patch-Modell gespeichert werden, so werden aus den noch verbleibenden Punkten neue „patc0“-Dateien erstellt und gleichzeitig von dem originalen Patch-Modell eine Sicherungskopie gespeichert. Wird auf den Button „Save 3D-Model“ geklickt, so wird zunächst aus den nicht gelöschten Punkten eine „pset“-Datei erstellt, welche nur die Positionen und Nor-

Page 94: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 82

malen der Vertices speichert und anschließend das Programm zur „Poisson Surface Reconstruc-tion“ ausgeführt, um daraus wieder ein geschlossenes 3D-Modell zu generieren. Damit das so entstandene PLY-Modell wieder in PoP-EYE darstellbar ist, wird es abschließend mittels des in Kapitel 5.4.3 vorgestellten Verfahrens erneut aufgebrochen, neu texturiert und in Form von DUB-Dateien gespeichert. Aus diesem Grund wird es in den meisten Fällen nötig sein, das Mo-dell anschließend als OBJ zu exportieren und in einer externen 3D-Software weiter zu bearbei-ten, da bei der erneuten Konstruktion der DUB-Dateien die gelöschten Bereiche meist falsch bzw. verzerrt texturiert werden.

Die Abbildung 46 zeigt links die Karteikarte „Edit Patch-Model / 3D-Model“. Daneben, ist in der oberen Zeile das originale Patch-Modell und ein, mit den Masken beschnittenes Patch-Modell abgebildet. Darunter das originale 3D-Modell und die beschnittene Version inklusive einer Markierungslinie für das Löschen einer Gruppe von Punkten.

5.6.4 Übertragen der Änderungen in die Bilder

Nachdem das 3D-Modell, manipuliert wurde, müssen diese Veränderungen in die Originalbilder übertragen werden. Auch hier stehen dem Benutzer zwei verschiedene Verfahren zur Verfü-gung, ein einfacher Verlauf entlang der Ränder des neuen Bereiches, und mittels einer frei ver-fügbaren Implementierung von „Poisson Seamless Cloning“ aus dem in [PGB03] vorgestellten Verfahren. Mit Hilfe der Checkboxen „Blend with Linear Transition“ und „Use ‚Poisson Seam-less Cloning’“ auf der Karteikarte „Modify Images“ kann zwischen den beiden Möglichkeiten gewählt werden. In beiden Fällen muss der User für jedes zu verändernde Bild der Szene zu-nächst die Region markieren, in die ein neuer Bereich eingepasst werden soll. Wünschenswert wäre eine automatische Selektierung der veränderten Regionen auf den Bildern, jedoch war die Umsetzung dieser Automatisierung in der vorliegenden Arbeit aus Komplexitätsgründen nicht möglich.

Die Markierung des veränderten Bildbereiches verläuft wiederum ähnlich wie das Zeichnen einer Maske (siehe Kapitel 5.3.2), indem der Benutzer eine geschlossene Linie entlang der Grenze der Region zieht. Zur besseren Navigation und Übersichtlichkeit stehen die Buttons „Previous Image“, „Next Image“, „Reset Region(s)“ und „Selection Color“ zur Verfügung, wobei mit den beiden ersteren durch die Bilder der Szene navigiert werden kann, mit „Reset Region(s)“ eine unvollständige bzw. falsche Markierung oder ein falsch modifiziertes Bild zu-rückgesetzt und mittels des letzten Buttons die Farbe der Markierungslinie geändert werden kann. Ist „Blend with Linear Transition“ ausgewählt, so kann der Benutzer mit dem Slider „De-fine Width of the Blendingboarder“ die Breite des Verlaufs entlang der Ränder variieren. Per Klick auf den Button „Preview Image“ wird das ausgewählte Verfahren auf die markierte Regi-on im aktuellen Bild angewendet und das manipulierte Bild im 3D-Fenster dargestellt. Wird anschließend auf „Save Image“ geklickt, so kann der Benutzer das manipulierte Bild als JPG-Datei auf dem Datenträger speichern.

Page 95: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 83

Abbildung 47: „Modify Images“-Tab.

Wird auf den Button „Preview Image“ geklickt, so wird zunächst eine Maske, basierend auf der markierten Region erstellt und die Grenze zwischen schwarzen und weißen Pixeln entspre-chend dem Wert des Sliders übergeblendet. Bei Verwendung von „Poisson Seamless Cloning“ ist dieser Wert immer gleich Null. Nun wird das modifizierte 3D-Modell aus der exakt gleichen Kameraposition und -orientierung in eine, den Dimensionen des Originalbildes entsprechenden Textur gerendert und zusammen mit der Maske zwischengespeichert. So entstehen drei Bilder, das Originalbild, die Maske und die gerenderte 3D-Szene. Diese müssen anschließend zusam-mengefügt werden, wobei hier der wesentliche Unterschied zwischen den beiden möglichen Verfahren liegt. Ist „Blend with Linear Transition“ ausgewählt, wird die Maske als Basis für das Zusammenführen genutzt. Es wird ein komplett neues Bild erstellt, wobei für jeden Pixel auf-grund der Pixelfarbe der Maske entschieden wird, zu welchen Teilen die Pixelfarben des Origi-nalbildes und des Renderbildes gemischt werden. Ist die Farbe der Maske schwarz, so wird zu 100% das Originalbild und zu 0% das Renderbild verwendet, ist sie weiß, so ist das Verhältnis umgekehrt. Auf diesem Weg definiert jede Graustufe in der Maske ein Mischverhältnis der Far-ben der beiden Bilder und somit einen Übergang zwischen Original und Manipulation. Ist „use Poisson Seamless Cloning’“ ausgewählt, so wird eine, von Tommer Leyvand implementierte, vereinfachte Version von „Poisson Image Editing“ verwendet. Sie besteht aus einem Komman-dozeilenprogramm namens „pdediting.exe“, welches als Inputparameter das Originalbild, eine Maske und das Renderbild hat. Ausgabe ist ein verändertes Originalbild in das an der maskier-ten Position das Renderbild farblich und saumlos eingepasst wurde.

Page 96: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

5 Umsetzung – Seite 84

Abbildung 48: Originalbild, Masken und manipulierte Bilder. Links: Verlauf. Rechts: „Poisson Cloning“.

Page 97: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

6 Ausblick und Diskussion

Das in dieser Arbeit vorgestellte Verfahren zeigt, dass 3D-unterstützte Bildmanipulation mit Hilfe von aktuellen sota Ansätzen aus den Bereichen Bildmanipulation und 3D-Rekonstruktion möglich und umsetzbar ist. Der Vorteil im Vergleich zu klassischer 2D-Bildmanipulation liegt darin, dass sich der Benutzer besser in den wirklichen dreidimensionalen Inhalt der fotografier-ten Szene versetzen und somit realistischere Manipulationen erstellen kann. Jedoch hängt die Qualität der manipulierten Fotos maßgeblich von der Qualität der 3D-Rekonstruktion der Szene ab, was ganz neue Anforderungen an die originalen Bilder stellt.

6.1 Aktuelle Grenzen

Klassische Bildmanipulation, wie sie in Kapitel 2.1 vorgestellt wurde, kann auf jedes beliebige Bild angewendet werden. Da es bei der 3D-unterstützten Bildmanipulation in dieser Arbeit not-wendig ist, die komplette Szene als 3D-Modell zu rekonstruieren, werden an die Originalbilder ganz bestimmte Voraussetzungen gestellt (siehe Kapitel 3.2). Zusätzlich wird verlangt, dass viele Fotos von der unveränderten Szene existieren. All dies schränkt die Anwendbarkeit dieses Verfahrens ein, da bereits bei der Akquirierung der Bilder auf diverse Faktoren geachtet werden muss.

Ein ganz wesentlicher Qualitätsfaktor innerhalb des Ablaufs 3D-unterstützter Bildmanipula-tion ist die 3D-Rekonstruktion der fotografierten Szene. Diese stützt sich auf Multi View Stereo Verfahren, die bei weitem noch nicht die Qualität von Laserscannern oder „von Hand“ Model-lierungen aufweisen. In dieser Arbeit wird dafür die frei verfügbare PMVS Software von Furu-kawa benutzt (siehe Kapitel 3.2.2). Diese liefert zwar für, unter Laborbedingungen geschossene Fotos gute Ergebnisse, stößt jedoch schnell an ihre Grenzen, wenn die Bilder „in freier Wild-bahn“ gemacht wurden. Hier bleibt zu hoffen, dass zukünftige Versionen qualitativ hochwerti-gere Ergebnisse liefern und dass evtl. auch andere Autoren funktionierende Implementierungen ihrer Ansätze zur Verfügung stellen.

Ein weiterer Nachteil des vorgestellten Verfahren ist die lange Laufzeit der 3D-Rekonstruktion. Kann bei klassischen Ansätzen zur Bildmanipulation innerhalb von wenigen Minuten ein überzeugendes Ergebnis produziert werden, so muss bei der 3D-unterstützen Bild-manipulation als erstes ein aufwändiger Algorithmus zur Erstellung des 3D-Modells ausgeführt werden, der auf aktuellen Computern durchaus mehrere Stunden in Anspruch nehmen kann. Auch die Weiterverarbeitung des 3D-Inhaltes ist zum Einen mit großen Datenmengen der sehr detailreichen 3D-Modelle verbunden und zum Anderen wird leistungsfähige Hardware voraus-gesetzt, um diese effizient darzustellen und manipulieren zu können.

Page 98: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

6 Ausblick und Diskussion – Seite 86

Im Vergleich zu gängigen Bildmanipulationsmethoden sind auch die Manipulationsmöglich-keiten, die dieser Ansatz bietet, recht eingeschränkt. Es wird von dem Benutzer verlangt, dass er sich mit 3D-Anwendungen auskennt und mit dem allgemeinen Konzept von 3D-Modellierung vertraut ist. Dies steht im Gegensatz zu aktuellen Verfahren, die sich auf pure Bildverarbeitung beschränken und dadurch mehr Spielraum für - unter Umständen im 3D-Raum unmögliche - Veränderungen zulassen.

6.2 Möglichkeiten zur Optimierung der Ergebnisse

In der vorliegenden Arbeit wurde das Konzept der 3D-unterstützten Bildmanipulation (siehe Kapitel 4) auf das Wesentlichste reduziert. So lässt der Ablauf „Originalbilder Kalibrierung

3D-Rekonstruktion Manipulation in 3D Übertragung in die Originalbilder manipu-lierte Bilder“ nicht viel Spielraum für Verbesserungen. Die, in den einzelnen Teilschritten ver-wendete Software ist dagegen nur ein Abbild aktuell verfügbarer Implementierungen und kann durchaus weiter ergänzt und verfeinert werden.

Bei der Akquirierung der Fotos einer Szene soll bewusst auf kostenintensive Hardware ver-zichtet werden, damit der Ansatz quasi für Jedermann umsetzbar ist. Jedoch ist die Benutzung einer qualitativ hochwertigen Digitalkamera durchaus sinnvoll, da dadurch die Bildqualität und Farbechtheit gesteigert werden kann. Dies ist nicht nur bei der 3D-Rekonstruktion von Vorteil, sondern spiegelt sich auch in der Qualität der erstellten Texturen wieder.

Das, für den Teilschritt der Kalibrierung gewählte Bundler Tool stellt ein gut funktionieren-des Softwarepaket für die Kamerakalibrierung von, nicht unter Laborbedingungen hergestellten Bildern dar. Auch wenn hier die Qualität der Kalibrierung noch verbessert werden kann, so ist diese mit der aktuellen Version schon vollkommen ausreichend. Im Moment können bessere Ergebnisse nur mit weitaus komplizierteren Methoden und der Benutzung von Kalibrierungs-boards etc. erreicht werden. Da dies allerdings das Erstellen der Bilderserie beträchtlich er-schwert, soll von derartigen Ansätzen zur Qualitätsverbesserung abgesehen werden.

Der Teilschritt der 3D-Rekonstruktion lässt jedoch enorme Verbesserungsmöglichkeiten zu. Je akkurater und detaillierter das aus den Bildern erstellte 3D-Modell ist, desto besser werden auch die manipulierten Bilder sein. Die, an dieser Stelle benutzte PMVS Software funktioniert zwar, weist jedoch bei der Qualität der Rekonstruktionen Verbesserungspotential auf. Durch die Benutzung verschiedener Verfahren für die unterschiedlichen Szenenarten (siehe Kapitel 3.2) kann ebenfalls die Qualität des jeweiligen 3D-Modells verbessert werden. Dafür müssten jedoch die Autoren dieser Ansätze funktionierende Implementierungen bereitstellen, oder die Verfah-ren müssten selbst umgesetzt werden, was allerdings in den meisten Fällen sehr aufwändig ist.

Die vorgestellten Manipulationsschritte sind derart allgemein gehalten, dass hierbei die Qua-lität der Ergebnisse hauptsächlich vom Benutzer beeinflusst wird. Aktuell verfügbare 3D-Software ist so vielseitig, dass, sobald ein rekonstruiertes 3D-Modell in ein gängiges Format exportiert wird, beinahe jegliche erdenkliche Art der Manipulation bewerkstelligt werden kann. Einzig beim Erstellen des Renderbildes der manipulierten 3D-Szene, welches anschließend in den veränderten Bildbereich eingepasst wird, könnten andere Verfahren zur Berechnung der Beleuchtung erarbeitet werden. Dies ist relevant, um einen möglichst hohen Grad an Realismus

Page 99: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

6 Ausblick und Diskussion – Seite 87

für das manipulierte Bild zu erhalten. Für das Einpassen des neuen Bildstückes eignet sich das benutzte Verfahren des „Poisson Seamless Cloning“ sehr gut, wobei es in vielen Fällen auch ausreicht, entlang der Grenzlinie überzublenden (siehe Kapitel 5.6.4).

6.3 Erweiterungsmöglichkeiten in PoP-EYE

Die praktische Umsetzung des Ansatzes der 3D-unterstützten Bildmanipulation in Form des ThreeDUB Plugins für PoP-EYE ist ein erster Beweis dafür, dass der Ansatz funktioniert. Je-doch wurden einige Teilschritte vereinfacht umgesetzt, was noch Raum für Erweiterungen zu-lässt.

Der Schritt des Kalibrierung wird vorausgesetzt, um die Szene überhaupt in PoP-EYE zu la-den. Das heißt, Bundler muss vorher separat gestartet werden. Dieser Schritt kann durchaus auch innerhalb des Programms verwirklicht werden, sodass nur eine Auswahl an Bildern gela-den werden muss, anschließend die Kalibrierung automatisch berechnet und die Szene sofort in PoP-EYE dargestellt wird.

Beim Erstellen der Masken für den PMVS-Algorithmus wurde schon im Kapitel 5.3 darauf hingewiesen, dass es ursprünglich geplant war, dies mit Hilfe der visuellen Hülle umzusetzen. Das würde die Benutzung wesentlich erleichtern, weil nicht für jedes Bild einzeln eine Maske gezeichnet werden muss, sondern diese mit Hilfe des Modells der visuellen Hülle automatisch generiert werden.

Eine zusätzliche Erweiterungsmöglichkeit besteht darin, anstatt PMVS noch andere MVS-Algorithmen zu integrieren. Jedoch sind, wie bereits in den vorigen Abschnitten erwähnt wurde, keine anderen Implementierungen verfügbar und die eigene Umsetzung derartiger Verfahren ist sehr aufwändig. Im zweiten Teil der 3D-Rekonstuktion wurde ein vereinfachtes Verfahren zur Texturerstellung umgesetzt (siehe Kapitel 5.4.3). Dies ist keine optimale Lösung, da der Farb-abgleich entlang der Schnittkanten nicht umgesetzt und keine eigenständige neue Textur aus den Bildern erstellt wird.

Zur Manipulation des 3D-Modells wäre es denkbar, noch weitere Werkzeuge zu integrieren. Jedoch bietet die umgesetzte Export- und Importfunktion die wohl größten Manipulationsmög-lichkeiten. Bei dem Schritt des Auswählens der Region, in welche das neue Bildstück einge-passt werden soll, gibt es noch Raum für Erweiterungen. In der Umsetzung muss der Benutzer für jedes Bild den Bereich einzeln markieren, was recht zeitintensiv ist, wenn beispielsweise die komplette Bildserie gleichermaßen manipuliert werden soll. Hier könnte zusätzlich ein Verfah-ren erarbeitet werden, welches die veränderten Regionen automatisch erkennt und anschließend alle Bilder im manipulierten Zustand zeigt.

Page 100: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

7 Literatur- und Quellenverzeichnis

[10wor] 10 News photos that took retouching too far. http://www.10000words.net/2009/05/10-news-photos-that-took-photoshop-too.html Abgerufen am 20.07.2009.

[AS07] Shai Avidan, Ariel Shamir: Seam carving for content-aware image resizing. In Proceedings of ACM SIGGRAPH 2007. New York, NY, USA, 2007. ACM.

[AUGA07] Pierre Alliez, Giuliana Ucelli, Craig Gotsman and Marco Attene. Recent Advances in Remeshing of Surfaces. In Shape Analysis and Structuring, pages 53-82, Berlin/Heidelberg, Germany, 2007. Springer-Verlag.

[bay] Bild: http://upload.wikimedia.org/wikipedia/commons/4/4f/Bayard%2C_Hippolyte_1801-1887_-_Selfportrait_as_a_Drowned_man_1840.jpg Abgerufen am 20.07.2009.

[BKBH07] Matthew Bolitho, Michael Kazhdan, Randal Burns and Hugues Hoppe. Multilevel streaming for out-of-core surface reconstruction. In Proceedings of the fifth Eurographics symposium on Geometry processing, Pages 69-78, Aire-la-Ville, Switzerland, 2007. Eurographics Association.

[BL05] M. Brown and D. G. Lowe. Unsupervised 3D Object Recognition and Reconstruction in Unordered Datasets. In Proceedings of the Fifth International Conference on 3-D Digital Imaging and Modeling, Pages 56-63, Washington, DC, USA, 2005. IEEE Comupter Society.

[BSCB00] Marcelo Bertalmio, Guillermo Sapiro, Vincent Caselles and Coloma Ballester. Image inpainting. In Proceedings of the 27th annual conference on Computer graphics and interactive techniques, pages 417-424, New York, NY, USA, 2000. ACM.

[BVZ01] Y. Boykov, O. Veksler, R. Zabih. Fast approximate energy minimization via graph cuts. In IEEE Transactions on Pattern Analysis and Machine Intelligence, pages 1222-1239, Washington, DC, USA, 2001. IEEE Comupter Society.

[CCS02] M. Callieri, P. Cignoni and R. Scopigno. Reconstructing textured meshes from multiple range + rgb maps. In 7th International fall workshop on vision, modeling, and visualization 2002, pages 419-426, Erlangen, Germany, 2002. IOS Press.

[CL96] Brian Curless and Marc Levoy. A volumetric method for building complex models from range images. In Proceedings of the 23rd annual conference on Computer graphics and interactive techniques, Pages 303-312, New York, NY, USA, 1996. ACM.

[Coir] Cooliris Inc. http://www.cooliris.com/company Abgerufen am 20.07.2009

[CPT04] A. Criminisi, P. Perez and K. Toyama. Region filling and object removal by exemplar-based image inpainting. In IEEE Transactions on Image Processing, pages 1200-1212, Washington, DC, USA, 2004. IEEE Comupter Society.

[CVHC08] N.D.F. Campbell, G. Vogiatzis, C. Hernández and R. Cipolla. Using Multiple Hypotheses to Improve Depth-Maps for Multi-View Stereo. In Proc. 10th European Conference on Computer Vision, pages 766-779, 2008.

[DaLa] David Laserscanner. http://www.david-laserscanner.com Abgerufen am 20.07.2009.

Page 101: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

[DCY03] Iddo Drori, Daniel Cohen-Or and Hezy Yeshurun. Fragment-based image completion. In Proceedings of ACM SIGGRAPH 2003, Pages 303-312, New York, NY, USA, 2003. ACM.

[DMiP] Digital Michelangelo Project. http://www-graphics.stanford.edu/projects/mich Abgerufen am 20.07.2009.

[ESPI] einestages Zeitgeschichten auf SPIEGEL ONLINE: Finden Sie die Fehler! http://einestages.spiegel.de/external/ShowTopicAlbumBackground/a2344/l4/l0/F.html#featuredEntry und http://einestages.spiegel.de/external/ShowTopicAlbumBackground/a2344/l5/l0/F.html#featuredEntry Abgerufen am 20.07.2009.

[FB81] Martin A. Fischler and Robert C. Bolles. Random sample consensus: a paradigm for model fitting with applications to image analysis and automated cartography. In Communications of the ACM, Pages 381-395, New York, NY, USA, 1981. ACM.

[FCSS09] Yasutaka Furukawa, Brian Curless, Steven M. Seitz and Richard Szeliski. Manhattan-world Stereo. To appear in Computer Vision and Pattern Recognition, June 2009, http://www.cs.washington.edu/homes/furukawa/resume.html Abgerufen am 20.07.2009

[FJ05] Matteo Frigo and Steven G. Johnson. The Design and Implementation of FFTW3. In Proceedings of the IEEE, pages 216-231, Washington, DC, USA, 2005. IEEE Comupter Society. online: http://www.fftw.org Abgerufen am 20.07.2009

[FP06] Yasutaka Furukawa and Jean Ponce. High-Fidelity Image-Based Modeling. Technical Report 2006, http://www.cs.washington.edu/homes/furukawa/resume.html Abgerufen am 20.07.2009

[FP07] Y. Furukawa and J. Ponce. Accurate, Dense, and Robust Multi-View Stereopsis. In CVPR 2007, IEEE Conference on Computer Vision and Pattern Recognition, pages 1-8, Washington, DC, USA, 2007. IEEE Comupter Society.

[GCS06] Michael Goesele, Brian Curless and Steven M. Seitz. Multi-View Stereo Revisited. In Proceedings of the 2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition - Volume 2, pages 2402-2409, Washington, DC, USA, 2006. IEEE Comupter Society.

[GSC+07] M. Goesele, N. Snavely, B. Curless, H. Hoppe and S.M. Seitz. Multi-View Stereo for Community Photo Collections. In IEEE 11th International Conference on Computer Vision, pages 1-8, Washing-ton, DC, USA, 2007. IEEE Comupter Society.

[HCLT07] Huang Ting, Shifeng Chen, Jianzhuang Liu and Xiaoou Tang. Image inpainting by global structure and texture propagation. In Proceedings of the 15th international conference on Multimedia, Pages 517-520, New York, NY, USA, 2007. ACM.

[HE07] James Hays, Alexei A. Efros: Scene completion using millions of photographs. In ACM SIGGRAPH 2007 papers. New York, NY, USA, 2007. ACM.

[HEF04] Carlos Hernández Esteban and Francis Schmitt. Silhouette and stereo fusion for 3D object modeling. In Computer Vision and Image Understanding archive, Volume 96, Issue 3, Pages 367-392, New York, NY, USA, 2004. Elsevier Science Inc.

[HerRe] Carlos Hernández Esteban. Research on 3D Object Modelling. http://www.carlos-hernandez.org/research.html Abgerufen am 20.07.2009.

[HG97] P. Heckbert and M. Garland. Survey of Polygonal Surface Simplification Algorithms. In Siggraph 97 Course Notes, New York, NY, USA, 1997. ACM Press.

[HVC07] C. Hernandez, G. Vogiatzis and R. Cipolla. Probabilistic visibility for multi-view stereo. In IEEE Conference on Computer Vision and Pattern Recognition, pages 1-8, Washington, DC, USA, 2007. IEEE Comupter Society.

[Jam80] André Jammes: Hippolyte Bayard: ein verkannter Erfinder und Meister der Photographie. Frank-furt/Main, Luzern, 1980. Bucher.

Page 102: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

[Joh09] Erik Johansson: Photo & Retouch. http://www.alltelleringet.com Abgerufen am 20.07.2009.

[Kaz05] Michael Kazhdan. Reconstruction of solid models from oriented point sets. In Proceedings of the third Eurographics symposium on Geometry processing, Aire-la-Ville, Switzerland, 2005. Eurographics As-sociation.

[KBH06] Michael Kazhdan, Matthew Bolitho and Hugues Hoppe. Poisson surface reconstruction. In Proceed-ings of the fourth Eurographics symposium on Geometry processing, Pages 61-70, Aire-la-Ville, Swit-zerland, 2006. Eurographics Association

[KKDH07] Michael Kazhdan, Allison Klein, Ketan Dalal and Hugues Hoppe. Unconstrained isosurface extrac-tion on arbitrary octrees. In Proceedings of the fifth Eurographics symposium on Geometry process-ing, Pages 125-133, Aire-la-Ville, Switzerland, 2007. Eurographics Association.

[Kro08] Prof. Dr.-Ing. Detlef Krömker. Grundlagen der Computergrafik. Skript, 2008

[KWT88] Michael Kass, Andrew Witkin and Demetri Terzopoulos. Snakes: Active contour models. In Interna-tional Journal of Computer Vision, pages 321-331, 1988. pringer Netherlands.

[Lau94] A. Laurentini. The Visual Hull Concept for Silhouette-Based Image Understanding. In IEEE Transac-tions on Pattern Analysis and Machine Intelligence, Pages 150-162, Washington, DC, USA, 1994. IEEE Comupter Society.

[LHS01] Hendrik P.A. Lensch, Wolfgang Heidrich and Hans-Peter Seidel. A silhouette-based algorithm for texture registration and stitching. In Graphical Models, Pages 245-262, San Diego, CA, USA, 2001. Academic Press Professional, Inc.

[Low04] David G. Lowe. Distinctive Image Features from Scale-Invariant Keypoints. In International Journal of Computer Vision, Pages 91-110, Hingham, MA, USA, 2004. Kluwer Academic Publishers.

[Lue01] David P. Luebke. A Developer's Survey of Polygonal Simplification Algorithms. In IEEE Computer Graphics and Applications, Pages 24-35, Los Alamitos, CA, USA, 2001. IEEE Computer Society Press.

[Mac01] Alan MacDonald. Strokes' Theorem. In Real Analysis Exchange 27, pages 739-747, 2001.

[MHSF] Ministry of Health and Social Affairs, Sweden: Girlpower. http://demo.fb.se/e/girlpower/retouch/retouch/index.html Abgerufen am 20.07.2009.

[MPho] Microsoft Photosynth. http://photosynth.net Abgerufen am 20.07.2009

[MS02] K. Mikolajczyk and C. Schmid. An Affine Invariant Interest Point Detector. In Proceedings of the 7th European Conference on Computer Vision-Part I, Pages 128-142, London, UK, 2002. Springer-Verlag.

[Nig08] Stefan Niggemeier: Schnee von gestern. http://www.stefan-niggemeier.de/blog/schnee-von-gestern Abgerufen am 20.07.2009.

[PGB03] Patrick Pérez, Michel Gangnet and Andrew Blake. Poisson image editing. In Proceedings of ACM SIGGRAPH 2003, pages 313-318, New York, NY, USA, 2003. ACM.

[RC08] D.P. Robertson and R. Cipolla. Structure from Motion. In Practical Image Processing and Computer Vision, Margaret Varga, 2008. Halsted Pr (to be released September 14, 2009). Chapter 13 and 14 online: http://mi.eng.cam.ac.uk/~cipolla/publications.htm Abgerufen am 20.07.2009

[RCMS02] C. Rocchini, P. Cignoni, C. Montani and R. Scopigno. Acquiring, stitching and blending diffuse ap-pearance attributes on 3D models. In The Visual Computer, pages 186-204, Berlin/Heidelberg, Ger-many, 2002. Springer Verlag.

[RhBi] Bildmanipulationen. http://www.rhetorik.ch/Bildmanipulation/Bildmanipulation.html Abgerufen am 20.07.2009.

Page 103: 3D-unterstützte Bildmanipulation · Zusammenfassung Klassische Bildmanipulation spielt sich meist im Zweidimensionalen, also in der reinen Bild-ebene ab. So werden beispielsweise

[RW03] Kerry Rodden and Kenneth R. Wood. How do people manage their digital photographs? In Proceed-ings of the SIGCHI conference on Human factors in computing systems, Pages 409-416, New York, NY, USA, 2003. ACM.

[SCD+06] Steven M. Seitz, Brian Curless, James Diebel, Daniel Scharstein and Richard Szeliski. A Comparison and Evaluation of Multi-View Stereo Reconstruction Algorithms. In Proceedings of the 2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition - Volume 1, pages 519-528, Washington, DC, USA, 2006. IEEE Computer Society.

[SSS06] Noah Snavely, Steven M. Seitz and Richard Szeliski. Photo tourism: exploring photo collections in 3D. In ACM SIGGRAPH 2006 Papers, Pages 835-846, New York, NY, USA, 2006. ACM.

[SSS07] Noah Snavely, Steven M. Seitz and Richard Szeliski. Modeling the World from Internet Photo Collec-tions. In International Journal of Computer Vision, Pages 189-210, Hingham, MA, USA, 2007. Klu-wer Academic Publishers.

[SY99] F. Schmitt and Y. Yemez. 3D color object reconstruction from 2D image sequences. In International Conference on Image Processing, Pages 65-69, Washington, DC, USA, 1999. IEEE Comupter Society.

[SYJS05] Jian Sun, Lu Yuan, Jiaya Jia and Heung-Yeung Shum. Image completion with structure propagation. ACM SIGGRAPH 2005 Papers, pages 861-868, New York, NY, USA, 2005. ACM.

[SZ02] Frederik Schaffalitzky and Andrew Zisserman. Multi-view Matching for Unordered Image Sets, or "How Do I Organize My Holiday Snaps?" In Proceedings of the 7th European Conference on Com-puter Vision-Part I, Pages 414-431, London, UK, 2002. Springer-Verlag.

[TMHF99] Bill Triggs, Philip F. McLauchlan, Richard I. Hartley and Andrew W. Fitzgibbon. Bundle Adjustment - A Modern Synthesis. In Proceedings of the International Workshop on Vision Algorithms: Theory and Practice, Pages 298-372, London, UK, 1999. Springer-Verlag.

[VHTC07] G. Vogiatzis, C. Hernandez, P.H.S. Torr and R. Cipolla. Multiview Stereo via Volumetric Graph-Cuts and Occlusion Robust Photo-Consistency. In IEEE Transactions on Pattern Analysis and Machine In-telligence, Pages 2241-2246, Washington, DC, USA, 2007. IEEE Comupter Society.

[WBTC05] Marta Wilczkowiak, Gabriel J. Brostow, Ben Tordoff and Roberto Cipolla. Hole Filling Through Photomontage. In BMVC, pages 492-501, 2005

[WG92] Jane Wilhelms and Allen Van Gelder. Octrees for faster isosurface generation. In ACM Transactions on Graphics, Pages 201-227, New York, NY, USA, 1992. ACM.

[ZHG06] Feng Zhao, Qingming Huang and Wen Gao. Image Matching by Normalized Cross-Correlation. In IEEE International Conference on Acoustics, Speech and Signal Processing, pages 729-732, Washing-ton, DC, USA, 2006. IEEE Comupter Society.

[ZWT+05] Kun Zhou, Xi Wang, Yiying Tong, Mathieu Desbrun, Baining Guo and Heung-Yeung Shum. Tex-turemontage: Seamless Texturing of Arbitrary Surfaces From Multiple Images. In ACM Transactions on Graphics, pages 1148-1155, New York, NY, USA, 2005. ACM.