Lehre
zur Startseite

Diplomarbeiten am ifp

Steffen Lindenthal

Automatische Texturextraktion mit OpenGL

Dauer der Arbeit: 6 Monate
Abschluss: Dezember 2003
Betreuer: Dipl.-Inform. Martin Kada


Im Bereich der Computervisualisierung bzw. der rechnergestützten Erzeugung von Graphikelementen gibt es viele Anwendungen, bei denen die Texturierung eine wichtige Rolle spielt. Dabei wird die Textur häufig verwendet, um die modellierten Objekte realitätsnah darzustellen oder um komplexe Geometrien durch planare Bildinformation zu ersetzen. In einigen Fällen ist es ausreichend, künstliche Texturen für eine realitätsnahe Wiedergabe von Oberflächen zu verwenden. Die Texturen für beispielsweise eine Mauer oder eine Grasfläche liegen in einigen Softwarepaketen als Ausschnitt fertig vor. Werden reale Texturen verwendet, ist ein deutlich erhöhter Aufwand nötig, da die Texturen aus dem Bildmaterial erst extrahiert und dann umprojiziert bzw. entzerrt werden müssen, damit sie in Visualisierungsprogrammen wie beispielsweise VRML auf Objekte richtig aufgebracht werden können. Damit komplexere Objekte wie beispielsweise Gebäudemodelle vollständig texturiert werden können, sind meistens mehrere Aufnahmen von verschiedenen Standpunkten notwendig. Die Texturextraktion und Texturentzerrung erfolgt in allen Texturierungsanwendungen auf der Basis korrespondierender Punkte, aus denen ein Satz von Transformationsparametern gerechnet werden kann.

In den Anwendungen zur Gebäudevisualisierung werden die Texturen aus dem Bildmaterial meistens manuell durch Selektion von vier Punkten im Bild extrahiert. Durch die visuelle Kontrolle wird dabei sichergestellt, dass der Texturbereich exakt ausgewählt ist und der zu texturierende Gebäudeteil nicht durch andere Objekte verdeckt bzw. im Bild überhaupt sichtbar ist.

Bei größeren Projekten im Bereich der virtuellen Stadtvisualisierung können die Stadtmodelle jedoch einige Tausend Gebäudemodelle umfassen, so dass aus Zeit- und Kostengründen der Wunsch nach Automatisierung des Texturierungsverfahrens naheliegt.

Projektion eines Gebäudemodells der Staatsoper in eine Aufnahme

In einer vorangegangenen Arbeit erfolgte eine Umsetzung der automatischen Texturextraktion, allerdings durch Software - basierte Algorithmen, wie man sie in der einschlägigen geodätischen Literatur findet. Diese Vorgehensweise erwies sich aber sehr zeitintensiv. Das Ziel der vorliegenden Diplomarbeit war daher, das Texturierungsverfahren durch einen effizienteren Ansatz aus dem Bereich der Computer Graphik zu lösen. Auch bei diesem Ansatz erfolgt die Entzerrung des automatisch selektierten Texturbereichs über vier korrespondierende Punkte, allerdings wird dann nicht für jedes Pixel die Projektivtransformation auf Software - Ebene durchlaufen, sondern auf eine fertige hardwarenah implementierte Transformation zurückgegriffen. Die Umsetzung erfolgte mit OpenGL (Open Graphics Library), da diese Graphikbibliothek eine hoch optimierte Umsetzung bestimmter Algorithmen auf Hardwareebene ermöglicht. Diese Lösung erwies sich im Vergleich zur softwarebasierten Implementierung etwa 5000 mal schneller.

Zugehöriges texturiertes Gebäudemodell der Staatsoper im VRML Viewer
 
Ausschnitt aus einer Fassade der Staatsoper, entzerrt aus obiger Aufnahme

Ein weiterer Teil der Diplomarbeit befasst sich theoretisch mit der hardwarebasierten Korrektur der Linsenverzeichnung, da die vorliegenden Aufnahmen von diesem Effekt noch nicht befreit sind. Die Verzeichnungswerte werden dabei durch Programmierung der Graphikkarte über die Schnittstelle des Pixel Shaders mit einer an C angelehnten Programmiersprache (Cg, C for Graphics) berücksichtigt. Normalerweise werden die Verzeichnungswerte bei dem Ausgangsbild einmalig angebracht, um anschließend mit einem verzeichnungsfreien Bild weiterarbeiten zu können. Der Pixel Shader ermöglicht jedoch eine extrem schnelle Berücksichtigung der Verzeichnungswerte, so dass bei dieser Vorgehensweise die Korrektur für jedes Polygon praktisch ohne Zeitverlust einzeln erfolgen kann.

 

Die Verzeichnungsvektoren werden wie eine Textur abgespeichert und an den Pixel Shader weitergegeben. Dort werden dann für jedes Polygon pixelweise die Korrekturwerte ausgelesen und als Zuschlag bei der perspektiven Entzerrung berücksichtigt.