Deflektometrische Positionsbestimmung gegebener Geometrien mit Grafikkartenbeschleunigung.
…, so lautet er, der Titel meiner Diplomarbeit. Jetzt und heute nehme ich mir endlich mal die Zeit um zu schreiben, was mich seit einem halben Jahr und so richtig intensiv seit knapp über drei Monaten beschäftigt und noch spätestens bis zum 09. April beschäftigen wird.
Dass ich meine Abschlussarbeit im Fach Informatik erarbeite dürfte hinlänglich bekannt sein. Genauer gesagt in der Disziplin “Bild- und Signalverarbeitung”, meinem Vertiefungsgebiet, in dem ich auch schon Programmierpraktikum, HiWi-Job und gesonderte Diplomprüfung gemacht habe. Noch genauer gesagt wird mein Thema von FORWISS gestellt, einem an die Uni angegliederten Forschungsinstitut.
Deflektometrie ist ein optisches Inspektionsverfahren zur Qualitätsprüfung stark spiegelnder Oberflächen. Sie kann beispielsweise kleinste Kratzer und Unebenheiten der zu vermessenden Bauteile detektieren. Solche Bauteile können Komponenten von Maschinen und im Speziellen Teile von Autos sein aber auch andere Dinge wie hoch präzise geschliffene Spiegel für die Astronomie oder Werkzeuge für den Medizinbereich. Daher das Wort “deflektometrische” im Titel.
Jedoch betrachtet Deflektometrie nur die Oberfläche selbst, liefert jedoch keine direkten Informationen über das zu inspizierende Objekt. Das heißt, sie macht keine Aussagen über die räumliche Orientierung oder das geometrische Aussehen des zu untersuchenden Bauteils. An dieser Stelle kommt das Wort “Positionsbestimmung” ins Spiel. Während die deflektometrischen Messdaten bisher hauptsächlich für die Oberflächeninspektion eingesetzt werden, möchte ich sie verwenden, um Ort und Lage des zu vermessenden Gegenstands zu berechnen.
Das bedeutet genauer, dass ich einen (digitalen) Entwurf des zu prüfenden Objekts habe (daher das “gegebener Geometrien”) und nun wissen will, wie ich diesen virtuellen Entwurf rotieren (also drehen) und translieren (also nach nach oben/unten, vorne/hinten und links/rechts bewegen) muss, damit er mit dem gerade unter dem Versuchsaufbau durchlaufenden realen Bauteil übereinstimmt. Diese Informationen benötigt man, wenn man weitere Qualitätsprüfungen, die über die bloßen Oberflächeneigenschaften hinaus gehen, machen möchte. Zum Beispiel ist es interessant zu wissen, ob die Geometrie innerhalb gewisser Toleranzen gefertigt wurde, ein Fortsatz beispielsweise nur in geringen Maßen vom Optimum abweicht.
Zwar gibt es schon Verfahren, die einem diese Informationen liefern (zum Beispiel Stereorekonstruktion oder Lasermessverfahren), der Clou besteht jedoch darin, eine einzige Messung (nämlich die deflektometrische) herzunehmen um möglichst viele Aussagen über den zu prüfenden Gegenstand machen zu können.
Fehlt noch das “mit Grafikkartenbeschleunigung” aus dem Titel. Dazu muss ich ein bisschen weiter ausholen und beschreiben, wie diese Positionsbestimmung genau abläuft. Im Prinzip geht man her, wählt sich einen beliebigen Satz von Positionsdaten (im Detail handelt es sich dabei um sechs Parameter), führt mit diesem Parametersatz eine virtuelle, simulierte deflektometrische Messung durch und vergleicht diese mit den real aufgenommenen deflektometrischen Messdaten. Virtuell und simuliert bedeutet in diesem Fall, dass diese Berechnungen am Computer stattfinden. In der Regel wird dieser erste beliebige Satz von Positionsparametern nicht mit dem realen Satz von Positionsparametern übereinstimmen. Aus diesem Grund versuche ich im nächsten Schritt einen neuen Satz von Variablen zu finden, die dem realen Satz eher entsprechen als der Erste. Da ich den realen Parametersatz gedoch nicht kenne (den suche ich ja, Stichwort “Positionsbestimmung”) muss ich wieder den Umweg über die Simulation und den Vergleich der virtuellen deflektometrischen Messung mit der realen gehen. Das wiederhole ich so lange, bis Simulation und Realität möglichst gut (am besten perfekt) übereinstimmen.
Natürlich wähle ich nicht wild irgendwelche virtuellen Positionsparameter. Ich möchte ja zum Ziel kommen. So sollte in jedem Schritt der Fehler zwischen virtueller und realer deflektometrischer Aufnahme kleiner werden. Eine Metrik, die mir diesen Fehler misst, musste ich unter anderem in den letzten Monaten erarbeiten. Dass ich auch eine gefunden habe, hatte ich schon gebloggt. Nun kann ich endlich zur Grafikkartenbeschleunigung kommen. Die Algorithmik für die Simulation der Deflektomtrie ist nämlich extrem aufwändig. Außerdem werden extrem viele Iterationsschritte benötigt, bis Simulation und Realität übereinstimmen. Jedoch lassen sich die Berechnungen an vielen Stellen massiv parallelisieren. An dieser Stelle kommen die Grafikkarten ins Spiel: Diese können heutzutage nämlich nicht nur 3D-Visualisierungen erstellen sondern lassen sich mit beliebigen Berechnungen füttern, die überhaupt nichts mit der Darstellung von 3D-Szenen am Monitor zu tun haben. Dabei profitieren im Vergleich zur klassischen CPU-Berechnung eben genau diejenigen Probleme, die sich gut parallelisieren lassen, so wie das bei meinen Simulationen der Fall ist.
Wer nun denkt, dass sich das schon alles kompliziert anhört, dem sei eine kurze Liste von Fachtermini ans Herz gelegt, die bei der Lösung der eben skizzierten Aufgabe auftauchen: Bounding Volume Hierarchies, baryzentrische Koordinaten, nichtlineare Optimierung, effektives Hashing, Quadriken, registerarmes Programmieren, Modellierung präziser Kameraoptiken mit Verzeichnungen und und und…
Einer der zahlreichen Schritte meiner Simulationsberechnungen ist die Darstellung extrem dreiecksreicher Modelle der (gegebenen) Geometrien, deren Position ich bestimmen möchte. Somit haben meine Grafikkartenberechnungen doch wieder was mit der Visualisierung von 3D-Szenarien zu tun. Jedoch handelt es sich bei mir wie gesagt nur um einen Zwischenschritt und während bei 3D-Spielen das Verfahren der Rasterisierung zum Einsatz kommt verwende ich das wesentlich präzisere Raytracing. Der Grund, warum ich den letzten Absatz geschrieben habe ist, dass ich meiner Leserschaft auf diese Weise ein paar tolle Bilder präsentieren kann, die mittlerweile facettenreicher und vor allem korrekter schattiert sind als die meines ersten Blogeintrags zu diesem Thema.

Eine Fläche mit Geschlecht 3 bestehend aus 467240 Dreiecken schattiert mit einem leicht modifizierten Gouraud Shading.

Dieser Drache besteht aus 869910 Dreiecken. Auf meiner Hardware (GeForce 8800 GTS 512) dauert das Rendern dieses Bildes etwa 150ms.
Bisher keine Kommentare vorhanden. Sei der Erste.
Hinterlasse einen Kommentar
