struierter Gebäudegeometrie

Werbung
BACHELORARBEIT
im Studiengang Informatik / Computer Science
Interaktive Texturgenerierung auf rekonstruierter Gebäudegeometrie
Ausgeführt von: Lisa M. Kellner
Personenkennzeichen: 1110257047
BegutachterIn: Dipl.-Ing. Dr. Gerd Hesina
Wien, 1. Juni 2014
Eidesstattliche Erklärung
Ich erkläre hiermit an Eides statt, dass ich die vorliegende Arbeit selbständig angefertigt habe.
Die aus fremden Quellen direkt oder indirekt übernommenen Gedanken sind als solche kenntlich
gemacht. Die Arbeit wurde bisher weder in gleicher noch in ähnlicher Form einer anderen Prüfungsbehörde vorgelegt und auch noch nicht veröentlicht. Ich versichere, dass die abgegebene
Version jener im Uploadtool entspricht.
Ort, Datum
Unterschrift
Kurzfassung
In dieser Arbeit wird eine Applikation vorgestellt, die es ermöglicht aus Fotos, die jedermann
mit einer handelsüblichen Kamera aufnehmen kann, ein drei-dimensionales Modell zu erzeugen.
Dabei liegt der Fokus auf der Rekonstruktion von Gebäuden. Durch die gemeinsame Verarbeitung
der Punktwolke, Polygone und Texturen können die räumlichen Eigenschaften des Gebäudes
leicht und exakt erschlossen werden. Um ein Modell ezient zu erstellen, wird die automatische
Rekonstruktion des Gebäudemodells durch manuelle Bearbeitungsmöglichkeiten erweitert. Dafür
gibt es in der vorgestellten Applikation eine Vielzahl an neuartigen Tools. Diese erlauben eine
eziente Nachbearbeitung des automatisch erstellten Modells. Die Tools sind speziell an das
Bearbeiten der Punktwolke, Polygone und Texturen angepasst. So dass schnell ein realistisches
Gebäudemodell erzeugt werden kann.
Schlagwörter:
bäudemodelle
Punktwolke, Rekonstruktion, Texturgenerierung, interaktives Modellieren, Ge-
Abstract
In this theses an application will be introduced, which allows you to create a three-dimensional
model out of photos which you take with a consumer-level camera. Thereby the focus lies on
reconstruction of buildings. Because of the combined processing of the point cloud, polygons and
textures spatial properties of the building could be developed easily and exact. To reconstruct
a model in an ecient way the automatic reconstruction is extended by manual possibilities of
editing the model. Therefore the introduced application has a wide range of tools to allow you an
ecient editing. These tools are adjusted to the point cloud, polygons and textures. So you can
create a realistic model of a building very fast.
Keywords:
buildings
point cloud, reconstruction, generating textures, interactive modelling, models of
Danksagung
Diese Bachelorarbeit schrieb ich im Zuge meines Praktikums an der VRVis Zentrum für Virtual
Reality und Visualisierung Forschungs-GmbH. An dieser Stelle möchte ich allen an meiner Praktikumsstelle für eine tolle Zeit und für ihre Unterstützung zur Vollendung dieser Arbeit bedanken.
Inhaltsverzeichnis
1 Einleitung
1
1.1
Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Aufgabenstellung
3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Stand der Technik
2.1
Related Work
2.2
Hintergrund
4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3 Rekonstruktion von Gebäudegeometrie anhand Fotos
3.1
3.2
Rekonstruktion von Gebäudegeometrie
. . . . . . . . . . . . . . . . . . . . . . .
4.2
4.3
9
3.1.1
Erzeugung einer Punktwolke anhand Fotos . . . . . . . . . . . . . . . . .
9
3.1.2
Erzeugung von Geometrie anhand einer Punktwolke . . . . . . . . . . . .
11
Texturierung rekonstruierter Gebäudegeometrie . . . . . . . . . . . . . . . . . . .
14
4 Tools zur interaktiven Texturgenerierung
4.1
9
Bereits bestehende Tools
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
17
17
4.1.1
Editieren der Punktwolke
17
4.1.2
Editieren der Polygone
. . . . . . . . . . . . . . . . . . . . . . . . . . .
19
4.1.3
Segmente zusammenfügen und teilen . . . . . . . . . . . . . . . . . . . .
20
Erweiterte Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
4.2.1
Mengenoperationen
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
4.2.2
Der Brush
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
Neu entwickelte Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
4.3.1
Interaktionen mit Shots . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
4.3.2
Sortieren der Shots
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
4.3.3
Editieren der Textur . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
5 Diskussion
31
5.1
Reexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
5.2
Aufgabenstellung
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
5.3
Ausblick
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
Literaturverzeichnis
34
Abbildungsverzeichnis
36
1 Einleitung
1.1 Motivation
Die Möglichkeit, dass jedermann aus selbst aufgenommenen Fotos realistische drei-dimensionale
Modelle erstellen kann, fand in den letzten Jahrzehnten vermehrt Interesse. Trotzdem gibt es
noch keine zufriedenstellende Lösung für die Rekonstruktion eines Gebäudes anhand Fotos.
Einerseits ist der Rechenaufwand, aus Fotos ein drei-dimensionales Modell zu erstellen, sehr hoch.
Es war erst in den letzten Jahren möglich Applikationen zu entwickeln, die die Rekonstruktion des
Modells sowie Änderungen daran in Echtzeit vollbringen können. Andererseits ist das Ergebnis
der automatischen Rekonstruktion sehr stark von den aufgenommenen Fotos abhängig. Ist
der Datensatz lückenhaft oder das fotograerte Objekt nicht geeignet, kann daraus kaum ein
vollständiges Modell mit guten Texturen erzeugt werden. Da oft nicht alle Seiten des Gebäudes
zugänglich sind können unvollständige Datensätze entstehen. Beispielsweise liegen sie auf privaten
Grundstücken, die nicht betreten werden dürfen, oder sind durch Bäume sowie Gebäude verbaut.
Dadurch kann nur die Vorderseite eines Gebäudes fotograert und folge dessen automatisch
rekonstruiert werden. Ein Objekt ist zum Beispiel nicht geeignet, wenn es nur eine Farbe und keine
wesentlichen Merkmale aufweist. Auch hier kann daraus nur schwer ein drei-dimensionales Modell
erzeugt werden. Es kommt auch vor, dass Fenster oder Türen nicht als eigene Geometrie erkannt
werden, sondern in der Hausmauer, auf der sie liegen, enthalten sind. Tritt so etwas ein, haben
die Fenster und Türen keine eigene Geometrie und es kann dadurch nicht mit ihnen interagiert
werden. Die Wahrscheinlichkeit ist hoch, dass sich durch die automatische Rekonstruktion eines
Modells anhand Fotos Lücken zwischen den Seitenkanten des Gebäudes benden oder Wände des
Gebäudes nicht vollständig erkannt werden.
Auch automatisch erzeugte Texturen für das Modell sind zumeist nicht perfekt. Die aufgebrachten
Texturen werden aus den aufgenommenen Fotos zusammengesetzt. Wenn sich zum Beispiel beim
Fotograeren ein Auto direkt vor dem Gebäude bendet ist dieses auf allen Fotos abgebildet.
Dadurch ist dieses Auto in der Textur enthalten, die auf das Modell aufgebracht wird. Das
erzeugte Gebäudemodell sollte jedoch nicht nur seine originale Form haben, sondern auch
Texturen, die frei von störenden Objekten sind.
Die oben genannten sind nur einige Beispiele bei denen die automatische Rekonstruktion eines
Gebäudemodells anhand Fotos an ihre Grenzen stöÿt. Sei es, dass Teile des Gebäudes nicht
fotograert oder durch ihre Eigenschaften nicht rekonstruiert werden konnten. Dies ist in
Abbildung
1.1 zu sehen. Da ein unvollständig rekonstruiertes Modell oder eine Textur mit
störenden Objekten nicht zufriedenstellend ist, muss es die Möglichkeit geben das erzeugte
drei-dimensionale Modell beziehungsweise die Textur manuell nachbearbeiten zu können. Speziell
im Bereich der manuellen Nachbearbeitung gibt es keine Applikationen, die dies ezient und
zufriedenstellend ermöglichen.
Dabei wäre eine Applikation, die es ermöglicht schnell Gebäudemodelle oder sogar Stadtmodelle zu rekonstruieren, in vielen verschiedenen Gebieten einsetzbar. Zum einen in der
Spieleindustrie. Spieler könnten ihre Abenteuer an Schauplätzen der realen Welt bestreiten und
1
KAPITEL 1. EINLEITUNG
(a) Lücken zwischen Gebäudekanten
(b) Unvollständige Flächen
(c) Textur mit störenden Objekten
Abbildung 1.1: Beispiele für Grenzen der automatischen Rekonstruktion
(a) Zwischen den Häuserecken benden sich Lücken, die durch einen Optimierungsprozess
geschlossen werden können. (b) Die Flächen konnten nur unvollständig rekonstruiert werden. Die
Rückseite des Hauses ist nicht vorhanden, da sie nicht fotograert wurde. (c) Fassaden-Textur
die aus mehreren Fotos zusammengesetzt wurde. Auf allen Fotos war das zu sehende Auto und
die Straÿenlaterne abgebildet. Folge dessen sind sie Teile der Textur.
der Aufwand eine ganze Stadt zu modellieren wäre dabei vergleichsweise gering. Es könnten damit
auch Modelle für verschiedenste Simulationen in ganzen Städten, wie unter anderem Hochwasserund Umweltkatastrophen sowie Tsunamis, erstellt und deren Auswirkungen schneller berechnet
werden. Hier würde nicht mehr ein Teil des Projektes die Rekonstruktion des Stadtmodells
ausmachen. Es könnte sich schneller auf die Berechnungen und Auswirkungen der Simulationen
konzentriert werden. Ein weiterer Verwendungszweck wären Schulungs-Simulatoren für Lenker
von Bussen, Straÿenbahnen oder Taxis. So wie es bereits Flugsimulatoren für Piloten gibt,
könnte dies auch für Fahrer der öentlichen Verkehrsmittel entwickelt werden. Um unter anderem
Extremsituationen zu schulen. Verschiedenste Strecken der Fahrer würden in übersichtlicher
Zeit modelliert werden. Auch im Bereich der Stadtplanung würde eine solche Applikation
ihren Einsatz nden. Ist ein Modell einer Stadt vorhanden, könnten Modelle neuer Gebäude
einfach darin eingefügt
werden. Dadurch würde ohne groÿen Aufwand die Wirkung des
neuen Hochhauses auf das Stadtbild beziehungsweise dessen Einuss auf Licht- und Wetterverhältnisse simuliert werden. Des Weiteren könnte eine solche Applikation auch als Erweiterung
von Anwendungen wie zum Beispiel von Google Maps beziehungsweise Google Street View dienen.
2
KAPITEL 1. EINLEITUNG
Alle diese Einsatzgebiete und bestimmt noch weitere würden von einer derartigen Applikation protieren. Im Moment muss für eine Simulation einer Stadt oder eines Gebäude das jeweilige
Modell manuell in langwieriger Arbeit erstellt werden. Mit der automatischen Erzeugung von
Modellen anhand von Fotos und einer kurzen manuellen Nachbearbeitung könnte viel Zeit und
somit Geld gespart werden.
1.2 Aufgabenstellung
Diese Arbeit schlieÿt an ein vorhandenes Forschungsprojekt an. Dieses beschäftigt sich mit der
Entwicklung einer Applikation, die aus Fotos ein drei-dimensionale Gebäudemodell erstellt. Das
Forschungsprojekt setzt an der zuvor erwähnten Problematik der automatischen Rekonstruktion
an. In der Applikation des Projektes werden zuerst das Modell sowie die Texturen in einer
automatischen Rekonstruktionsphase erzeugt und können anschlieÿend in Echtzeit manuell
nachbearbeitet werden. Denn Polygone haben oft nicht die ideale Form oder es benden sich
Lücken zwischen Häuserecken. Aber nicht nur die Geometrie des Modells kann bearbeitet werden,
sondern auch die erstellte Textur. Da die Textur aus mehreren Fotos zusammengesetzt wird kann
es vorkommen, dass störende Objekte in der Textur enthalten sind. Es kann auch passieren, dass
nicht das beste Foto für die Textur gewählt wurde und sie somit verzerrt oder für einen Benutzer
unlogisch ist.
Der Vorgang der Rekonstruktion sowie die Tools zur manuellen Nachbearbeitung des Modells
werden in dieser Arbeit beschrieben. Auf das Projekt selbst wird ebenfalls genauer eingegangen.
Das Ziel dieser Arbeit ist es Tools zum manuellen Bearbeiten des entstandenen Modells
zu entwickeln, insbesondere Tools für die Bearbeitung der erstellten Fassaden-Textur. In dem
Forschungsprojekt, an das diese Arbeit anschlieÿt, bestehen bereits Tools zur Nachbearbeitung
des Modells sowie der Textur. In dieser Arbeit werden sowohl die bestehenden Tools, als auch
die neu entwickelten Tools beschrieben. Manche Funktionalitäten bereits bestehender Tools des
Projektes wurden im Laufe dieser Arbeit erweitert. Auf derartige Erweiterungen wird ebenfalls
genauer eingegangen.
Neben den Tools wird auch der technische Hintergrund beschrieben, wie aus einigen Fotos ein
drei-dimensionales Gebäudemodell entsteht. Im theoretischen Teil dieser Arbeit wird auch auf die
Erstellung der Textur genauer eingegangen. Bei der Beschreibung des technischen Hintergrundes
liegt der Fokus auf den Projekten, an denen das Forschungsprojekt ansetzt.
3
2 Stand der Technik
2.1 Related Work
Die Idee aus Fotos ein drei-dimensionales Modell zu erstellen fand bereits 1996 mit Paul E.
Debevec et al. [1] seinen Anfang. Sie entwickelten eine Applikation um Gebäudegeometrie und
Fassaden-Textur aus mehreren Fotos zu erstellen. Sie vereinten damit erstmals Geometrie- und
Bild basierte Rekonstruktionsmethoden miteinander. Debevec et al. setzten auf eine Kombination
der automatisierten und manuellen Rekonstruktionsphase. Es wird zuerst die Gebäudegeometrie
aus den Fotos gebildet und anschlieÿend die Fassaden-Textur durch Kombination mehrerer Fotos
aufgebracht. Sie stellten unter anderem auch eine Methode vor, um architektonische Details in
der Fassade rekonstruieren zu können.
David
Liebowitz
et
al.
beschäftigten
sich
1999
ebenfalls
mit
diesem
Thema
aus
Fotos
drei-dimensionale architektonische Modelle zu erstellen [2]. Mit dem Unterschied, dass sie für die
Rekonstruktion nur ein bis zwei Fotos verwendeten und nicht mehre Aufnahmen rund um das
Gebäude. Dadurch gelten für Liebowitz et al. andere Anforderungen, da aus ein oder zwei Fotos
nur sehr schwer eine Punktwolke berechnet werden kann. Daher grien sie auf die Eigenschaften
eines Gebäudes zurück, wie zum Beispiel die Parallelität der Flächen und die Perspektive in den
Fotos. Denn daraus kann eine Ebene und somit eine Seite des Gebäudes berechnet werden. Die
Textur kann wegen der perspektivischen Verzerrung nicht einfach aus dem Foto auf das Modell
aufgebracht werden. Das bedeutet, dass die Textur zuerst vom Foto ohne jegliche Verzerrungen
wieder hergestellt werden muss.
Aseem Agarwala et al. entwickelten ein Framework um mehrere Fotos miteinander zu kombinieren
und daraus ein einziges Foto zu erstellen [3]. So können zum Beispiel mehrere Fotos von einer
Gruppe aufgenommen und anschlieÿend von jeder Person das beste Bild gesucht werden. Daraus
wird ein einziges Foto mit der besten Aufnahme jeder Person erstellt. Dieses Framework benutzt
für die Kombination der Bilder zwei Techniken, zum ersten einen Optimierungsvorgang um gute
also nicht sichtbare Nähte in den zusammengesetzten Bildern zu erhalten. Nähte sind die
Schnittstellen, an denen die einzelnen Fotos miteinander verbunden werden. Diese sollen für einen
Betrachter nicht erkennbar sein. Zum anderen verwendeten sie eine Methodik um trotz der zuvor
erwähnten Optimierung entstandene Artefakte aus dem Bild zu entfernen. Das Hauptaugenmerk
dieses Frameworks liegt bei den Interaktionsmöglichkeiten für den Benutzer. Dem User stehen
viele verschiedene Tools zur Verfügung um das bestmögliche Ergebnis zu erzeugen.
Alexander Wiechert et al. [4] entwickelten mit dem Projekt UltraMap eine Möglichkeit mit
hochauösende Luftaufnahmen Modelle von Landschaften oder Städten zu erstellen. Dabei
werden zuerst die sich überlappenden Bereiche der einzelnen Aufnahmen lokalisiert. Anschlieÿend
werden die einzelnen Bereiche zu einem Digital Surface Model zusammengefügt. Die Bilder der
Landschaft können in unterschiedliche topograsche Bereiche unterteilt werden.
4
KAPITEL 2. STAND DER TECHNIK
Jie Chen et al. entwickelten eine Pipeline beziehungsweise eine Methode um aus unvollständigen Punktwolken ein gesamtes drei-dimensionales Modell zu erstellen [5]. Chen et al.
erstellten die Punktwolke durch Laser-Scans und nicht aus aufgenommenen Fotos, wie in dieser
Arbeit beschrieben. Die Daten des Scans müssen nicht vollständig sein. Das bedeutet, dass Teile
in der Punktwolke des Gebäudes fehlen können und trotzdem daraus ein Modell erstellt werden
kann. Dieser Fall kann bei der Erzeugung der Punktwolke anhand Fotos ebenfalls eintreten. Denn
oft sind Teile eines Gebäudes nicht zugänglich und können daher nicht gescannt beziehungsweise
fotograert werden. In der Pipeline von Chen et al. werden zuerst Ebenen in der Punktwolke
gesucht und deniert, anschlieÿend werden diese Ebenen auf Überschneidungen getestet sowie
die Kanten der einzelnen Flächen berechnet.
Sudipta N. Sinha et al. entwickelten eine Applikation [6] um aus Fotos drei-dimensionale
Modelle eines Gebäudes zu erstellen. In dieser Applikation ist die Rekonstruktion des Gebäudemodells stark von User-Interaktionen abhängig. Es werden dem User jedoch viele verschieden
Interaktionsmöglichkeiten und Tools zur Verfügung gestellt, um die Modellierungsarbeiten ezient zu gestalten. Die Geometrie des Modells wird ausschlieÿlich durch Interaktionen vom User
erzeugt. Um das Modellieren für den Benutzer einfacher zu gestalten ndet die Rekonstruktion der
Geometrie im zwei-dimensionale Raum statt. Zuerst werden sämtliche Fotos zu einem einzelnen
zusammengefügt. Der User zeichnet anschlieÿend auf diesem Foto die Kanten des Modells nach.
Während dieses Nachzeichnens werden Flächen zwischen den Kanten aufgespannt. Durch diesen
Prozess wird ein Gebäudemodell erstellt. Die Fassaden-Textur wird während dem Erzeugen einer
Fläche aus dem Foto der jeweiligen Fläche zugeordnet und kann mittels Werkzeugen bearbeitet
werden.
Jianxiong Xiao et al. beschäftigen sich mit der Entwicklung einer Applikation zur FassadenRekonstruktion anhand Fotos [7]. Die Fotos wurden hierbei entlang einer Straÿe aufgenommen.
Das bedeutet Xiao et al. modellierten nicht nur ein Gebäude, sondern mehrere entlang der
aufgenommenen Straÿe. Die Gebäude werden jedoch nicht von allen Seiten rekonstruiert, sondern
nur die Seite zur Straÿe hin. In dieser Applikation wird, wie in dieser Arbeit, aus den Fotos
zuerst eine Punktwolke berechnet und aus dieser Punktwolke Geometrie erstellt. Die virtuellen
Positionen der Kameras, aus denen die Fotos aufgenommen wurden, sowie die Fassaden-Textur
werden, ebenfalls wie in dieser Arbeit, aus den Fotos berechnet. Das Modell wird zuerst als
Ebene gesehen und anschlieÿend wird darauf die Tiefe der einzelnen Fassaden Teile berechnet.
Die Fassaden-Textur wird auch hier durch Kombination mehrerer Fotos erstellt.
Connelly
Barnes
et
al.
entwickelten
den
sogenannten
Patch-Match-Algorithmus
[8].
Mit
diesem kann ein Teil aus einem Bild entfernt oder dupliziert werden. Beachtenswert dabei ist, dass
vor allem die Entfernung eines Bereichs des Bildes kaum zu erkennen ist. Durch diesen Algorithmus
kann das Bild auch in die Länge gezogen beziehungsweise zusammengestaucht werden, ohne
dass es zu auälligen Veränderungen des Bildinhaltes führt. Bei jedem dieser Bearbeitungen eines
Bildes werden die Bildinformationen, die entfernt, dupliziert oder verschoben werden, durch einen
Nearest-Neighbour Algorithmus neu berechnet. Im Rahmen dieses Projektes wurde eine Applikation zur Bildbearbeitung entwickelt. Mit dieser kann zum Beispiel beim Zusammenschieben eines
Fotos Linien oder Bereiche eingezeichnet werden, an dem sich die Applikation orientiert und die
folge dessen nicht vom zusammenschieben des Bildes verändert werden. Bereiche, die dupliziert
oder gelöscht werden sollen, können damit markiert und anschlieÿend kopiert beziehungsweise
entfernt werden.
5
KAPITEL 2. STAND DER TECHNIK
Arnold Irschara et al. beschäftigten sich mit der Rekonstruktion von Modellen ganzer Städte [9].
Dabei haben sie einen anderen Ansatz als wie bisher beschrieben. Denn die Fotos für die
Rekonstruktion werden von vielen verschiedenen Personen aufgenommen. Dadurch entstehen
andere Anforderungen als zu den davor erwähnten Projekten. Fotos von verschiedenen Personen
bedeuten, dass viele Fotos aus circa gleicher Position oder bei Nacht aufgenommen wurden.
Oder das bestimmte Teile einer des Objektes gar nicht fotograert werden, da sie nicht interessant genug oder zugänglich sind. Auch die Qualität zwischen den Fotos kann sehr stark
variieren. Man denke hier nur an die verschiedenen Kameras mit denen ein Foto aufgenommen
werden könnte mit einer Kamera eines Smartphones oder doch mit einer professionellen Kamera.
Przemyslaw
Musialski
et
al.
entwickelten
ein
interaktives
Framework
zur
Rekonstruktion
beziehungsweise Modellierung von Fassaden [10]. Dabei kombinieren sie User-Interaktionen, mit
von dieser Applikation erkannten Gruppen in der Fassade. Fassaden-Gruppen sind sich ähnelnde
Bausteine in einer Fassade, wie zum Beispiel Fenster oder Balkone. Die meisten Fenster eines
Gebäudes sind sich im Normalfall sehr ähnlich. Daher werden alle Fenster, die bis zu einem
gewissen Grad gleich aussehen, als eine Fassaden-Gruppe erkannt. Wenn der Benutzer in diesem
Framework zum Beispiel an einer Haus-Fassade einen Fenstersims bearbeitet, werden alle anderen
Fenstersimse, die in derselben Gruppe sind, automatisch mit bearbeitet. Das bedeutet, dass alle
Interaktionen, die der User an einem Fenster der Gruppe ausführt auf die anderen übertragen
werden. Somit werden zur selben Zeit alle Fenster bearbeitet. Dies hat nicht nur den Vorteil, dass
die Bearbeitung nur einmal ausgeführt werden muss sondern auch, dass nach der Bearbeitung
alle Fenster gleich wieder gleich aussehen.
Murat Arikan et al. entwickelten mit O-Snap [11] einen Prozess um drei-dimensionale Modelle aus einer Punktwolke zu erstellen. In diesem Prozess kombinieren sie eine automatische und
eine interaktive Phase zur Rekonstruktion. Der theoretische Teil dieser Arbeit beziehungsweise das
zuvor erwähnte Projekt, an das diese Arbeit anschlieÿt, baut auf Arikans et al. O-Snap Projekt
auf. Daher wird dessen Prozess im theoretischen Teil dieser Arbeit genauer beschrieben.
2.2 Hintergrund
Wie bereits erwähnt schlieÿt diese Arbeit an ein vorhandenes Forschungsprojekt an. Dieses
Projekt heiÿt Replicate und wird von der VRVis Zentrum für Virtual Reality und Visualisierung
Forschungs-GmbH in Wien ausgeführt. Diese führt laut ihrer Homepage [12] Forschungen vor
allem im Bereich der Visualisierung von teilweise sehr groÿen Datenmengen durch. Dabei steht
nicht nur die Visualisierung der Daten im Vordergrund, sondern auch die Möglichkeit mit ihnen
interagieren zu können. Bekannte Projekte der letzten Zeit (Stand Mai 2014) sind zum Beispiel
Tactile Paintings, bei dem berühmte Gemälde auf Platten mit Tiefgeninformationen des Bildes
gedruckt werden. Um Personen mit einer Sehbehinderung diese Gemälde zugänglich zu machen.
Ein weiteres Projekt der VRVis Zentrum für Virtual Reality und Visualisierung Forschungs-GmbH
ist HILITE, bei dem komplexe Licht Simulationen und Berechnungen in Echtzeit verändert werden
können. Speziell bei diesem Projekt sind der Rechenaufwand und die damit verbundene Leistung
hoch.
6
KAPITEL 2. STAND DER TECHNIK
Replicate
beschäftigt
sich
mit
Rekonstruktion
von
Gebäudegeometrie
anhand
Fotos.
Die
beiden Hauptbearbeitungsfenster der Applikation sind in Abbildung 2.1 zu sehen. Im Laufe dieses
Projektes wird der aktuelle Stand der Technik dieses Themengebietes verbessert. Es wird dabei
unter anderem eine höherer Grad an Qualität und Genauigkeit des erzeugten Modells erreicht. Dieses Forschungsprojekt wird nach Fertigstellung unter anderem in Sicherheitsrelevanten Systemen
wie Fahr- und Erdbebensimulationen eingesetzt. Denn es mangelt vor allem bei Bussimulationen
für das Training von Fahrern der öentlichen Verkehrsmittel. Obwohl Busse im täglichen Verkehr
eine groÿe Anzahl an Menschen transportieren und es immer wieder zu Zwischenfällen kommt,
gibt es noch keinen realistischen Simulator, der eine ausreichende Schulung der Fahrer ermöglicht. Durch die Schulung der Fahrer in alltäglichen oder Extremsituationen könnten etwaige
Unfälle vermieden werden. In diesem Forschungsprojekt sollen die verschiedenen Daten wie
Punktwolken, Polygone und Texturen miteinander verarbeitet werden und dadurch die räumlichen
Eigenschaften des Modells leichter zu erschlieÿen sein. Da manche Gebäude sehr komplex sind
und die automatische Rekonstruktion von Objekten ihre Grenzen hat, wird diese durch Tools
für manuelle Nachbearbeitungen erweitert. Die Kombination aus automatischer und manueller
Rekonstruktion des Gebäudes ermöglicht eine Vielzahl von eektiven Gestaltungsmöglichkeiten
um ein realistisches Modell aus einigen Fotos zu erhalten.
Replicate verwendet nachfolgend kurz beschriebenen Vorgang um aus Fotos ein drei-dimensionales
Gebäudemodell zu erstellen. Zuerst wird aus den aufgenommenen Fotos eine Punktwolke erstellt.
Dabei sei erwähnt, dass die Kamera mit denen die Fotos aufgenommen werden, eine handelsübliche Kamera oder sogar ein Smartphone sein kann. Es gilt jedoch umso höher die Auösung des
Fotos, umso besser kann daraus eine Punktwolke erzeugt werden. Aus der erstellten Punktwolke
werden Ebenen und darauf Polygone berechnet. Auf dieser Geometrie wird anschlieÿend eine
Textur aufgebracht. Die Textur wird aus den verschiedenen aufgenommenen Fotos zusammengesetzt, um keine perspektivischen Verzerrung in der Textur vorzunden. Replicate setzt auf
eine Kombination von automatischen und manuellen Rekonstruktionstechniken. Die automatische
Rekonstruktion des Modells ist in diesem Projekt schon sehr weit fortgeschritten beziehungsweise
abgeschlossen. Im Bereich der manuellen Modellierung sind bereits einige Tools vorhanden. Es
können Teile Punktwolke ausgewählt und gelöscht werden. Die berechneten Polygone können
ebenfalls bearbeitet oder vom User selbst erstellt werden. Während diesem Prozess gibt es
Optimierungen wie das sogenannte Snapping, durch diesen werden Lücken zwischen den Seiten
des Gebäudemodells geschlossen und die Position der Polygone angepasst. Es sind auch Tools
zum Bearbeiten der Textur der Fassade vorhanden. Wie zum Beispiel das Fassaden-Brushing,
dabei werden Teile der Fassade mit einem anderen Foto übermalt. Zudem sind noch weiter
neuartige Interaktionsmöglichkeiten in diesem Bereich möglich und geplant.
Genau an diesem Punkt setzt diese Arbeit an, es sollen weitere Tools für das Bearbeiten
des Modells und für das Bearbeiten der erzeugten Textur erstellt werden. Dazu zählt zum Beispiel
die Möglichkeit aus der Sicht der virtuellen Kameras das Modell bearbeiten zu können. Oder
verschiedene Modi für das oben erwähnte Fassaden-Brushing zu entwickeln. Des Weiteren soll
mit sämtlichen virtuellen Kameras interagiert werden können. Dazu müssen sie an einer zentralen
Stelle verwaltet werden.
7
KAPITEL 2. STAND DER TECHNIK
(a) Bearbeitungsfenster der Punktwolke
(b) Bearbeitungsfenster des Modells
Abbildung 2.1
(a) Erstes Bearbeitungsfenster des Projektes, das hauptsächlich für die Säuberung der
Punktwolke zuständig ist. (b) Zweites Bearbeitungsfenster des Projektes, dass sich nach dem
Polygonalisieren önet. In diesem können die Polygone, Texturen et cetera bearbeitet werden.
8
3 Rekonstruktion von Gebäudegeometrie
anhand Fotos
Der Prozess, mit dem aus Fotos ein drei-dimensionales Gebäudemodell erstellt wird, verläuft vereinfacht wie folgt. Zuerst werden Fotos mit einer handelsüblichen Kamera aufgenommen. Aus diesen
Fotos wird eine Punktwolke berechnet und aus dieser Punktwolke wird Geometrie erstellt. Auf der
erstellten Geometrie wird eine Textur aufgebracht, die eine Kombination aus den aufgenommenen
Fotos ist. Auf jeden dieser drei Schritte wird im nachfolgenden Kapitel genauer eingegangen.
3.1 Rekonstruktion von Gebäudegeometrie
3.1.1 Erzeugung einer Punktwolke anhand Fotos
Eine Punktwolke ist eine Anhäufung von Punkten im drei-dimensionalen Raum. Diese Punkte
haben eine eindeutige Position. In Replicate weiÿen die Punkte neben der Position noch einen
Normalvektor und eine Farbe auf. Punktwolken können zum Beispiel durch Laser-Scans erstellt
oder aus Fotos berechnet werden. Bei beiden Technologien kann es vorkommen, dass die erstellte
Punktwolke nicht das komplette Objekt umfasst. Denn wenn zum Beispiel ein Teil des Objektes
nicht zugänglich ist, kann daraus keine Information gewonnen werden und folge dessen auch keine
Punkte. Fehlende Informationen eines Objektes werden in weiteren automatischen und manuellen
Rekonstruktions-Schritten wieder hergestellt.
In diesem Abschnitt wird der Prozess, wie aus Fotos eine Punktwolke erzeugt wird, beschrieben. Dabei wird sich auf den Vorgang den das Forschungsprojekt Replicate verwendet
fokussiert. Dieser ist in Interactive Multi-View Façade Image Editing von Musialski et al. [13]
beschrieben.
Die Fotos, aus denen die Punktwolke erzeugt wird, werden mit einer handelsüblichen Kamera aufgenommen. Dabei sind einige Dinge zu beachten, denn wenn die Fotos optimal
aufgenommen werden, kann daraus eine dichte Punktwolke erzeugt werden. Zum einen darf kein
zu groÿer Abstand zwischen den einzelnen Fotos liegen. Des Weiteren sollten von jedem Teil
des Objektes Fotos gemacht worden sein. Denn um sämtliche Teile des Objektes rekonstruieren
zu können, müssen darüber Informationen vorhanden sein und diese werden aus den Fotos
gewonnen. Zum anderen sollten sich die Bilder nicht zu sehr überlappen. Das bedeutet es sollten
nicht zu viele Fotos aus der ziemlich gleichen Position aufgenommen werden. Da es teilweise
nicht notwendig ist, dass die gleiche Information öfters und eventuell andere Informationen
dafür nicht ausreichend vorhanden sind. Des Weiteren sollte darauf geachtet werden, dass das
Objekt in den Fotos nicht abgeschnitten ist. Denn nur wenn alle Teile des Objektes abgebildet
sind, kann daraus eine vollständige Punktwolke berechnet werden. Wenn Fotos nur kleine Teile
des Objektes abbilden, kann es vorkommen, dass aus diesen Fotos keine Information für die
Punktwolke gewonnen werden kann und sie folge dessen verworfen werden. Das heiÿt sie würden
9
KAPITEL 3. REKONSTRUKTION VON GEBÄUDEGEOMETRIE ANHAND FOTOS
erst gar nicht in den Datensatz mit aufgenommen werden. Dies wäre schade, denn gute Fotos
sind nicht nur beim Erzeugen der Punktwolke wichtig, sondern auch beim Aufbringen der Textur.
Es kann durchaus vorkommen, dass zwar ein Polygon berechnet werden kann, wenn aber alle
Fotos mit einer guten Textur für dieses Polygon verworfen werden würden, kann folge dessen
auf die erzeugte Geometrie keine Textur aufgebracht werden. Beispiele für Fotos und der daraus
resultierenden Punkwolke sind in Abbildung
3.1 veranschaulicht. Andererseits müssen die Fotos
in keiner bestimmten Reihenfolge aufgenommen werden oder die Kamera exakt ausgerichtet
sein. Denn die Reihenfolge der Fotos wird beim Laden des Datensatzes neu berechnet. Etwaige
schief aufgenommene Fotos oder ob das Foto in Hoch- oder Querformat ist, beeinträchtigen das Erstellen der Punktwolke nicht. Auch beim manuellen Bearbeiten, spielt dies keine
Rolle. Denn die Applikation beachtet derartige Fälle und gleicht etwaige Abweichungen wieder aus.
(a) Ungeeignetes Foto
(b) Geeignetes Foto
(c) Punktwolke
Abbildung 3.1: Beispiel einiger Fotos und der daraus resultierenden Punktwolke
(a) Dieses Foto ist eher ungeeignet, da das Gebäude darauf abgeschnitten ist. Hier sei
angemerkt, dass es trotzdem Bestandteil eines Datensatzes ist und nicht verworfen wurde. (b)
Dieses Foto ist ideal, da es das ganze Gebäude frontal und ohne störende Objekte zeigt. (c) Die
Punktwolke die aus dem Datensatz erzeugt wurde, zu dem die beiden Fotos gehören.
10
KAPITEL 3. REKONSTRUKTION VON GEBÄUDEGEOMETRIE ANHAND FOTOS
Replicate erstellt die Punktwolke aus den Fotos nicht selbst. Es verwendet dazu die Applikation
Photosynth. Photosynth ist eine Software von Microsoft und es können damit neben Punktwolken
noch Panorama Bilder erstellt werden.
Musialski et al. [13] verwendeten nachfolgend beschriebenen Vorgang um aus Fotos eine
Punktwolke zu erstellen. Als erstes wird Structure from Motion angewendet. Dies ist ein
Prozess, der aus zwei-dimensionalen Bildinformationen, wie zum Beispiel mehrere Bilder aus
unterschiedlichen Perspektiven oder Positionen, Punkte im drei-dimensionalen Raum erzeugt.
Um die aufgenommenen Fotos im Raum zu orientieren suchen Pollefeys et al. [14], S 4,
zuerst sogenannte Feature Points, zu Deutsch Merkmalspunkte. Dabei ist darauf zu achten,
die richtige Art von Punkten zu nden. Denn Feature Points müssen in sämtlichen Fotos
gefunden werden. Vorausgesetzt dieser Punkt ist in einem Foto enthalten. Dazu müssen sie sich
unter anderem deutlich von ihrer Umgebung unterscheiden. Wie zum Beispiel eine Ecke eines
Hochhauses. Das Hochhaus selbst ist meist eher dunkel und der Himmel hell. Die Nachbarn
eines solchen Eckpunktes sind im Hochhaus einerseits so ähnlich wie der Eckpunkt selbst,
wahrscheinlich ein bisschen heller. Andererseits weiÿen sie, im Bereich des Himmels, eine ganz
andere Farbe auf.
Des Weiteren werden sogenannte SIFT Punkte gesucht. Diese Abkürzung steht für Scaleinvariant feature transform und bedeutet übersetzt folgendes: Punkte, die durch Skalierungen
oder Transformationen nicht verändert werden. Derartige Punkte zu nden ist wichtig, denn sie
haben den Vorteil, dass sie in jedem Bild, egal aus welchen Winkel es aufgenommen wurde, eindeutig erkennbar sind. Lowe et al. [15], S 2, suchen zuerst Punkte, die weder durch Verzerrungen
oder ihrer Orientierung verändert werden können. Als nächsten wird zu jedem gefunden Punkt
dessen Position und Skalierungsfaktor gefunden. Das Ergebnis dieses Schrittes sind sogenannte
Keypoints, also Schlüsselpunkte. Als nächstes werden eine oder mehrere Orientierungen jedes
dieser zuvor gefundenen Keypoints berechnet. Alle Daten für nachfolgenden Operationen werden
an dieser Orientierung transformiert. Im vierten und letzten Schritt wird die Neigung des Bildes
mit einem Skalierungsfaktor und an jedem Keypoint berechnet.
Wenn Feature und SIFT Points in den Bildern gefunden wurden, können die Fotos zueinander
ausgerichtet und im Raum orientiert werden. Das bedeutet die Position und Ausrichtung der
Kamera jedes einzelnen Fotos ist nun berechnet und kann visuell dargestellt werden.
Sind diese Punkte bestimmt, berechnen Musialski et al. [13] die Eigenschaften der Fotos
und somit auch die Eigenschaften der Kameras. Nun können die Punkte im drei-dimensionalen
Koordinatensystem bestimmt und folge dessen die Punktwolke erzeugt werden. Wie zuvor erwähnt
erzeugt die Applikation Photsynth für Replicate die Punktwolke aus den Fotos. Der Datensatz
der dadurch entsteht wird nach dem Starten des Projekts geladen und somit die Punktwolke
importiert.
3.1.2 Erzeugung von Geometrie anhand einer Punktwolke
Auch bei der Beschreibung des Vorgangs wie Gebäudegeometrie aus einer Punktwolke erzeugt
wird, liegt der Fokus auf dem Projekt an dem Replicate ansetzt. Dieses beschreiben Arikan et
al. [11] mit O-Snap: Optimization-Based Snapping for Modeling Architecture.
11
KAPITEL 3. REKONSTRUKTION VON GEBÄUDEGEOMETRIE ANHAND FOTOS
Bei der Erzeugung der Geometrie gibt es eine automatisierte und eine interaktive Phase.
Die automatisierte Phase teilt die Punktwolke in Teilmengen, die im Raum ziemlich auf gleicher
Ebene liegen. Diese Teilmengen werden im Forschungsprojekt Segmente genannt und auf diesen
wird im Zuge der Polygonalisierung das dazugehörige Polygon berechnet. Dieser Prozess ist
in Abbildung
3.2 zu erkennen. Auch hier ist kein perfektes Ergebnis zu erwarten. Es kann
vorkommen, dass sich Lücken zwischen den Ecken der Polygone benden. Der sogenannte
Snapping-Prozess schlieÿt diese Lücken wieder. In der interaktiven Phase kann das erstellt Modell
nachbearbeitet werden. Manche Operationen am Modell nden im zwei-dimensionalen Raum
statt um die Bearbeitung für den Benutzer zu vereinfachen.
Abbildung 3.2: Aus einer Punktwolke wird ein Segment und daraus eine Fläche bestimmt (Quelle: [11], S 4)
(Links) Mittels einem RANSAC-Algorithmus Punkte in einer Ebene nden. (Mitte-Links) Durch
Verwendung eines LMS eine Ebene bestimmen, auf der die meisten Punkte liegen.
(Mitte-Rechts) Fenster als eigene Geometrie und nicht als Teil der Wand bestimmen. (Rechts)
Wand und Fenster als Geometrie dargestellt.
Zuerst werden die Segmente mit einem RANSAC-Algorithmus berechnet. Schnabel et al. [16]
können mit ihrem RANSAC-Algorithmus aus einer Punktwolke einfache geometrische Formen
erzeugen. Wie zum Beispiel eine Ebene, Kreis, Kugel, Zylinder, Kegel oder einen Ring. Dabei
beeinussen Ausreiÿer in der Punktwolke und Noise, zu Deutsch Rauschen, das Ergebnis
nicht beziehungsweise nur sehr gering. Dies ist eine wichtige Voraussetzung, denn es ist kaum
möglich, dass alle Punkte exakt auf der gleichen Ebene im Raum liegen. Es wird immer minimale
Unterschiede geben, obwohl die Punkte von derselben Fläche in den Fotos stammen. Daher
sollen sie auch als auf einer Ebene liegend erkannt werden. Schnabel et al. betrachten für
die Berechnung immer nur einen kleinen Teil und testen diesen gegen den Rest der ursprünglichen Punktwolke. Dabei wird jene Form, die die meisten Punkte einschlieÿt schlussendlich
ausgewählt. Replicate verwendet den RANSAC-Algorithmus speziell beim Erzeugen der Ebenen.
Dabei wird aus der Punktwolke eine Ebene mit einer Teilmenge der Punkte berechnet. Um
zu überprüfen ob die Ebene plausibel ist, darf die Normale der Ebene nicht zu sehr von den
Normalen der Punkte in dieser Ebene abweichen. Dazu wird ein Winkel zwischen der Normalen der Ebene und der der Punkte berechnet. Dieser darf nicht gröÿer als ein bestimmter Wert sein.
12
KAPITEL 3. REKONSTRUKTION VON GEBÄUDEGEOMETRIE ANHAND FOTOS
Ist dieser Schritt beendet wird mittels einem Least Medium of Squares (LMS) Algorithmus
auf das Ergebnis des RANSAC angewendet. Dabei werden alle Punkte, die ungefähr auf einer
Ebene liegen, als auf einer Ebene liegend deniert. Jedoch sollen zum Beispiel Fenstervorsprünge
oder kleine Balkone, die so circa auf der Ebene wie die dazugehörige Wand liegen, nicht als in
der Ebene liegend erkannt werden sondern eine eigene Geometrie bilden. Durch die Anwendung
eines LMS-Algorithmus' werden derartige Teile erkannt und als Kinder beziehungsweise Teil der
Fassade deniert.
Sind die Segmente der ursprünglichen Punktwolke bestimmt, werden nun die Auÿengrenzen für die darauf liegenden Polygone berechnet. Dazu werden zwei-dimensionale
α-Shapes
verwendet. Vereinfacht ausgedrückt wird dabei eine zwei-dimensionale geometrische Form aus
den Punkten erstellt. Diese Punkte benden sich auf der Ebene des Segments. Um die Punkte
wird so etwas Ähnliches wie eine konvexe Hülle gelegt. Das bedeutet, dass die Punkte sozusagen
eingekreist werden. Anschlieÿend wird eine Triangulation angewendet und aus den Punkten ein
Mesh, zu Deutsch ein Netz, gebildet.
Bei dem bis dato erstelltem Polygon ist die Auÿenlinie nur sehr grob beziehungsweise ungenau. Jedoch weiÿen Gebäude sehr glatte und gerade Kanten auf. Daher wird mittels einer
abgeleiteten
`1 -Sparse Methode von Avron et al. [17] gearbeitet. Es wird eine abgeleitete Methode
der Methodik von Avron et al. verwendet, da deren Rechenaufwand geringer ist. Anschlieÿend
werden wie bei Fleishman et al. [18] versucht die Nachbarn jedes Eckpunktes zu nden. Dabei
wird von einem - Nachbar freien - Punkt gestartet. Pro Durchlauf wird nun ein benachbarter
Punkt zum Set hinzugefügt. Das Set beziehungsweise der Bereich des Polygons wird somit erweitert. Zwei Punkte sind dann Nachbarn, wenn Punkt A im Bereich von Punkt B liegt und vice versa.
Nun sind die Polygone und deren Eckpunkte berechnet. Darauf folgend werden die Normalvektoren der Eckpunkte bestimmt. Dieser Vorgang ndet im zwei-dimensionalen Raum statt.
Dabei spielen die zuvor errechneten Nachbarschaften der Punkte ein wichtige Rolle. Denn beim
Bilden der Normalvektoren werden zwei Dinge beachtet. Der zu bildende Normalvektor des
Eckpunktes darf sich nicht allzu sehr von den Normalvektoren der Nachbarn unterscheiden.
Da sie alle auf der gleichen Ebene liegen. Des weiteren darf der zu bildende Normalvektor nicht allzu sehr von seiner ursprünglichen Richtung abweichen. Es muss folge dessen ein
Mittelmaÿ zwischen der Richtung der anderen Vektoren und des eigenen Vektors gefunden werden.
Da die Auÿenlinie des Polygons noch immer nicht frei von Ausreiÿern ist, wird die Linie
entlang der Grenzpunkte geglättet. Dabei wird, wie beim Bilden der Normalvektoren, darauf
geachtet, dass die Punkte nicht allzu sehr von ihrer ursprünglichen Position abweichen. Würde
dies nicht, könnte das Polygon zum Beispiel schrumpfen. Im darauf anschlieÿenden und letzten
Schritt wird auf der Auÿenlinie, den Eckpunkten und den Normalvektoren ein sogenannter
Eckpunkterkennungs-Algorithmus angewendet. Somit ist schlussendlich das Polygon erstellt und
kann bearbeitet beziehungsweise eine Textur aufgebracht werden. Die einzelnen Schritte der
Polygonalisierung sind in Abbildung
3.3 veranschaulicht.
Die erzeugten Polygone stehen nicht immer in optimaler Position zueinander. Es kann vorkommen, dass sich Lücken zwischen den Ecken oder Kanten der Polygone benden. Der
sogenannte Snapping-Prozess soll dieses Problem lösen. Dieser erkennt sich nahe liegende
Eckpunkte oder Eckpunkte und Kanten sowie sich nahe liegende Eckpunkte und Flächen. Der
13
KAPITEL 3. REKONSTRUKTION VON GEBÄUDEGEOMETRIE ANHAND FOTOS
Snapping-Prozess zieht nun die Polygone an diesen Punkten zusammen und gleicht etwaige
Unterschiede in den Ebenen der Polygone aus. Dadurch werden die Lücken geschlossen und das
Modell wird korrigiert. Während dem Snapping-Prozess werden Fehlerkorrekturen angewendet
um Kreise oder überlappungen in den Polygonen zu verhindern.
Abbildung 3.3: überblick über die Polygonaliseriung (Quelle: [11], S 4)
(Oben Links) Zuerst werden die Grenzpunkte des Polygons gesucht. (Oben Rechts) Hier wird
nach den Nachbarn eines Punktes gesucht. (Mitte Links) Die Normalen jedes Punktes werden
initialisiert. (Mitte Rechts) Die Normalen jedes Punktes werden in Hinblick auf die Nachbarn
angepasst. (Unten Links) Die Grenzpunkte des Polygons werden geglättet. (Unten Rechts)
Durch einen Eckpunkterkennungs-Algorithmus wird die endgültige Form des Polygons erzeugt.
3.2 Texturierung rekonstruierter Gebäudegeometrie
Auch hier liegt der Fokus auf den Vorgang den das Projekt Replicate verwendet und auf dem
diese Arbeit aufbaut, nämlich auf Musialski's et al. [13] Projekt zum Interactive Multi-View
Façde Image Editing.
Um Texturen auf ein Modell aufzubringen, muss ein Modell vorhanden sein. Somit muss
aus den Fotos mittels Structure from Motion eine Punktwolke berechnen worden sein. Anschlieÿend muss es möglich gewesen sein in der Punktwolke Ebenen zu nden. Denn wenn es keine
brauchbaren Ebenen und folge dessen keine Polygone gibt, gibt es nichts auf das eine Textur
aufgebracht werden kann. Für jedes Polygon werden während der automatischen Rekonstruktion
für jeden Pixel die vier besten Shots berechnet. Jedem Pixel der Textur wird die Farbe des
entsprechenden Pixels des besten Shots zugeordnet und somit die Textur zusammengesetzt. Die
berechnete Textur kann jedoch störende Objekte enthalten, die durch manuelle Nachbearbeitung
entfernt werden können.
14
KAPITEL 3. REKONSTRUKTION VON GEBÄUDEGEOMETRIE ANHAND FOTOS
Beim Aufbringen der Textur auf ein Polygon wird zuerst um das Polygon eine Bounding
Box erzeugt. Dies geschieht aus dem Grund, dass Polygone keine rechteckige Form aufweisen,
Texturen aber schon. Dadurch, dass die Gröÿe der Textur auf die Bounding Box des Polygons
angepasst und im weiteren Sinn auf die Bounding Box aufgebracht wird, passt die Textur genau
auf das Polygon. Um die ursprüngliche Textur zu erhalten, wird für jeden Pixel auf der Bounding
Box der beste Shot berechnet. Das bedeutet, dass der Pixel des Fotos des besten Shots diesen
gerade betrachteten Pixel einfärbt. Bei dieser Berechnung wird zuerst der Einfallswinkel der
Kamera auf die Ebene erzeugt. Die Ebene wird dabei durch ihren Normal-Vektor repräsentiert.
Mit Verwendung des Sinussatzes wird nun die Gröÿe des projizierten Bereichs des Shots auf
die Ebene berechnet. Dabei wird der Abstand von Kamera zur Fläche und Einfallswinkel
benötigt. Diese Berechnung wird mit allen Kameras durchgeführt und anschlieÿend werden
alle Ergebnisse miteinander verglichen. Dabei wird jedes Ergebnis während der Berechnung
in einer Sortierten Liste gespeichert. Da in diese Datenstruktur vom kleinsten zum gröÿten
Wert sortiert ist, wird die Reihenfolge der Liste umgedreht und die Nummern der besten vier
Shots in den RGBA-Werten des Pixels gespeichert. Dabei wird der Shot mit dem höchsten
Wert in den R-Wert des Pixels gespeichert, der mit dem zweit höchsten Wert in den G-Wert
und so weiter. Denn umso höher das Ergebnis, desto geeigneter ist der Shot für diesen Pixel. Es werden die besten vier Shots pro Pixel gespeichert, da diese Information bei einem
Modus der Texturbearbeitung benötigt wird, nämlich dem Schäl-Brush. Da dieser Vorgang für
jeden einzelnen Pixel durchgeführt wird, wird so die Textur durch mehrere Fotos zusammengefügt.
Da die Textur aus mehreren Fotos besteht, können an den Nähten sogenannte Artefakte
entstehen. Ein Beispiel einer zusammengesetzten Fassaden-Textur ist in Abbildung
3.4 zu
erkennen. Nähte in einer zusammengesetzten Textur sind Grenzen an denen zwei verschiedene
Fotos aufeinander treen. Um diese Artefakte zu beseitigen wird ein Gradient-Domain Stitching
Algorithmus verwendet. Pérez et al. [19] waren eine der ersten, die die nachfolgend beschriebene
Methodik anwendeten. Bei einem Grandient-Domain Stitching Algorithmus werden die Ableitungen von zwei Pixeln anstatt von den Pixeln selbst zusammengefügt. Zuvor wird jedoch eine
Farbkorrektur nach Reinhard et al. [20] angewendet um bessere Ausgangswerte und somit auch
bessere Ergebnisse zu erhalten.
An diesem Punkt ist die Fassade rekonstruiert, jedoch können die zuvor beschriebene Algorithmen nicht erkennen was für einen Benutzer als störende Objekte, wie zum Beispiel Bäume,
Personen oder Straÿenschilder, sind und diese daher in die Textur mit einbeziehen. Das bedeutet
nicht, dass die Algorithmen schlecht sind. Sie vollbringen genau das wofür sie da sind. Sie
berechnen pro Pixel den besten Shot und durch Optimierungen entstehen keine Artefakte
beziehungsweise unnatürliche Farbverläufe. Für das Entfernen der störenden Objekte aus der
Textur gibt es nach Musialski et al. [13] zwei verschiedene Ansätze.
Die Punkte der Hindernisse, also der der Autos, Personen, Bäume et cetera, liegen auch in
der Punktwolke vor der Ebene des Polygons, auf das die Textur aufgebracht wird. Daher wird
jedem Pixel eine Art Sichtbarkeitsstatus zugeordnet, das bedeutet sie sind entweder sichtbar
oder nicht. Dadurch werden Punkte erkannt, die durch andere Punkte verdeckt sind. Somit
können Kameras die zuvor eventuell eine hohe Wertigkeit, also Kameras die zuvor eventuell
als bester Shot für einen Pixel ausgewählt wurden, als Hindernis herausgeltert werden, da sie
andere Punkte verdecken. Folge dessen wird auch die Textur dieses Shots herausgeltert und
das störende Hindernis wird nicht mehr in das Modell beziehungsweise die Textur miteinbezogen.
Die zuvor beschriebene Methode besteht aus automatischen Berechnungen, die folgende aus
15
KAPITEL 3. REKONSTRUKTION VON GEBÄUDEGEOMETRIE ANHAND FOTOS
manueller Bearbeitung. Der Benutzer wird am besten erkennen, wenn es sich um ein störendes
Objekt handelt, darum kann er manuell aus Hindernis eigenes Modell erzeugen. Dabei wird die
Lage im Raum über Punktwolke bestimmt. Das bedeutet die Geometrie für das Hindernis wird
über die Punkte eingezeichnet und erzeugt. Darauf wird anschlieÿend eine Textur aufgebracht. Ist
die Modellierung fertig kann das Hindernis einfach aus der Szene gelöscht werden und somit ist
auch das störende Objekt aus der Textur des Polygons entfernt worden.
(a) Zusammengesetzte Textur
(b) Eingefärbte zusammengesetzte Textur
Abbildung 3.4: Beispiel einer zusammengesetzten Textur
(a) Fassaden-Textur, die aus mehreren Fotos der Shots zusammengesetzt wurde. (b) Die
zusammengesetzte Fassaden-Textur wurde je nach verwendeten Foto färbig hinterlegt.
16
4 Tools zur interaktiven Texturgenerierung
In diesem Kapitel werden Tools zum Bearbeiten des Gebäudemodells sowie der aufgebrachten
Textur beschrieben. Sämtliche Tools, auf die hier genauer eingegangen wird, beziehen sich auf das
zuvor erwähnte Projekt Replicate und werden in diesem verwendet. Des Weiteren wird zwischen
Tools, die im Projekt bereits vorhanden sind und die neu entwickelt wurden unterschieden. Die
Abgrenzung zwischen bereits bestehende und neu entwickelte Tools ist oft nicht einfach. Im Laufe dieser Arbeit wurden Funktionalitäten bestehender Tools erweitert. Solche Tools sowie deren
Erweiterungen werden in einem eigenen Abschnitt beschrieben.
4.1 Bereits bestehende Tools
Wie bereits in den vorigen Kapiteln beschrieben ist die Rekonstruktion eines Gebäudemodells ein
Prozess, der in drei grobe Abschnitte unterteilt werden kann. Zuerst wird eine Punktwolke aus
den aufgenommenen Fotos erstellt, dann werden Ebenen und Polygone aus dieser Punktwolke
berechnet und anschlieÿend wird eine Textur auf den Polygonen aufgebracht. Das Ergebnis jedes
Abschnittes kann manuell bearbeitet werden. Das wären zum einen die Punktwolke, zum anderen
die Polygone und die Texturen des Modells.
4.1.1 Editieren der Punktwolke
Nachdem die Applikation gestartet und ein Datensatz geladen wurde, erscheint die aus den Fotos
rekonstruierte Punktwolke im Applikationsfenster. Auf den Fotos benden sich nicht nur das
Gebäude sondern auch Bäume, Personen, Autos, Nachbargebäude oder sonstiges. Diese sollen
nicht in das rekonstruierte Modell mit ein ieÿen und werden daher aus der Punktwolke entfernt.
Aus diesem Grund wurden Tools entwickelt um die Punktwolke zu säubern.
Die Punktwolke zu säubern bedeutet Teile aus der Punktwolke zu löschen, dieser Vorgang
sollte ezient und einfach sein. Es gibt drei Tools mit denen Teile der Punktwolke ausgewählt und
anschlieÿend gelöscht werden können. Diese sind das Pinsel-, das Lasso- und das Rechteck-Tool.
Die Tools sind in Abbildung
4.1 zu sehen.
Der Pinsel
Das Pinsel-Tool erinnert an den Pinsel des bekannten Zeichenprogramms Paint. Dargestellt wird
dieses Tool durch einen Kreis, dessen Mittelpunkt der Mauszeiger ist. Wird die Maus bewegt,
bewegt sich auch der Kreis des Pinsels mit. Die Gröÿe des Kreises ist mittels dem Mausrad
verstellbar. Wenn die linke Maustaste gedrückt wird, werden alle Punkte der Punktwolke innerhalb
des Kreises des Pinsels markiert. Wenn die Maus während der gedrückten linken Maustaste bewegt
wird, wird eine Linie gezeichnet und alle Punkte innerhalb dieser Linie sind markiert. Wenn die
Gröÿe des Kreises verändert wird, wird die gezeichnete Linie je nach dem dicker oder dünner. Alle
markierten Punkte können anschlieÿend gelöscht werden. Mit dem Pinsel-Tool wird frei Hand
17
KAPITEL 4. TOOLS ZUR INTERAKTIVEN TEXTURGENERIERUNG
über die Punktwolke gezeichnet. Durch dieses Tool können leicht kleine Bereiche, die mit den
anderen Tools nur schwer zu markieren sind, erreicht werden. Wenn die Gröÿe des Pinsels sehr
groÿ gestellt ist, können damit auch einfach groÿe Teile der Punktwolke entfernt werden.
(a) Der Pinsel
(b) Das Lasso
(c) Das Rechteck
Abbildung 4.1: Tools zum Bearbeiten der Punktwolke
(a) Darstellung des Pinsel-Tools während dem Markieren der Punkte. (b) Darstellung des
Lasso-Tools während dem Markieren der Punkte sowie die dadurch selektierten Punkte. Hier ist
zu erkennen, dass dieses Tool zwischen Anfang- und Endpunkt eine Gerade zieht. (c) Markierte
Punkte mittels dem Rechteck-Tool.
Das Lasso
Dieses Tool erinnert an das Lasso von Bildbearbeitungsprogrammen wie zum Beispiel Photoshop. Damit wird ähnlich wie beim zuvor erwähnten Pinsel-Tool eine Linie frei Hand um die
Punkte, die gelöscht werden sollen, gezeichnet. Beim Lasso-Tool ist jedoch die Dicke der Linie
nicht veränderbar. Ist dieses Tool aktiv wird durch Drücken der linken Maustaste das Zeichnen
der Linie begonnen, wird die Maustaste wieder gelöst ist der Zeichenvorgang beendet. Die gezeichnete Form muss nicht geschlossen sein, denn es wird automatisch eine gerade Linie zwischen
Anfangs- und Endpunkt berechnet und somit die Form geschlossen. Nun werden alle Punkte der
Punktwolke, die sich innerhalb dieser Form benden markiert und können anschlieÿend gelöscht
werden. Mit dem Lasso-Tool können sehr kleine, aber auch sehr groÿe Bereiche der Punktwolke
markiert werden. Geschickt angewendet kann das Editieren der Punktwolke erheblich vereinfacht
werden, wenn zum Beispiel neben einer geraden Wand Teile gelöscht werden sollen, wird mit dem
18
KAPITEL 4. TOOLS ZUR INTERAKTIVEN TEXTURGENERIERUNG
Lasso der Anfangspunkt an der oberen Ecke der Hauswand gesetzt. Anschlieÿend wird die Linie
über alle Punkte gezeichnet, die seitlich der Wand gelöscht werden sollen. Die untere Ecke der
Hauswand deniert dabei den Endpunkt der Linie. Da zwischen Anfangs- und Endpunkt der Linie
des Lasso-Tools eine gerade Verbindung berechnet wird, verläuft mit diesem Trick der markierte
Teil genau neben der Wand ohne sie einzeichnen zu müssen.
Das Rechteck
Mit dem Rechteck-Tool wird ähnlich wie bei Zeichenprogrammen ein Rechteck oder ein Quadrat
über die zu löschenden Punkte der Punktwolke gezeichnet. Mittels drücken der linken Maustaste
wird die linke obere Ecke des Rechtecks deniert. Anschlieÿend wird durch das Bewegen
der Maus ein Rechteck aufgespannt. Dabei deniert der Mauszeiger die rechte untere Ecke
des Rechtecks. Während das Rechteck eingezeichnet wird, wird es durch die Auÿenlinien des
Rechtecks dargestellt. Wie beim Lasso-Tool ist die Dicke der Linie nicht veränderbar. Ist der
Zeichenvorgang des Rechtecks beendet werden alle Punkte, die sich innerhalb des Rechteckes
benden, markiert und können anschlieÿend gelöscht werden. Vor allem in Verbindung mit den
nachfolgenden Mengenoperationen kann durch das Rechteck-Tool das Säubern der Punktwolke
ezienter gestaltet werden.
Ist
das
Bereinigen
der
Punktwolke
beendet,
wird
die
Polygonalisierung
gestartet.
Dabei
werden Ebenen und darauf Polygone aus der Punktwolke erzeugt. Wenn dieser Vorgang abgeschlossen ist, ist die Punktwolke in kleine Punktwolken aufgeteilt, auf denen die Polygone liegen.
Die einzelnen kleinen Punktwolken können unabhängig voneinander gelöscht werden.
4.1.2 Editieren der Polygone
Polygone, die durch die Polygonalisierung entstanden sind, haben oft keine ideale Form. Also
Flächen, die die Form des Gebäudes aufweisen und exakt zusammen passen. Es kann auch vorkommen, dass nur Teile einer Fläche des Gebäudes rekonstruiert werden konnten oder eine Wand
in mehreren Polygonen aufgeteilt ist. Deshalb muss es die Möglichkeit geben Polygone manuell
nachbearbeiten zu können.
Die Form des Polygons bearbeiten
Jedes Polygon kann durch einen Klick der linken Maustaste ausgewählt werden. Wenn ein Polygon
selektiert ist, sind die Linien und Eckpunkte dieses Polygons visuell hervorgehoben. Während dem
Bearbeiten eines selektierten Polygons, kann wiederum eine Kante oder ein Eckpunkt ausgewählt
werden. Diese selektierte Kante oder Eckpunkt ist ebenfalls visuell hervorgehoben es wird anders
farbig dargestellt. Selektierte Kanten sowie Eckpunkte können verschoben und somit die Form des
Polygons verändert werden. Zudem kann ein Eckpunkt an einer beliebigen Stelle an einer Kante
auf dem selektierten Polygon hinzugefügt oder gelöscht werden. Wenn ein Eckpunkt hinzugefügt
wird, wird die Kante an diesem Punkt sozusagen geteilt. Wenn jedoch ein Eckpunkt gelöscht
wird, verschmelzen die beiden Kanten neben dem gelöschten Vertex. Es kann auch das gesamte
selektierte Polygon in der Ebene, in der es liegt, verschoben werden.
19
KAPITEL 4. TOOLS ZUR INTERAKTIVEN TEXTURGENERIERUNG
Polygone erstellen und löschen
Es besteht auch die Möglichkeit neue Polygone zu erstellen. Der Zeichenvorgang beim Erstellen
eines neuen Polygons geht im zwei-dimensionalen Raum vor sich. Dabei wird als Hilfsmittels zur
Orientierung ein Gitter über der Ebene, auf der gezeichnet wird, angezeigt. Wenn ein Polygon
markiert ist, wird dieses Ebenen-Gitter auf der Ebene, auf der das selektierte Polygon liegt aufgespannt. Ist jedoch keine Kante selektiert, wird die Ebene zwischen x- und y-Achse aufgespannt. Sie
liegt sozusagen am Boden des Koordinatensystems. Wenn das Ebenen-Gitter aufgespannt ist,
können die Eckpunkte des neuen Polygons eingezeichnet werden. Das neu erstellte Polygon spannt
sich mit Hinzufügen eines jeden Punktes weiter auf. Wenn das neue Polygon fertig aufgespannt ist,
kann durch einen Klick auf den ersten eingezeichneten Eckpunkt des neuen Polygons der Prozess
beendet werden.
Neben dieser Methode gibt es noch eine weitere Möglichkeit ein neues Polygon zu erstellen. Wenn
ein Polygon selektiert und darauf eine Kante ausgewählt ist, kann direkt an dieser Kante ein neues
Polygon erzeugt werden. Um das Einzeichnen für den Benutzer trotzdem einfach zu gestalten,
blickt die Kamera von Oben auf das ausgewählte Polygon. Von der Kante des ausgewählten Polygon verläuft eine Gerade zum Mauszeiger, die mittels bewegen der Maus in ihrer Position und
Länge verändert werden kann. Ist die Linie eingezeichnet, wird ein Dreieck an der ausgewählten
Kante eingezeichnet und kann anschlieÿend wie zuvor beschrieben bearbeitet werden.
Neben der Möglichkeit ein Polygon zu erstellen kann ein bereits existierendes Polygon gelöscht
werden.
4.1.3 Segmente zusammenfügen und teilen
Auf die Datenstruktur der Segmente wurde bis jetzt noch nicht genauer eingegangen. Wie bereits
erwähnt werden bei der Polygonalisierung auf der gesäuberte Punktwolke Ebenen gesucht. Auf
diesen Ebenen liegen die Polygone und die anfängliche Punktwolke wird ebenfalls auf diesen
Ebenen in kleine einzelne Punktwolken aufgeteilt. Ein Segment ist also nun die Kombination aus
den kleinen Punktwolken mit den darauf liegenden Polygonen sowie weitere Punktwolken-Polygon
Kombinationen auf der gleichen Ebene.
Wie zuvor erwähnt können mehrere Polygone auf der gleichen Ebene liegen. Es kann zum
Beispiel vorkommen, dass eine Wand in mehrere Polygone aufgeteilt ist. Ist ein derartiger
Fall vorhanden, kann ein selektiertes Polygon zu einem zweiten Polygon in derselben Ebene
beziehungsweise im selben Segment verschoben werden. Wenn bei diesem Verschieben eines
Polygons ein bestimmter minimaler Abstand zwischen den beiden Polygonen unterschritten wird,
wird eine konvexe Hülle um die Eckpunkte der beiden Polygone gelegt und ein einzelnes neues
Polygon entsteht. Das Segment, das vorher zwei Polygone auf seiner Ebene enthalten hat, enthält
nun ein einziges Polygon kombiniert aus den beiden vorigen.
Bei der Berechnung der Ebenen in der gesäuberten Punktwolke kann es vorkommen, dass
zum Beispiel Fenster auf der gleichen Ebene wie die Hausmauer liegen oder Flächen, die eigentlich
zusammengehören getrennt werden. Also auf zwei verschiedenen Ebenen liegen, die sich nur
minimal voneinander unterscheiden. Auch auf solche Fälle soll mittels manueller Bearbeitung
eingegangen werden können. Derartige Fälle decken das Zusammenfügen sowie das Teilen von
Segmenten ab. Wenn eine Teil-Punktwolke selektiert ist, dann wird damit auch das Segment
zu dem diese Teil-Punktwolke gehört selektiert. Da diese Datenstruktur schwer zu visualisieren
ist, werden sämtliche Interaktionen auf den Segmenten durch die Teil-Punktwolken repräsentiert.
20
KAPITEL 4. TOOLS ZUR INTERAKTIVEN TEXTURGENERIERUNG
Es ist nun eine kleine Punktwolke ausgewählt, wenn nun eine weitere Teil-Punktwolke selektiert
wird, werden beim sogenannten Segment-Merging diese beiden Segmente werden miteinander
vereint. Im Zuge der Vereinigung wird dabei eine neue Ebene berechnet. Der dafür verwendete
Algorithmus bildet die Ebene dort wo sich die meisten Punkte benden. Das bedeutet wenn zum
Beispiel die Segmente einer Hauswand mit einem darin bendlichen Fenster verbunden werden
sollen, bendet sich die neu berechnete Ebene auf der Ebene der Hauswand, da hier im Normalfall
mehr Punkte enthalten sind. Ist dieser Vorgang abgeschlossen werden für diese neue Ebene die
Polygone ebenfalls neu berechnet. Die Teil-Punktwolken bleiben an der Stelle wo sie sich vor dem
Segment-Merging befanden. Da die Ausgangsstruktur der Punktwolke nicht verändert werden
soll. Wenn aber nun eine dieser beiden Teil-Punktwolken selektiert wird, wird folge dessen auch
die andere selektiert da sie nun zusammengehören. Im vorigen Beispiel bedeutet das, dass wenn
die Punktwolke des Fensters selektiert wird, wird nun auch die Punktwolke der Wand selektiert.
Ein Segment kann nicht nur zusammengefügt, sondern auch in zwei geteilt werden. Dazu
wird eine Teil-Punktwolke selektiert und anschlieÿend wird das Segment anhand der TeilPunktwolke geteilt. Das Segment wird wie beim Zusammenfügen anhand der Anzahl der Punkte
geteilt. Es werden die dazugehörigen Polygone neu berechnet. In diesem Fall muss aber die Ebene
nicht neu berechnet werden, da sich die beiden neuen Polygone bereits auf der gleichen Ebene
benden.
Ist ein Polygon vollständig bearbeitet und hat es die richtige Position und Form kann nun
auf ein selektiertes Polygon die Textur aufgebracht werden.
4.2 Erweiterte Tools
4.2.1 Mengenoperationen
Hier sei erwähnt, dass die Mengenoperationen eine Erweiterung der zuvor erwähnten Tools zum
Säubern der Punktwolke sind. Die nachfolgend beschriebenen Mengenoperationen sind bei allen
drei Tools einsetzbar. Sie wurden entwickelt um das Bereinigen der Punktwolke noch eektiver
zu gestalten. Die implementierten Mengenoperationen sind von Bildbearbeitungsprogrammen wie
zum Beispiel Photoshop oder Gimp bekannt. Mit ihnen kann ein bereits markierter Teil der
Punktwolke durch einen zweiten markierten Teil verändert werden. Wenn ein Teil der Punktwolke
ausgewählt ist, kann mittels einer zweiten Auswahl und der Kombination einer der drei Mengenoperation der Bereich der selektierten Punkte erweitert beziehungsweise verkleinert werden. Es
sind folgende Operationen möglich: die Vereinigungs-, die Dierenz-, die Durchschnitts- und die
Komplementärmenge.
Bei der
Vereinigungsmenge
werden alle Punkte der ersten sowie alle Punkte der zweiten
Auswahl markiert. Wenn zum Beispiel mit dem Lasso-Tool ein Busch in der Punktwolke
ausgewählt wird und mit der zweiten Auswahl ein Auto, dann sind durch das Bilden der
Vereinigungsmenge der Bush und das Auto markiert.
Bei der
Dierenzmenge
werden alle Punkte der ersten Auswahl ohne die Punkte der zweiten
Auswahl markiert. Es werden sozusagen Teile der ersten Auswahl durch die zweite weggeschnitten. Wenn zum Beispiel mit dem Rechteck-Tool zuerst eine ganze Hauswand markiert wird
und anschlieÿend mit der zweiten Auswahl ein Fenster der Hauswand, dann ist durch Bilden der
Dierenzmenge die Hauswand ohne dem Fenster markiert.
21
KAPITEL 4. TOOLS ZUR INTERAKTIVEN TEXTURGENERIERUNG
Durch das Bilden der
Durchschnittsmenge der beiden ausgewählten Bereichen der Punktwolke
sind alle Punkte markiert, die sowohl in der ersten als auch in der zweiten Auswahl markiert
waren. Wenn zum Beispiel mit dem Rechteck-Tool eine ganze Hauswand und mit der zweiten
Selektion ein Fenster markiert wird, dann ist mit der Durchschnittsmenge dieses mal nur das
Fenster ausgewählt.
Zudem kann noch von einer Auswahl die
Auswahl
Komplementärmenge
beziehungsweise die
Inverse
erzeugt werden. Dabei wird die Auswahl umgedreht, das bedeutet dass alle Punkte,
die zuvor nicht markiert waren sind nun markiert sind und vice versa. Vor allem diese Operation
kann das Säubern der Punktwolke erheblich eektiver gestalten. Wenn zum Beispiel mit dem
Rechteck-Tool das gesamte Gebäude markiert und anschlieÿend davon die Inverse Selektion
erzeugt wird, ist alles bis auf das Gebäude selbst selektiert. Nun kann die Auswahl gelöscht
werden und das Säubern der Punktwolke ist fertig. Dies wird in Abbildung
4.2 gezeigt.
Abbildung 4.2: Inverse Auswahl
Hier wurden zuvor die Punkte des Gebäudes mittels dem Rechteck-Tools ausgewählt und
anschlieÿend die inverse Auswahl gebildet. Nun ist alles bis auf das Haus markiert und kann
gelöscht werden.
4.2.2 Der Brush
Mit dem Brushing-Tool wird frei Hand die Textur anderem Foto übermalt. Der Brush wird als
Kreis dargestellt und funktioniert ähnlich wie das zuvor beschriebene Pinsel-Tool zum Säubern der
Punktwolke. Das Foto mit dem die Textur übermalt wird, wird manuell ausgewählt. Wenn in der
Szene ein Shot selektiert ist, wird auf diesem das Foto zugehörig zu diesem Shot angezeigt. Ist
dieses Brushing-Tool aktiv, wird die Textur mit dem Foto des ausgewählten Shots übermalt. Die
Gröÿe des Brushes kann, wie beim zuvor beschriebenen Pinsel-Tool zum Säubern der Punktwolke,
verändert werden.
Da die Häuser sehr unterschiedliche Farben haben, es kann zum Beispiel alleine ein Dach rot
22
KAPITEL 4. TOOLS ZUR INTERAKTIVEN TEXTURGENERIERUNG
oder grau sein oder die Farben der Fassaden variieren über die gesamte Farbpalette hin weg.
Deshalb wird für die Umrisslinie des Brushes jeweils die negative Farbe der Pixel verwendet, die
der Brush überdeckt. Dadurch kann auf jeder möglichen Fassade das Brushing-Tool am besten
erkannt werden. Dies ist möglich, da im Shader jeder Pixel einzeln betrachtet wird und daher
Abfragen auf Pixel-Ebene stattnden. Die nachfolgend beschriebene Berechnung wird für jeden
Pixel der Textur wiederholt. Um den Kreis des Brushes zu berechnet wird die aktuelle Position
der Maus benötigt. Zunächst wird ein Vektor zwischen Maus-Position und aktuell betrachteten
Pixel ausgerechnet. Von diesem Vektor wird die Länge berechnet, wenn diese Länge kürzer als ein
gegebener Radius ist, ist der aktuell betrachtete Pixel im Kreis des Brushing-Tools enthalten. Von
der Länge des Vektors wird nicht die Wurzel gezogen, stattdessen wird der Radius quadriert. Da
das Wurzelziehen eine teurere Rechenoperation als das Quadrieren ist. Der Brush soll aber nur
als Kreislinie und nicht als ausgemalter Kreis dargestellt werden. Deshalb wird abgefragt ob die
berechnete Länge des Vektors im Kreis liegt, aber gröÿer als Radius minus Stärke der Linie ist.
4.3 Neu entwickelte Tools
4.3.1 Interaktionen mit Shots
Wie bereits zuvor beschrieben werden bei der Rekonstruktion des Modells auch die Positionen
der Kameras bestimmt. Die Kameras werden ebenfalls in der Szene an ihren Positionen sowie
ihrer Ausrichtung angezeigt. Sie werden im Projekt sowie in dieser Arbeit Shots genannt. Um
mit den Shots interagieren zu können musste zunächst eine zentrale Verwaltung für alle Shots
eingerichtet werden. Alle Shots sind im sogenannten Shot-Management registriert und können
einzeln selektiert werden. Wenn ein Shot selektiert ist wird die Darstellung dieses Shots verändert.
Mit einem selektierten Shot sind weitere Interaktionen möglich. Eine weitere Eigenschaft der
Shots ist ihre Sichtbarkeit, diese kann für alle Shots entweder ein- oder ausgeschaltet sein. Zudem
kann die Gröÿe aller Shots kleiner oder gröÿer gestellt werden.
Wird ein Shot durch einen Maus-Klick selektiert, wird auf der Fläche des Shots das Foto
projiziert, zu das dieser Shot gehört. Das Foto beziehungsweise die Fläche ist transparent, so
dass das Modell im Hintergrund erkennbar ist. Die Transparenz des Fotos, durch das in der
Shot-View geblickt wird, kann mittels dem Mausrad angepasst werden. In Abbildung
4.3 ist die
aktive Shot-View sowie verschiedene Stufen der Transparenz des Fotos zu erkennen. Wie zuvor
erwähnt, sind weitere Interaktionen mit einem selektierten Shot möglich. Mit einem Doppel-Klick
kann zu einem selektierten Shot hingeogen werden. Die Kamera ist nun so positioniert, dass
der Benutzer genauso durch den Shot hindurch sieht. Dabei stimmt das Modell exakt mit dem
Gebäude im Foto des Shots überein. In diesem Modus, der Shot-View genannt wird, sind keine
weiteren Interaktionen mit der Kamera möglich. Da weitere Interaktionen mit der Kamera wie
zum Beispiel in die Szene hinein- oder hinaus zu zoomen oder die Kamera seitlich zu bewegen
für die Funktionalitäten der Tools zum Editieren des Modells nicht sinnvoll wären. Da das Modell
und das Foto genau übereinstimmen, kann aus dieser Shot-View das Modell mit sämtlichen Tools
modelliert werden. Speziell die Möglichkeit, aus der Shot-View das Modell zu editieren, vereinfacht
den manuellen Nachbearbeitungsprozess erheblich. Es wurde während der Entwicklung darauf
geachtet, dass sämtliche Tools für die Modellierung aus der Shot-View angepasst wurden. Wenn
zum Beispiel ein Polygon selektiert ist, liegen die Linien des Polygons vor dem Foto, so dass sie
gut zu erkennen sind. Würden sie hinter dem Foto liegen, wären sie nur schwer oder gar nicht
zu erkennen. In diesem Fall wäre ein Modellieren aus der Shot-View nicht brauchbar. Dasselbe gilt
23
KAPITEL 4. TOOLS ZUR INTERAKTIVEN TEXTURGENERIERUNG
für die Tools zum Säubern der Punktwolke. Auch die Linien dieser Tools sowie bereits selektierte
Punkte werden vor dem Foto angezeigt. Die Modellierung aus der Shot-View heraus ermöglicht eine Vielzahl von neuartigen Interaktionsmöglichkeiten. Es wird dadurch die Modellierung
erheblich vereinfacht, da sozusagen direkt auf dem Foto das Modell nachmodelliert werden kann.
(a)
(b)
(c)
(d)
Abbildung 4.3: Editieren des Polygons aus der Shot-View
Die Transparenz des Fotos in der Shot-View ist verstellbar. In (a) ist das Foto nicht zu erkennen,
in (b) und (c) ist das Foto mit unterschiedlicher Transparenz zu sehen. Bei (d) ist das Foto nicht
mehr transparent. Die Linien des Modell sind zu erkennen, da sie vor das Foto gezeichnet
werden.
Wenn die Fotos aus ziemlich gleicher Position mit anderem Blickwinkel aufgenommen wurden
überlappen sich die Shots von diesen Fotos. Das hat zur Folge, dass in der aktiven Shot-View,
die sich überlappende Teile die Sicht auf das Modell verhindern. Um dieses Problem zu beheben
werden in Shot-View alle Shots bis auf selektiertes ausgeblendet. Ist die Shot-View wieder beendet
werden alle Shots wieder sichtbar.
4.3.2 Sortieren der Shots
Wenn die Shot-View aktiv ist, ist ein nach links und nach rechts Navigieren zwischen den Shots
möglich. Dieses Navigieren zwischen den Shots sollte für den User in sinnvoller Reihenfolge erfolgen. Das bedeutet, wenn auf den Button für die Navigation nach links gedrückt wird, sollte auch
24
KAPITEL 4. TOOLS ZUR INTERAKTIVEN TEXTURGENERIERUNG
zum nächsten linken Shot geogen werden. Das gleiche gilt auch für die Navigation nach rechts.
Wenn die Kamera aufgrund der Navigation zwischen den Shots nach rechts iegen soll, dann
soll auch zum nächst rechten Shot navigiert werden. Hier sei erwähnt, dass dies in dieser Arbeit
die Denition für eine sinnvolle Navigation ist.
Da die Shots in einer willkürlichen Reihenfolge geladen werden, müssen die Shots nachträglich sortiert werden. Für die Sortierung der Shots wurden drei Möglichkeiten getestet. Die ersten beiden
Methoden haben einen geringen Rechenaufwand, jedoch ist das Ergebnis nicht optimal. Ein gutes
Ergebnis wird durch das Bilden eines dichten Graphen erreicht, der nach dem Traveling Salesman
Problem gelöst wird. Diese Methode ist aber wesentlich aufwendiger zu berechnen und kann daher
bei sehr vielen Shots länger als einer der beiden ersten Möglichkeiten dauern. Dies wurde jedoch
in Kauf genommen, da es erstens die sinnvollste Navigation ermöglicht und zweitens es wohl eher
unwahrscheinlich ist, dass derartig groÿe Datensätze geladen werden. An diesem Punkt sei ebenfalls erwähnt, dass sämtliche Shots in einer verlinkten Liste gespeichert werden um einfach auf
den jeweils vorigen beziehungsweise nächsten Shot zugreifen zu können.
Da beim Laden eines Datensatzes nicht von vorn herein bekannt ist wie viele Shots sich darin
benden und immer einer nach dem anderen geladen wird, kann die Reihenfolge der Shots nicht
am Ende des Ladevorganges bestimmt werden. Das bedeutet, dass immer wenn ein Shot geladen
wird, die Reihenfolge neu berechnet werden muss.
Sortierung nach kürzestem Abstand
Da immer zum nächst gelegenen Shot navigiert werden soll, war der erste Gedanke zu dem Shot,
der gerade aktuell geladen wird, den kürzesten Abstand zu allen anderen Shots zu berechnen.
Der neu geladene Shot wird in der Liste, also in der Reihenfolge, hinter Shot mit dem kürzesten
Abstand eingefügt. Dieser Sortieralgorithmus liefert jedoch nicht das gewünschte Verhalten beim
Navigieren zwischen den Shots. Da die Lösung nur für den aktuellen Stand der Reihenfolge optimal
ist, also nur genau für die Shots, die bereits geladen wurden. Wenn ein Datensatz geladen wird,
bei dem sämtliche Fotos bereits in einer guten Reihenfolge aufgenommen wurden, funktioniert
diese Lösung zum Sortieren der Shots. Wenn dies nicht der Fall ist oder ein Datensatz Ausreiÿer
enthält, zum Beispiel liegt ein Shot hinter einem anderen Shot, verschieben sich einige Shots
in der Reihenfolge immer weiter nach hinten. Für die Navigation zwischen den Shots bedeutet
dies Sprünge zwischen zwei weit entfernten Shots, das hat zur Folge, dass die Navigation somit
nicht mehr sinnvoll ist.
In Abbildung
4.4 ist ein Datensatz des Sankt Pöltner Rathauses zu erkennen. Die Shots sind
als blaue Pyramiden dargestellt. Die Nummerierung der Shots repräsentiert die Reihenfolge in der
sie geladen werden. Die roten Pfeile stellen die Reihenfolge der Navigation zwischen den Shots
nach links dar. Es ist zu erkennen, dass der Shot mit dem kürzestem Abstand zu Shot Nummer
vier ist Shot Nummer drei ist. Nach diesem Sortieralgorithmus wird Shot Nummer vier hinter Shot
Nummer drei eingefügt. Nun wird der nächste Shot geladen, also Shot Nummer fünf. Der Shot mit
dem kürzesten Abstand zu Shot Nummer fünf ist Shot Nummer drei. Er wird nach Shot Nummer
drei eingefügt. Hier ist bereits die Problematik bei diesem Sortieralgorithmus zu erkennen. Denn
Shot Nummer vier verschiebt sich in der Reihenfolge immer weiter nach hinten. Konkret bei diesem
Datensatz bleibt Shot Nummer vier immer der letzte in der Reihenfolge. Wenn dieser Datensatz
fertig geladen ist und zwischen den Shots navigiert wird, wird von Shot Nummer neunzehn auf
Shot Nummer vier gesprungen. Die Navigation zwischen den Shots ist somit nicht sinnvoll.
25
KAPITEL 4. TOOLS ZUR INTERAKTIVEN TEXTURGENERIERUNG
Abbildung 4.4: Sortierung nach kürzestem Abstand
Sortierung nach kürzestem Weg
Da eine Sortierung der Shots nach dem kürzestem Abstand kein ideales Ergebnis liefert, werden
sie nach dem kürzesten Weg sortiert. Dabei wird zuerst zum aktuell geladenen Shot jener Shot
mit dem kürzestem Abstand berechnet. Anschlieÿend wird der Weg berechnet, wenn er vor und
wenn er nach diesem eingefügt werden würde. Je nach Ergebnis wird der Shot in der Reihenfolge
vor oder nach dem mit dem kürzestem Abstand eingefügt. Diese Methode soll verhindern, dass
die Shots immer hinter dem mit dem kürzesten Abstand in der Liste eingefügt werden. Denn
wenn ein Shot eigentlich vor einem anderen liegt, aber hinter diesem in der Reihenfolge eingefügt
wird, kann keine sinnvolle Navigation entstehen.
Wenn ein Shot eingefügt und derjenigen mit dem kürzesten Abstand zu diesem gefunden wurde,
wird von diesem der vorige und der nächsten Shot in der Liste gesucht. Hierbei kann ein Sonderfall
auftreten, wenn der Shot mit dem kürzestem Abstand der letzte beziehungsweise der erste in der
Reihenfolge ist. Wenn dieser der letzte in der Reihenfolge ist, wird als nächster Shot der erste
der Liste ausgewählt. Wenn dieser Shot der erste ist, wird der letzte als voriger Shot ausgewählt.
Die Reihenfolge geht sozusagen im Kreis. Anschlieÿend wird der Weg zwischen den vier Shots
berechnet. Einmal dafür wenn der aktuelle Shot vor und einmal wenn er nach dem Shot mit dem
kürzestem Abstand eingefügt werden würde. Je nachdem welcher Weg der kürzeste ist wird der
aktuelle Shot vor oder hinter dem mit dem kürzesten Abstand in der Reihenfolge eingefügt. Dieser
Sortieralgorithmus liefert ebenfalls keine sinnvolle Navigation. Die Problematik ist ähnlich wie
bei der Sortierung mit nach dem kürzestem Abstand. Wenn Auÿreiser im geladenen Datensatz
enthalten sind, wandern manche Shots in der Reihenfolge immer weiter nach hinten. Auch dieser
Sortieralgorithmus liefert nur für den geraden aktuellen Stand der Shots ein optimales Ergebnis.
Kommt ein weiterer Shot hinzu, kann dies dazu führen, dass vorige Berechnungen nicht mehr
optimal sind.
26
KAPITEL 4. TOOLS ZUR INTERAKTIVEN TEXTURGENERIERUNG
In Abbildung
4.5 ist wieder der Datensatz des Sankt Pöltner Rathauses zu erkennen. Hier
haben die Nummern und Pfeile die gleiche Bedeutung wie in Abbildung 4.4. Bis zu Shot Nummer
fünf ist die Einfüge-Reihenfolge gleich wie bei der Sortierung nach dem kürzestem Abstand.
Shot Nummer sechs wird erwartungsgemäÿ nach Shot Nummer fünf eingefügt. Der Shot mit
dem kürzesten Weg zu Shot Nummer sieben ist Shot Nummer sechs. Nach der Sortierung nach
dem kürzesten Weg wird er vor Shot Nummer sechs eingefügt. Der Shot mit dem kürzestem
Abstand zu Shot Nummer acht ist Shot Nummer sieben. Nach diesem Algorithmus wird er vor
Shot Nummer sieben eingefügt. Das bedeutet, dass sich Shot Nummer sieben, Shot Nummer
sechs und Shot Nummer vier immer weiter nach hinten in der Reihenfolge verschieben. Auch
wenn mit diesem Sortieralgorithmus die Shots durch das entweder davor oder danach einfügen
sinnvoller sortiert werden sollten, tritt hier ebenfalls eine Verschiebung mancher Shots nach hinten auf. Folge dessen ist die Sortierung der Shots nach dem kürzesten Weg ebenfalls nicht sinnvoll.
Abbildung 4.5: Sortierung nach kürzestem Weg
Dichter Graph mit Traveling Salesman Problem
Da die vorigen Versuche kein optimales Ergebnis lieferten musste eine komplexere Datenstruktur
und Berechnung herangezogen werden. Durch das Aufbauen eines dichten Graphen und das
anschieÿende Lösen nach dem Traveling Salesman Problem kann eine sinnvollere Reihenfolge
erreicht werden. Diese Methode ist jedoch die aufwendigste von allen dreien und kann zur Folge
haben, dass hier bei groÿen Datensätzen das Laden verzögert wird.
Wenn ein neuer Shot geladen wird, wird jedes Mal ein neuer dichter Graph mit allen Shots,
die bereits geladen wurden, und dem aktuellen erstellt. Wenn ein Graph aus allen Shots erstellt
wird, werden bildlich gesprochen die Shots nach gewissen Kriterien miteinander verbunden.
Ein dichter Graph weiÿt fast alle Kanten auf, die beim Verbinden der Shots entstehen könnten.
27
KAPITEL 4. TOOLS ZUR INTERAKTIVEN TEXTURGENERIERUNG
Dieser Graph wird anschlieÿend nach dem Traveling Salesman Problem gelöst. Dabei macht nach
Thomas H. Cormen et al. [21], S 1096, ein Verkäufer (in Englisch: Salesman) eine Tour und
besucht dabei jede Stadt genau einmal. Er beendet seine Tour bei der Stadt bei der sie begonnen
hat. Das bedeutet es wird eine Rundreise mit dem kürzestem Weg um alle Punkte berechnet.
Dieses Verfahren liefert eine sinnvolle Navigation in fast allen Datensätzen. Dies ist in Abbildung
4.6 mit dem Datensatz des Sankt Pöltner Rathauses zu sehen.
Wenn
die
Fotos
eines
Datensatzes
in
zwei
Reihen
hintereinander
aufgenommen
wurden,
kommt es vor, dass auch mittels dem Lösen des dichten Graphen nach dem Traveling Salesman
Problem keine optimale Navigation entsteht. Die Sortierung nach diesem Verfahren legt eine
Reihenfolge an, die zuerst die eine und anschlieÿend die andere Reihe durchgeht. Das hat zur
Folge, dass in der einer der beiden Reihen die Navigation genau verkehrt herum ist. Wenn die
Taste für die Navigation nach links gedrückt wird, wird nicht wie erwarten zum nächst linken
Shot geogen, sondern zum nächst rechten. Das bedeutet, dass die Navigation in der ersten
Reihe sinnvoll ist, aber in der zweiten Reihe nicht. Bei einem derartigen Fall ist es nicht eindeutig
wie die Navigation für einen User angenehmer ist. Will er zwischen den beiden Reihen vor und
zurück springen oder zuerst die erste Reihe und dann die zweite Reihe durchgehen.
Abbildung 4.6: Optimale Sortierung der Shots
Dadurch, dass die Reihenfolge der Shots neu berechnet wird, kann es vorkommen dass die Navigation zwischen den Shots genau in die falsche Richtung verläuft. Um dieses Problem zu lösen,
wird die Gewichtung berechnet ob die nächsten Shots in der Reihenfolge im Raum links oder
rechts liegen. Zuerst wird der Richtungsvektor
vn
rv
des Shots und der Vektor zum nächsten Shot
berechnet. Anschlieÿend wird folgende Formel ausgeführt:
−rv.X ∗ vn.Y + rv.Y ∗ vn.X
28
KAPITEL 4. TOOLS ZUR INTERAKTIVEN TEXTURGENERIERUNG
Ist das Ergebnis dieser Gleichung gröÿer Null, dann bedeutet dies der nächste Shot liegt rechts
dem aktuellen. Ist es kleiner Null, dann liegt der nächste Shot links dem aktuellen. Je nachdem
ob mehr Shots links oder rechts im Raum liegen wird, die Reihenfolge umgedreht. Dadurch kann
eine verkehrte Navigation auch bei so einem Fall sinnvoll gestaltet werden.
4.3.3 Editieren der Textur
Einfärben der Textur nach Shot
Die Textur auf den Polygonen wird aus mehreren Fotos zusammengesetzt. Pro Pixel wird der
bestmögliche Shot berechnet und je nach diesem eingefärbt. Diese Funktionalität ist besonders für
einen Brushing-Modus hilfreich, nämlich dem Erweiterungs-Brush. Dadurch kann visuell dargestellt
werden von welchen Shot die einzelnen Bereiche beziehungsweise die Pixel der Textur sind. Da die
Berechnung dafür auf Pixel-Ebene stattnden muss, wird diese Funktionalität im Shader berechnet.
Im Shader bendet sich eine Farbtabelle mit zehn verschiedenen Farben. Für jeden Pixel wird
dessen bester Shot ausgelesen. Dies ist möglich, da bei der Berechnung des besten Shots die
Nummer des Shots in den RGBA-Werten der Textur gespeichert wird. Diese Nummer wird Modulo
der Anzahl der Farben in der Tabelle gerechnet. Mit dem Ergebnis wird auf einen Index in der
Farbtabelle zugegrien. Die Farbe des gerade betrachteten Pixels wird mit der Farbe aus der
Farbtabelle multipliziert. Das Ergebnis davon wirkt als wäre die Textur auf dem Bild mit einer
durchscheinenden Farbe übermalt worden. So kann jedes Foto auf der Textur mit einer einzelnen
Farbe gekennzeichnet werden. Dadurch, dass auf den Index der Tabelle mit dem Modulo-Wert
des Shots zugegrien wird, können die Farben für die Multiplikation nie ausgehen und trotzdem
erhält jeder Pixel des gleichen Shots die gleiche Farbe. Da sie bei der Modulo-Rechnung das
gleiche Ergebnis liefern. Da dieser Modus vor allem beim Erweiterungs-Brush nützlich ist, aber bei
anderen Arbeiten an der Textur störend wirken kann, ist diese Darstellungsmöglichkeit ein- und
ausschaltbar. In Abbildung
3.4 ist diese Funktionalität zu erkennen.
Brushing aus Shot-View
Voraussetzung für diesen Brush ist, dass die Shot-View aktiv und dieses Brushing-Tool ausgewählt
ist. Sind diese Voraussetzungen erfüllt, ist das Foto des Shots, dessen Shot-View gerade aktiv
ist, das Foto mit dem die Textur übermalt wird. Wenn zwischen den Shots navigiert wird, wird
ebenfalls das Foto zum Übermalen der Textur aktualisiert. Dieser Brush hat den Vorteil, dass
man durch die Shot-View das Foto und somit die Textur die mit diesem Brush aufgebracht wird
sichtbar ist. Wenn die Shot-View nicht von vorne auf das Modell blickt, würde eine aufgebrachte
Textur zwar aus diesem Sichtwinkel gut aussehen. Jedoch durch Perspektivische Verzerrungen
durch einen anderen Sichtwinkel nicht. Sie würde dann zum Beispiel von vorne sehr verzerrt oder
verschwommen wirken. Das hat den Grund, dass das Foto aus dieser Position aufgenommen wurde.
Daher ist es ratsam beim Bearbeiten der Textur durch die Shot-View darauf zu achten, dass der
Shot mit dem die Textur übermalt wird, nicht allzu seitlich zu dem Polygon steht.
Der Erweiterungs-Brush
Mit diesem Brush wird hauptsächlich durch die zuvor beschriebene Farbauösung der Textur
gearbeitet. Es ist auch ohne dieser Darstellung möglich diesen Brush zu verwenden. Da aber dieser
Brush mit dem aktuellen Fotos der Textur arbeitet, ist die Hinterlegung der Pixel mit Farben je
nach Shot hilfreich. Ist dieses Tool aktiv, wird auf einen beliebigen Pixel in der Textur geklickt.
29
KAPITEL 4. TOOLS ZUR INTERAKTIVEN TEXTURGENERIERUNG
Nun ist das Foto, das diesem Pixel zugeordnet ist aktiv und wird zum Übermalen verwendet. Der
Erweiterungs-Brush erweitert sozusagen den Bereich eines Shots in der Textur. Wenn zum Beispiel
ein störendes Artefakt wie ein Busch von der Textur entfernt werden soll, kann damit das Foto
neben dem des Busches ausgewählt werden, es muss damit nicht lange nach dem geeignetem
Foto gesucht werden. Wenn währenddessen dieser Brushing-Mode aktiv ist auÿerhalb der Textur
geklickt wird, würde versucht werden aufgrund den Information dieses Pixels die Farbe zu setzen.
Dadurch muss dieser Fall vor der Berechnung abgefragt und verhindert werden.
30
5 Diskussion
5.1 Reflexion
In dieser Arbeit geht es um das Erstellen eines Gebäudemodells anhand Fotos, die von jedermann
aufgenommen werden können. Sie setzt an ein vorhandenes Forschungsprojekt der VRVis Zentrum
für Virtual Reality und Visualisierung Forschungs-GmbH an. Dieses Projekt beschäftigt sich mit
diesem Thema und entwickelt im Zuge ihrer Forschungsarbeiten eine Applikation um derartiges
zu vollbringen. Da die automatische Rekonstruktion des Gebäudemodells kein ausreichendes
Ergebnis liefert, muss es möglich sein das entstandene Modell manuell nachbearbeiten zu können.
Aus diesem Grund gibt es in der entwickelten Applikation eine Vielzahl an Tools um das Modell
bearbeiten zu können.
Diese Arbeit behandelt unter anderem den theoretischen Hintergrund, wie aus einigen Aufnahmen eines Gebäudes ein drei-dimensionales Modell entsteht. Dabei werden zuerst Fotos rund
um ein Gebäude aufgenommen. Beim Fotograeren sind einige Dinge zu beachten um aus den
Aufnahmen das bestmögliche Modell rekonstruieren zu können. Es sollten alle Teile des Gebäudes
aus verschiedenen Positionen und Blickwinkeln abgebildet sein. Auch die Beschaenheit des
Objektes spielt eine Rolle, denn wenn es nur aus weiÿen Wänden besteht sind keine signikanten
Punkte im Objekt zu erkennen und es kann daraus keine dichte Punktwolke erzeugt werden.
Sind ausreichend Fotos aufgenommen, wird daraus eine Punktwolke erzeugt. Mittels Structure
from
Motion
werden
Punkte
von
zwei-dimensionalen
Bildern
im
drei-dimensionalen
Raum
berechnet. Dabei werden mittels Feature und SIFT Points gleiche Punkte in den Bildern gesucht
und damit die Punktwolke sowie Eigenschaften Fotos bestimmt. In dieser Punktwolke werden
anschlieÿend mittels eines RANSAC Algorithmus' Ebenen berechnet. Durch einen LMS Algorithmus werden beispielsweise Fenster als eigener Teil der Punktwolke und nicht als Bestandteil der
Hauswand erkannt. Sind die Ebenen bestimmt, werden die äuÿeren Punkte der Punktwolke auf
dieser Ebene gesucht. Diese sind die Grenzpunkte des entstehenden Polygons. Zu den Punkten
werden die Nachbar-Punkte gesucht und anschlieÿend die Normalvektoren dieser berechnet. Ist
dies abgeschlossen, werden die Grenzen des entstehenden Polygons geglättet und das Polygon
wird durch einen Eckpunkterkennungs-Algorithmus erzeugt.
Wurden Polygone aus der Punktwolke erzeugt, kann darauf eine Textur aufgebracht werden.
Da die Textur aus jedem Blickwinkel gut zu erkennen sein soll, wird sie aus mehreren der
aufgenommenen Fotos zusammengesetzt. Dafür wird für jeden Pixel der Textur das beste Foto
berechnet und anschlieÿend damit eingefärbt.
Da weder die Polygonalisierung noch das automatische Erzeugen der Textur ein optimales
Ergebnis liefert, gibt es in der Applikation des Forschungsprojektes eine Vielzahl an Tools das
Modell bearbeiten zu können. Zum ersten kann die ursprüngliche Punktwolke mittels dem Pinsel-,
Lasso- und Rechteck-Tool in Kombination mit Mengenoperationen gesäubert werden. Die Form
der Polygone kann beliebig verändert und Polygone können neu erstellt oder gelöscht werden.
Die Textur kann mittels dem Brush-Tool mit einem anderen Foto übermalt werden. Dabei kann
31
KAPITEL 5. DISKUSSION
das Foto zum Übermalen entweder manuell oder mittels der Shot-View ausgewählt werden. Ein
weiteres Tool ist der Erweiterungs-Brush, dabei wird durch einen Klick auf die Textur das Foto,
von dem der angeklickte Pixel eingefärbt wurde, zum aktuellen Brush-Foto. Speziell für diesen
Brush kann die Textur nach den verwendeten Fotos farbig dargestellt werden.
Um das Bearbeiten der Textur aus der Shot-View ezient zu gestalten, kann zwischen den
Shots navigiert werden. Da diese in einer beliebigen Reihenfolge geladen werden, müssen sie
zuerst sortiert werden. Dabei wurden drei verschiedene Ansätze getestet. Zuerst wurde nach
dem kürzestem Abstand und dem kürzestem Weg sortiert. Beides lieferte nicht das gewünschte
Verhalten. Daher wurde auf eine rechen intensivere Methode zurück gegrien. Wird ein Shot
geladen wird aus allen ein dichter Graph erstellt und anschlieÿend nach dem Traveling Salesman
Problem gelöst. Diese Methode liefert bei den meisten Datensätzen die gewünschte Navigation.
5.2 Aufgabenstellung
Die Aufgabenstellung dieser Arbeit war es Tools für das Bearbeiten der Textur zu entwickeln. Diese
Aufgabe wurde erfüllt, jedoch gehört viel mehr als nur die verschiedenen Brushing-Modi zu diesem
Thema. Um das Bearbeiten der Textur aus der Shot-View zu ermöglichen, muss es möglich sein
mit den Shots zu interagieren. Daher werden sämtliche Shots in einem Shot-Management verwaltet. Um sinnvoll zwischen den Shots navigieren zu können, müssen sie zuerst sortiert werden.
Im weiteren Sinne sind auch die Bearbeitungstools für die Punktwolke oder der Polygone eine
wichtige Voraussetzung für das Bearbeiten der Textur. Wenn die Punktwolke nicht bereinigt wird,
werden Polygone erzeugt, die nicht zum Gebäude gehören. Das erschwert den nachfolgende modellieren des Modells. Durch die Möglichkeit Polygone bearbeiten oder erzeugen zu können, kann
das Gebäudemodell optimal rekonstruiert werden. Wenn das Modell nur sehr wenige oder kleine
Polygone aufweist, gibt es nichts auf das eine Textur aufgebracht werden könnte.
Das bedeutet die Schritte vom Bereinigen der Punktwolke bis hin zum Bearbeiten der Polygone sind essentiell für das Aufbringen der Textur auf das Gebäudemodell. Da durch sie optimale
Polygone entstehen, auf die eine Textur aufgebracht werden kann. Daher ist das Themengebiet,
Tools für das Bearbeiten der Textur eines Gebäudemodells zu erstellen, weit umfangreicher als
zuerst gedacht. Es ist das Zusammenspiel aller einzelnen Schritte, sowie der automatischen als
auch manuellen Rekonstruktion, die es ermöglichen ein realistisches Gebäudemodell anhand Fotos
in kurzer Zeit zu erzeugen.
5.3 Ausblick
Das Forschungsprojekt, an das diese Arbeit ansetzt, ist noch nicht beendet. Zum einen ist noch
ein weiterer Brushing-Modus, nämlich der Schäl-Brush, geplant. Bei der Berechnung des besten
Fotos für jeden Pixel der Textur, wurden die vier besten Shots berechnet. Mit diesem Brush kann
die Textur sozusagen abgeschält werden. Zuerst wird das erst beste Foto abgeschält und das zweit
beste kommt zum Vorschein, dann kann das zweit beste Foto abgeschält werden und das dritt
beste kommt zum Vorschein und so weiter. Dieser Brush wurde noch nicht implementiert, da
Voraussetzungen im verwendeten Framework noch fehlen.
Des Weiteren stöÿt die Modellierung des Gebäudemodells mit diesen Tools an ihre Grenzen. Wenn
zum Beispiel Teile des Gebäudes nicht fotograert wurden, können die dazugehörigen Polygone
zwar leicht manuell erzeugt werden. Jedoch gestaltet sich das Aufbringen einer Textur an solchen
Polygonen oft schwer. Da diese Teile nicht fotograert wurden, entsteht mit groÿer Wahrschein-
32
KAPITEL 5. DISKUSSION
lichkeit keine ideale Textur. Bei der zuvor erwähnten Erzeugung der Textur können zwar beste
Fotos berechnet werden, die Textur ist aber für einen Benutzer eher verzerrt oder schlicht weg
nicht logisch. Aus diesem Grund wird die Applikation durch Tools in Richtung Bildbearbeitung
erweitert. Ideen dafür sind, eine bereits gesäuberte Textur auf andere Polygone aufbringen oder
mittels Tools die Textur selbst wie in bekannten Bildbearbeitungsprogrammen bearbeiten oder
Teile davon auswählen zu können. Sind derartige Tools in der Applikation vorhanden, steht einer
ezienten und realistischen Rekonstruktion eines Gebäudemodells anhand Fotos nichts im Wege.
33
Literaturverzeichnis
[1] P. E. Debevec, C. J. Taylor, and J. Malik, Modeling and rendering architecture from photographs: A hybrid geometry- and image-based approach, SIGGRAPH, pp. 1120, 1996.
[2] D. Liebowitz, A. Criminisi, and A. Zisserman, Creating architectural models from images,
Comput. Graph. Forum, vol. 18, no. 3, pp. 3950, 1999.
[3] A. Agarwala, M. Dontcheva, M. Agrawala, S. M. Drucker, A. Colburn, B. Curless, D. Salesin,
and M. F. Cohen, Interactive digital photomontage, ACM Trans. Graph., vol. 23, no. 3, pp.
294302, 2004.
[4] A. Wiechert, M. Gruber, and K. Karner, Ultramap: the all in One Photogrammetric Solution, ISPRS - International Archives of the Photogrammetry, Remote Sensing and Spatial
Information Sciences, pp. 183186, Jul. 2012.
[5] J. Chen and B. Chen, Architectural modeling from sparsely scanned range data, International Journal of Computer Vision, vol. 78, no. 2-3, pp. 223236, 2008.
[6] S. N. Sinha, D. Steedly, R. Szeliski, M. Agrawala, and M. Pollefeys, Interactive 3d architectural modeling from unordered photo collections, ACM Trans. Graph., vol. 27, no. 5, p.
159, 2008.
[7] J. Xiao, T. Fang, P. Tan, P. Zhao, E. Ofek, and L. Quan, Image-based façade modeling,
ACM Trans. Graph., vol. 27, no. 5, p. 161, 2008.
[8] C. Barnes, E. Shechtman, A. Finkelstein, and D. B. Goldman, Patchmatch: a randomized
correspondence algorithm for structural image editing, ACM Trans. Graph., vol. 28, no. 3,
2009.
[9] A. Irschara, C. Zach, M. Klopschitz, and H. Bischof, Large-scale, dense city reconstruction
from user-contributed photos, Computer Vision and Image Understanding, vol. 116, no. 1,
pp. 215, 2012(?).
[10] P. Musialski, M. Wimmer, and P. Wonka, Interactive coherence-based façade modeling,
Computer Graphics Forum (Proceedings of EUROGRAPHICS 2012), vol. 31, no. 2, pp. 661
670, May 2012.
[11] M. Arikan, M. Schwärzler, S. Flöry, M. Wimmer, and S. Maierhofer, O-snap: Optimizationbased snapping for modeling architecture, ACM Transactions on Graphics, vol. 32, pp. 6:1
6:15, Jan. 2013.
[12] VRVis Zentrum für Virtual Reality und Visualisierung Forschungs-GmbH. Accessed: April
21, 2014. [Online]. Available: http://vrvis.at
34
Literaturverzeichnis
[13] P. Musialski, C. Luksch, M. Schwärzler, M. Buchetics, S. Maierhofer, and W. Purgathofer,
Interactive multi-view façade image editing, in Vision, Modeling and Visualization Workshop
2010, Nov. 2010, pp.
[14] M. Pollefeys, L. J. V. Gool, M. Vergauwen, F. Verbiest, K. Cornelis, J. Tops, and R. Koch,
Visual modeling with a hand-held camera, International Journal of Computer Vision, vol. 59,
no. 3, pp. 207232, 2004.
[15] D. G. Lowe, Distinctive image features from scale-invariant keypoints, International Journal
of Computer Vision, vol. 60, no. 2, pp. 91110, 2004.
[16] R. Schnabel, R. Wahl, and R. Klein, Ecient ransac for point-cloud shape detection, Computer Graphics Forum, vol. 26, no. 2, pp. 214226, Jun. 2007.
[17] H. Avron, A. Sharf, C. Greif, and D. Cohen-Or, l1 -sparse reconstruction of sharp point set
surfaces, ACM Trans. Graph., vol. 29, no. 5, p. 135, 2010.
[18] S. Fleishman, D. Cohen-Or, and C. T. Silva, Robust moving least-squares tting with sharp
features, ACM Trans. Graph., vol. 24, no. 3, pp. 544552, 2005.
[19] P. Pérez, M. Gangnet, and A. Blake, Poisson image editing, ACM Trans. Graph., vol. 22,
no. 3, pp. 313318, 2003.
[20] E. Reinhard, M. Ashikhmin, B. Gooch, and P. Shirley, Color transfer between images, IEEE
Computer Graphics and Applications, vol. 21, no. 5, pp. 3441, 2001.
[21] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, Introduction to Algorithms (3.
ed.).
MIT Press, 2009.
35
Abbildungsverzeichnis
1.1
Beispiele für Grenzen der automatischen Rekonstruktion . . . . . . . . . . . . . .
2
2.1
Hauptbearbeitungsfenster des Forschungsprojektes Replicate
. . . . . . . . . . .
8
3.1
Beispiel einiger Fotos und der daraus resultierenden Punktwolke . . . . . . . . . .
10
3.2
Aus einer Punktwolke wird ein Segment und daraus eine Fläche bestimmt
. . . .
12
3.3
überblick über die Polygonaliseriung
. . . . . . . . . . . . . . . . . . . . . . . .
14
3.4
Beispiel einer zusammengesetzten Textur . . . . . . . . . . . . . . . . . . . . . .
16
4.1
Tools zum Bearbeiten der Punktwolke
. . . . . . . . . . . . . . . . . . . . . . .
18
4.2
Inverse Auswahl
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.3
Editieren des Polygons aus der Shot-View
. . . . . . . . . . . . . . . . . . . . .
24
4.4
Sortierung nach kürzestem Abstand . . . . . . . . . . . . . . . . . . . . . . . . .
26
4.5
Sortierung nach kürzestem Weg . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
4.6
Optimale Sortierung der Shots
28
. . . . . . . . . . . . . . . . . . . . . . . . . . .
36
Herunterladen