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