background image
vorgegebener Größe (genannt ,,Patchsize" oder ,,Maschenweite") und aligniert über die
Berechnung der mittleren Höhe der Punkte ein trianguliertes Quadrat aus zwei Dreiecken daran.
Anschließend wird diese Region auf der Punktwolke um deren Größe so lange nach oben
verschoben, bis keine Punkte mehr gefunden werden können. Tritt dieser Fall ein, wird die Region
wieder auf den unteren Rand des Punktwolkenausschnitts gesetzt und um deren eigene Größe nach
rechts verschoben. Insgesamt läuft der Algorithmus so von der linken unteren Ecke der Punktwolke
zur rechten oberen Ecke der Punktwolke streifenweise über die Punktwolkenoberfläche und
approximiert sie in jedem Schritt durch zwei Dreiecke. Die Größe der Dreiecke und damit auch
deren Gesamtzahl ergibt sich aus der zuvor gewählten Größe der Region (Maschenweite /
Gitterweite). Zudem wird aus den jeweils in der Region liegenden Punkten der Mittelwert ihrer
RGB-Echtfarben berechnet und den beiden Dreiecken zugewiesen.
Die so entstandenen Dreiecks-Streifen werden in einem zweiten Durchlauf miteinander verbunden,
um schließlich eine geschlossene Oberfläche zu erhalten. Nach der Erstellung eines solchen Meshs
kann dieses im VRML-Format gesichert werden, um es mit anderen Programmen weiter nutzen zu
können.
Gegen Ende 2007 wurde im Rahmen eines Softwarepraktikums [SWP_TEX] auf Basis dieses
Algorithmus das Programm dahingehend erweitert, dass sich aus Ausschnitten von Punktwolken
auch Bilddateien im BMP-Format abspeichern lassen, um diese als Texturen für die vermaschten
3D-Modelle weiterverwenden zu können. Das funktioniert folgendermaßen:
Zunächst führt man eine möglichst enge Vermaschung der Region über den zuvor beschriebenen
Algorithmus durch. Dabei ist die Maschenweite so eng zu wählen, dass im Mittel nicht mehr als 3-4
Punkte innerhalb der jeweiligen Region liegen, um so ein möglichst genaues Resultat zu erhalten.
Da während des Durchlaufs in jedem Schritt der Mittelwert der Farbe dieser Punkte abgespeichert
wird, liegen schließlich auch die Farbwerte aller Quadrate streifenweise sortiert in einem Array vor.
Um sie im Bitmap-Format (BMP) abspeichern zu können, werden die Farben in der für BMP-Bilder
typischen Reihenfolge abgespeichert (BGR = blau, grün, rot) und zeilenweise von unten nach oben.
Zusätzlich wurde ein automatisches Mapping dieser Texturen auf die gewonnenen 3D-Modelle
implementiert, so dass sich diese auch texturiert im VRML-Format abspeichern lassen (genaueres
dazu: siehe [SWP_TEX]).
2.2 Notwendigkeit eines intelligenteren Vermaschungsverfahrens
Die im vorherigen Absatz besprochene Art der Vermaschung ist in der Praxis nicht besonders
effizient. Der Reduktionsfaktor der Punktanzahl ist hier abhängig von der Anzahl der in der
Vermaschungsregion (Patch) eingeschlossenen Punkte. Wieviele Messpunkte während der
Vermaschung in der Vermaschungsregion eingeschlossen sind hängt größtenteils von der gewählten
Maschenweite und der allgemeinen Dichte der Punktwolke, somit also von der Zahl der
durchgeführten Scans und der Entfernung des Scanners zur gescannten Oberfläche ab.
Der Reduktionsfaktor der Punktanzahl (RF) durch reguläre Vermaschung lässt sich näherungsweise
durch folgende Formel beschreiben:
wobei #Regionen =
( #Dreiecke / 2 ).
Beispielsweise ergibt sich bei im Mittel drei eingeschlossenen Punkten pro Region und einem
Gitterausmaß von 5x4 Quadraten (entspricht 20 Vertices und 24 Dreiecken) eine Reduktion der
gesamten Punktanzahl um ungefähr 44%.
10
RF=
#Gitterzeilen #Gitterspalten
#Regionen
#Regionen #Punkte pro Region
#Regionen