Sie sind auf Seite 1von 34

Technische Universitt Bergakademie Freiberg

Fakultt fr Mathematik und Informatik


Institut fr Informatik
Lehrstuhl fr virtuelle Realitt und Multimedia
Wissenschaftliche Visualisierung
3D-Scan 2.0
Martin Reinhardt
Steffen Dach
Martin Backasch
Christian Schlegel
Tobias Schrder
15. September 2011
Betreuer/1. Korrektor:
Prof. B. Jung
2. Korrektor:
Dr. Ben Amor
2
Die von den Firmen Microsoft und PrimeSense entwickelte Hardware
Kinect ist eine Sensorleiste bestehend aus einer Tiefensensor-Kamera,
einer Farbkamera und einem 3D-Mikrofon. Sie ist in Deutschland seid
dem 10. November erhltlich und wurde weltweit ber 10 Millionen
mal verkauft. Bereits wenige Tage nach der Verffentlichung gab es
erste Projekte, welche die Nutzung am PC unter Verwendung verschie-
dener Betriebssysteme ermglichte.
An der TU Bergakademie Freiberg wurde am Institut fr Informatik im
Sommersemester 2011 das Projekt 3D-Scan 2.0 gestartet. Ziel ist es
dabei, mit Hilfe dieser speziellen Hardware Objekte zu scannen und
das Ergebnis als Punktwolke oder als Gittermodel zu speichern.
In dieser Dokumentation sollen die Hardware und alle fr die Software
relevanten Algorithmen vorgestellt und erklrt werden.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
Inhaltsverzeichnis 3
Inhaltsverzeichnis
1. Hardware 4
1.1. Die Kinect Senorleiste . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. Scan-Tablet und Scan-Frame . . . . . . . . . . . . . . . . . . . . 5
1.3. Netzteil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2. Kalibrierung 7
2.1. Grund der Kalibrierung . . . . . . . . . . . . . . . . . . . . . . . 7
2.2. praktische Realisierung . . . . . . . . . . . . . . . . . . . . . . . 7
3. Poisson Surface Reconstruction 9
3.1. Funktionsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2. Parameter der PSR . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.3. Beispiel verschiedener Parameter . . . . . . . . . . . . . . . . . . 11
4. Applikationen fr Tests 14
4.1. Applikationsstarter . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2. OpenSceneGraph Testprogramm . . . . . . . . . . . . . . . . . . 14
4.3. Kinect Testprogramm . . . . . . . . . . . . . . . . . . . . . . . . 14
4.4. Standard Testprogramm . . . . . . . . . . . . . . . . . . . . . . . 15
4.5. Benchmark der Poisson-Surface-Reconstruction . . . . . . . . . . 16
4.6. Poisson-Surface-Reconstruction Testprogramm . . . . . . . . . . . 17
4.7. Mesh-Frbung Testprogramm . . . . . . . . . . . . . . . . . . . . 19
5. Scannen einer markierten Szene 20
5.1. Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.2. Benutzung und Ansicht . . . . . . . . . . . . . . . . . . . . . . . 20
5.3. genauer Programmablauf . . . . . . . . . . . . . . . . . . . . . . 21
6. Generierung eines Modells 24
A. genaue Hardwarespezikationen 28
B. mathematische Beschreibung der Kalibrierung 30
B.1. Das Lochkameramodell . . . . . . . . . . . . . . . . . . . . . . . 30
B.2. Geometrie des Modells . . . . . . . . . . . . . . . . . . . . . . . 30
B.3. Mapping zwischen Farb- und Tiefenwerten . . . . . . . . . . . . 32
B.4. Grenzen und Probleme des Modells . . . . . . . . . . . . . . . . 33
Literatur 34
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
1. Hardware 4
1. Hardware
Die Grundlage fr das gesamte 3D-Scan-Projekt bildet die zur Verfgung ge-
stellte Hardware. Natrlich steht die Microsoft Kinect dabei im Mittelpunkt, je-
doch sind auch andere Hilfsmittel sehr wichtig, um einen erfolgreichen qualitativ
hochwertigen Scan zu realisieren.
1.1. Die Kinect Senorleiste
Die Microsoft Kinect wurde in Zusammenarbeit mit dem Videospiel-Entwickler
Rare Ltd. und der israelischen Firma PrimeSense entwickelt. Die Sensorleiste be-
steht aus einer RGB-Kamera, einem Infarot-Sensor, einem Infarot-Projektor und
einem 3D-Mikrofon (multi-microphone-array).
Abb. 1: Aufbau der Kinect Sensorleiste
Fr die Datenbertragung wird ein spezieller proprietrer Microsoft-zertizierter
USB-Port genutzt, welcher neben dem USB 2.0 Standard zustzlichen Strom (12
Volt bei 1.08 Ampere) liefert. Ein mitgelieferter Adapter mit Netzteil stellt hier-
bei eine Lsung zum Anschluss an einen standardisierten USB 2.0 Port (Typ-A)
bereit. Die Sensorleiste hat einen motorisierten Standfu, mit welcher die Sensor-
leiste um jeweils 27

auf- und abgeneigt werden kann. Mit Hilfe der originalen


Microsoft-Xbox-Software wird eine praktische Nutzweite von 1.2-3.5m erreicht,
andererseits wurde bereits erfolgreiche Trackingsoftware im Bereich 0.7-6m ge-
testet.
Die in der Kinect verbaute RGB-Kamera nutzt zur Bilderzeugung einen Bayer-
Sensor, mit Hilfe dessen verschiedene Streams erzeugt werden. Dabei werden
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
1.2. Scan-Tablet und Scan-Frame 5
Abb. 2: Funktionsweise des Infarot-Systems
die Ausungen 640x480 und 1280x1024 bei jeweils 8, 16 und 24 bit unter-
sttzt. Der Tiefenbildsensor wird bei 640x480, 11 bit betrieben, was 2048 unter-
schiedliche Tiefenwerte ermglicht. Diese Infarot-Kamera empfngt die Strahlen,
welche von dem Infarot-Projektor ausgestrahlt und an den Oberchen reektiert
werden. Gemeinsam bilden die Kameras einen VGA-Stream (640x480), welcher
neben den Farbwerten nun auch die Tiefeninformationen enthlt. Dies nennt
man RGBD (D: depth). Durch die Nebeneinanderanordnung der beiden Kame-
ras und der verschiedenen Linsenbreiten und -dicken entstehen jedoch verschie-
dene Bilder, welche man nicht einfach bereinanderlegen kann. Darum ist eine
Kalibrierung der Kinect ntig.
Eine genaue Spezikation der verbauten Hardware ist im Kapitel genaue Hard-
warespezikationen auf Seite 28 aufgelistet.
1.2. Scan-Tablet und Scan-Frame
Das Scan-Tablet ist eine Unterlage, mit dessen Hilfe Objekte in ausreichender Ge-
nauigkeit gescannt werden knnen. Dies wird durch die optimale quadratische
Marker-Anordnung in den Ecken ermglicht. Auf der Unterseite ist ein Checker-
board angebracht, mit welchem eine einwandfreie Kalibrierung durchgefhrt
werden kann. Auerdem gibt es noch eine optionale Drehunterlage. Durch Be-
nutzung dieser verndert sich die Belichtung des Objektes whrend des Scannens
nicht, was ein besseres Ergebnis zur Folge hat.
Ein weiteres Hilfsmittel fr den Scanvorgang ist der Scan-Frame. Bei fest instal-
lierten oder sehr schweren Objekten ist es oft nicht mglich, ein Scan-Tablet zu
nutzen. Dennoch werden die Marker fr die Kamerandung innerhalb des 3D-
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
1.3. Netzteil 6
Raumes bentigt, welche bestimmten Positionierungsvoraussetzungen unterlie-
gen. Durch die Nutzung des Rahmens kann man diese Marker dennoch perfekt
platzieren, um sehr gute Scanergebnisse zu erzielen.
Alle Scan-Utensilien sind aus Holz gefertigt, damit beispielsweise schwere Ge-
genstnde auf dem Tablet platziert werden knnen. Beim Scan-Frame sind die
Streben doppelt geschient, was eine hohe Robustheit zur Folge hat.
Abb. 3: Scan-Tablet mit Markern Abb. 4: Scan-Frame mit Markern
1.3. Netzteil
Aufgrund der besonderen Bedrfnisse an Spannung und Strom, ist die Kinect
nicht fr den Einsatz im freien geeignet. Ein selbstgebautes modiziertes Netz-
teil kann dies jedoch ermglichen, indem mit Hilfe von 10 Mignon-Akkuzellen
wird eine unterbrechungsfreie Spannungsversorgung garantiert wird. Somit ist es
mglich, Objekte auch auerhalb der Steckdosenreichweite einzuscannen.
Abb. 5: spezieller Kinect-Konnektor Abb. 6: Adapter mit Akku-Paket
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
2. Kalibrierung 7
2. Kalibrierung
2.1. Grund der Kalibrierung
Die Microsoft Kinect arbeitet mit zwei Kameras, der Farbkamera und der Infarot-
kamera, um einen RGBD-Stream aufzubauen. Da die verbauten Linsen nicht
perfekt im mathematischen Sinne sind, kommt es zu Verzerrungen, welche es
auszugleichen gilt. Zudem sind die Kameras asymmetrisch zueinander ange-
bracht, wodurch zwei verschiedene Sichtfelder entstehen.
Um eine hochwertige Punktwolke zu erzeugen, mssen beide Kamerabilder ent-
zerrt und vereint werden. Die theoretischen Hintergrnde knnen im Kapitel ma-
thematische Beschreibung der Kalibrierung auf Seite 30 nachgelesen werden.
2.2. praktische Realisierung
Die zur Kalibrierung notwendigen Matrixeintrge knnen mit Hilfe der Software
RGBDemo von Nicolas Burrus ermittelt werden, welche zur Zeit in der Version
0.6 vorliegt. Dazu wird lediglich ein sogenanntes Checkerboard bentigt (siehe
Abb. 7), welches sich auf der Rckseite der Scan-Tablets bendet. Die Kalibrie-
rungsdaten werden in <SN>.yml Dateien gespeichert, wobei <SN> fr die Serien-
nummer der benutzten Kinect steht, damit beim Nutzen der Applikation gleich
die richtigen Daten benutzt werden knnen.
Das Ergebnis der genutzten Daten ist eine bereinstimmung der Farbwerte auf
die richtigen Punkte in der Wolke (Vergleich der Abbildungen 8 und 9). Nur durch
diese Kalibrierung ist es mglich, Farbwerte korrekt auf ein Mesh zu bertragen
oder auch nur die Punktwolke an den richtigen Werten zu frben.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
2.2. praktische Realisierung 8
Abb. 7: Checkerboard beim Kalibrierungsvorgang
Abb. 8: Punktwolke, unkalibriert Abb. 9: Punktwolke, kalibriert
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
3. Poisson Surface Reconstruction 9
3. Poisson Surface Reconstruction
Die Poisson Surface Reconstruction (kurz: PSR) stellt den Mittelpunkt der Mesh-
generierung dar, da so ein wassserdichtes und glattes Gitter erzeugt werden
kann. Sie wurde erstmals von Michael Kazhdan eingefhrt und ndet Anwen-
dung in der Punktwolke-Software Meshlab. Mit Hilfe einer wrapper-Klasse kann
der Kazhdan-Code direkt auf die Punktwolken der gescannten Objekte angewen-
det werden. Genaue Beschreibungen und Vorgehensweisen sind in der Literatur
bei [Bou], [Kaza], [Kazb], [Kazc] sowie [New06] zu nden.
3.1. Funktionsweise
Fr den reibungslosen Ablauf der PSR bentigt man neben der Punktwolke auch
alle Normalen an den Punkten. Unter Voraussetzung, dass diese Punkte die Fl-
che des Objektes begrenzen, kann eine isosurface aus dem Normalenfeld be-
stimmt werden. Diese isosurface steht mit dem Gradienten der Indikatorfunktion
in Relation, wodurch die begrenzte Flche beschrieben werden kann. Dieses Pro-
blem der Lsungsndung nennt man Poisson-Problem.
Abbildung 10 gibt dafr einen skizzenartigen Eindruck der Vorgehensweise des
PSR an einer zweidimensionalen Flche. Zuerst wird mit Hilfe des Normalenfeldes
der Punktwolke der Gradient der Indikatorfunktion berechnet. Nun kann aus die-
sem Gradienten die Indikatorfunktion, welche berall innerhalb der Flche den
Wert 1 besitzt, abgeleitet werden, welche die Flche beschreibt. Diese Extraktion
der Flche wird mit dem marching cubes Algorithmus realisiert, welcher mit der
octree Datenstruktur arbeitet (siehe Abbildung 11). Dieser Algorithmus zerlegt die
Punktwolke in ein Voxelgitter und entscheidet, welche Punkte die isosurface des
Objektes denieren. Die Schnittpunkte der isosurface mit den Kanten der Voxel
generieren nun eine Triangulierung, wodurch ein 3D-Gittermodell entsteht.
Abb. 10: Ablauf einer PSR
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
3.2. Parameter der PSR 10
Abb. 11: marching cubes Algorithmus
3.2. Parameter der PSR
Um die Qualitt und Geschwindigkeit der PSR zu regulieren, existieren viele ein-
stellbare Parameter:
Depth: Tiefe des octree-Baumes, welcher die Genauigkeit steuert. (default:8)
SolverDivide: Tiefe des Blockes, in welchem die Laplace-Gleichung gelst wird.
(default:8)
IsoDivide: Tiefe des Blockes, in welchem die Triangulierung durchgefhrt wird.
(default:8)
SamplesPerNode: Anzahl der Punkte in einem Endknoten des Octrees, welche
zusammenfallen. Damit wird die Anzahl der Vertices im Modell reduziert.
(unverrauschte Daten: [1.0, 5.0], verrauschte Daten: [15.0, 20.0])
Scale: Verhltnis zwischen dem Durchmesser des Wrfels der fr die Rekonstruk-
tion verwendet wird und dem Durchmesser der Bounding Box des Samples.
(default: 1.25)
Offset: Werte kleiner eins ziehen die rekonstruierte Oberche zum Zentrum hin,
whrend Werte grer eins die Oberchen nach auen drcken. (default:
1)
Condence: bei TRUE wird die Lnge der Normalen als Kondenzinformation
genutzt whrend bei FALSE die Normalen normalisiert werden damit alle
die gleiche Lnge fr die Rekonstruktion haben.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
3.3. Beispiel verschiedener Parameter 11
Abb. 12: ursprngliche Punktwolke
3.3. Beispiel verschiedener Parameter
Am Beispiel der Models des sogenannten CrokToy (Abbildung 12) sollen nun
verschiedene Parameterwahlen vorgestellt werden.
Zuerst soll Depth auf 6 erniedrigt werden, was ein Modell mit wenig Detail-
grad, aber glatten Oberchen zur Folge hat. Mit dem Wert 6 ist nach vielen Ver-
suchen ein akzeptabler Mittelwert zwischen Rechenzeit und Detailgrad bestimmt
wurden (siehe Abbildungen 13 und 14).
Abb. 13: Depth: 8, SpN: 1, Offset: 1 Verti-
ces: 24899 Faces: 49794
Abb. 14: Depth: 6, SpN: 1, Offset: 1 Verti-
ces: 6275, Faces: 12546
Mit Hilfe des Wertes SamplesPerNode kann das Modell ebenfalls sehr gut ge-
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
3.3. Beispiel verschiedener Parameter 12
glttet werden (siehe Abbildungen 15, 16, 17 und 18). Aufgrund der verrausch-
ten Daten der Kinect, ist hier ein Wert zwischen 15 und 20 empfehlenswert.
Abb. 15: Depth: 6, SpN: 1, Offset: 1 Verti-
ces: 6275, Faces: 12546
Abb. 16: Depth: 6, SpN: 5, Offset: 1 Verti-
ces: 6322, Faces: 12640
Abb. 17: Depth: 6, SpN: 15, Offset: 1 Ver-
tices: 5833, Faces: 11662
Abb. 18: Depth: 6, SpN: 20, Offset: 1 Ver-
tices: 5258, Faces: 10512
Mit dem Offset-Wert knnen die Flchen vom Zentrum des Objektes weg-
bewegt oder angenhert werden (Abbildungen 19, 20 und 21). Der beste Wert
wurde hier mit 1 ermittelt.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
3.3. Beispiel verschiedener Parameter 13
Abb. 19: Depth: 6, SpN: 5, Offset: 1 Verti-
ces: 6322, Faces: 12640
Abb. 20: Depth: 6, SpN: 1, Offset: 1.5 Ver-
tices: 6268, Faces: 12532
Abb. 21: Depth: 6, SpN: 5, Offset: 0.5 Vertices: 6684, Faces: 13341
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
4. Applikationen fr Tests 14
4. Applikationen fr Tests
Das System scivi besitzt neben der Anwendung Scan verschiedene Applikatio-
nen zum Testen von OpenSceneGraph (OSG), der Kinect und der Poissonrekon-
struktion. Diese sind:
PoissonBench
testColor
testKinect
testOsg
testPoisson
test
4.1. Applikationsstarter
Im Grunde handelt es sich bei dem Framework um einen Starter fr Anwen-
dungen, welche scivi mit Hilfe der Klasse ArgumentParser als Kommandozei-
lenargument bergeben wird. Das Interface IApplication stellt die dafr not-
wendigen Funktionen fr den Start und fr korrekte Kommandozeilenausgaben
bereit. Gltige Anwendungen mssen daher nur das Interface implementieren
und in den Starter eingetragen werden. Bei Aufruf ohne Argument werden die
mglichen Programme vorgestellt (Kommandozeilenausgabe 1)
4.2. OpenSceneGraph Testprogramm
Das Programm testOsg (Abbildung 22) stellt einen Funktionstest fr OSG und
vor allem fr den in Scan verwendeten CompositeViewer mit zwei Views bereit.
Es ist damit ein Prototyp fr die graphische Oberche der Hauptapplikation.
4.3. Kinect Testprogramm
Die Anwendung testKinect (Kommandozeilenausgabe 2) ist ein Test zum Aus-
lesen der Seriennummer der angeschlossenen Kinect und zum Anzeigen aller
untersttzten Videoformate beider verbauten Kameras. Eine graphische Ober-
che ist zwar nicht vorhanden, aber auch nicht zwangslug ntig.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
4.4. Standard Testprogramm 15
Kommandozeilenausgabe 1 Start ohne spezische Anwendung
$ ./scivi
Usage: ./scivi option [suboption] [arguments]
Options:
-PoissonBench Creating lots of example meshes with different poisson
reconstruction parameters.
-generate Run the application for generating a model.
-ds <duplicate_space> max distance between duplicates
-nc <neighbor_count> neighbor countfor normal calculation
-nf flip normals after calculation
-ptd <tree_depth> octree depth for poisson reconstruction
-psd <solver_divide> solver divide for poisson reconstruction
-psc <sample_count> sample_count for poisson reconstruction
-pid <iso_divide> iso_divide for poisson reconstruction
-pcn no confidence for poisson reconstruction
-pr <refine> refine for poisson reconstruction
-po <offset> offset for poisson reconstruction
-cnc <neighbor_count> neighbor count for color mapping
-cf fast color mapping
-in <file> input point cloud
-out <file> output colored mesh
-scan Run the application for scanning a marked scene.
-tablet bounding box values for scan tablet
-frame bounding box values for scan frame
-footprint save footprint to .gle-files (experimental)
-test Run the standard test application.
-testColor Run the mesh colorizing test application.
-testKinect Run the Kinect test application.
-testOsg Run the OpenSceneGraph test application.
-testPoisson Run the Poisson-Surface-Reconstruction test application.
4.4. Standard Testprogramm
Die Anwendung test (Abbildung 23) stellt einen professionellen Viewer der Ki-
nect dar. Auf der linken Seite kann der Kinect-Stream mit den Schaltchen
STILL und LIVE gesteuert werden. Direkt darunter bendet sich der Button fr
die Darstellung im Fenster (VISIBLE und HIDDEN). Mit den Kontrollschaltern,
welche sich am oberen bzw. unterem Rand benden, kann der Neigungsmotor
direkt angesteuert werden. Auf der rechten Seite benden sich die Buttons fr die
Farbgebung der dargestellten Punktwolke. Dabei werden entweder die Farben
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
4.5. Benchmark der Poisson-Surface-Reconstruction 16
Abb. 22: Die Anwendung testOsg
aus dem RGB Bild auf das Tiefenbild gemappt oder eine Farbcodierung genutzt,
welche die Tiefenwerte darstellen (In Abb. 23 wird die Farbcodierung genutzt).
Bei dem genutzten Mapping werden natrlich, bei Vorhandensein einer passen-
den .yml Datei, die Daten kalibriert, was durch Anzeige einer Seriennummer am
unteren Rand verdeutlicht wird.
Zustzlich besteht bei dieser Anwendung die Mglichkeit, den aktuellen Frame
als .ply oder .pgm zu speichern, um ihn in alternativen Anzeigeprogrammen zu
analysieren. Es gibt auch erste Versuche, ein passendes Mesh zu generieren; je-
doch werden hier keine speziellen Techniken wie in anderen dafr vorgesehenen
Programmen verwendet.
Durch diesen gesamten Funktionsumfang wird ein erstes greres Testprogramm
vorgestellt, mit welchem die Kinect sehr professionell gesteuert und ausgelesen
werden kann
4.5. Benchmark der Poisson-Surface-Reconstruction
Mit Hilfe der Anwendung PoissonBench werden zu einem Modell, welches im
Quelltext festgelegt ist, Rekonstruktionen mit vielen verschiedenen Parameterein-
stellungen durchgefhrt. Somit dient sie zum Finden optimaler Poisson-Parameter
fr bestimmte Modelle. Aufgrund der vielen Mglichkeiten und der vielen Berech-
nungen kann es bei diesem Aufruf zu einer lngeren Rechenzeit fhren.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
4.6. Poisson-Surface-Reconstruction Testprogramm 17
Kommandozeilenausgabe 2 Ausgabe der Anwendung testKinect
$ ./scivi -testKinect
######################################################################
# TU BERGAKADEMIE FREIBERG
# Scientific Visualization Workshop 2011
#
# Serial: <SN>
#
# Supported Kinect Video Modes
# 0: 1280 x 1024 @ 24 + 0 (decompressed)
# 1: 640 x 480 @ 24 + 0 (decompressed)
# 2: 1280 x 1024 @ 8 + 0 (bayer compressed)
# 3: 640 x 480 @ 8 + 0 (bayer compressed)
# 4: 1280 x 1024 @ 8 + 0 (8-bit IR)
# 5: 640 x 480 @ 8 + 0 (8-bit IR)
# 6: 1280 x 1024 @ 10 + 6 (10-bit IR)
# 7: 640 x 480 @ 10 + 6 (10-bit IR)
# 8: 1280 x 1024 @ 10 + 0 (10-bit packed IR)
# 9: 640 x 480 @ 10 + 0 (10-bit packed IR)
# 10: 640 x 480 @ 24 + 0 (YUV RGB)
# 11: 640 x 480 @ 16 + 0 (YUV RAW)
# Supported Kinect Depth Modes
# 0: 640 x 480 @ 11 + 5 (11-bit within uint16_t)
# 1: 640 x 480 @ 10 + 6 (10-bit within uint16_t)
# 2: 640 x 480 @ 11 + 0 (11-bit packed)
# 3: 640 x 480 @ 10 + 0 (10-bit packed)
#
######################################################################
4.6. Poisson-Surface-Reconstruction Testprogramm
Durch Aufruf der Anwendung testPoisson wird die Poisson-Surface-Reconstruction
(PSR) auf eine gegebene Punktwolke angewendet, um ein Modellgitter zu erhal-
ten. Nachdem die Punktwolke geladen und in entsprechende Arrays gespeichert
wurden, wird die sogenannte Bounding Box berechnet. Ein Algorithmus, dessen
Ziel es ist, Duplikate zu entfernen, gehrt zum ersten wichtigen Schritt, um ein
qualitativ hochwertiges Gittermodell zu erzeugen.
1. Der erste Originalpunkt aus dem Array wird als Referenzpunkt betrachtet
2. Nun werden alle Originalpunkte betrachtet, welche innerhalb einer festge-
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
4.6. Poisson-Surface-Reconstruction Testprogramm 18
Abb. 23: Die Standard Testanwendung
legten Umgebung des Referenzpunktes liegen (- Umgebung). Ein Mittel-
punkt wird ber alle Positionen der Originalpunkte aus der - Umgebung
berechnet und am Ende des Arrays gespeichert.
3. Nun werden die im letzten Schritt betrachteten Originalpunkte aus dem
Array gelscht.
4. Der nchste Originalpunkt wird Referenzpunkt, wodurch ein iterativer Pro-
zess entsteht, bis alle Originalpunkte aus dem Array gelscht wurden.
Nach dieser Ausdnnung der Punktwolke werden die Normalen an jedem Punkt
mit dem Voxel-Grid Filter und dem RANSAC-Algorithmus bestimmt. Dazu wird
zuerst die Bounding Box in ein Voxelgitter zerlegt. Die resultierenden Voxel wer-
den jetzt mit Hilfe des bekannten RANSAC-Algorithmus mit einer Normalen einer
Ebene versehen:
1. es werden zufllig drei Punkte aus dem Voxel herausgegriffen mit denen
eine Ebene aufgespannt wird
2. Innerhalb des Voxels werden nun alle Punkte bestimmt, die innerhalb einer
Fehlerschranke um die Ebene positioniert sind. Diese bilden das Consensus
set, woraus sich eine Fehlersumme berechnen lsst.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
4.7. Mesh-Frbung Testprogramm 19
3. Evaluiere das Ergebnis und bernehme es, falls:
Das Consensus set enthlt mehr Punkte als ein Vorhergehendes
Das Consensus set enthlt genauso viele Punkte wie ein Vorhergehen-
des, aber die Fehlersumme ist geringer
Der Algorithmus wird so lange wiederholt, bis entweder ein Modell mit der
Fehlersumme 0 gefunden wird, oder eine Iterationsschranke erreicht ist.
Nach der Bestimmung der Normalen in jedem Punkt ist es nun mglich, mit den
vorgegebenen Parametern eine PSR durchzufhren. Das resultierende Mesh wird
im Anschluss im Format .osg gespeichert.
4.7. Mesh-Frbung Testprogramm
Mit Hilfe der Anwendung testColor ist es mglich, Farben aus der aufgenom-
menen Punktwolke auf das generierte Gitter zu projizieren. Dazu ruft man das
Programm mit den Argumenten
Pfad zur Punktwolke
Pfad zum zugehrigem Mesh
Pfad zur Ausgabedatei des eingefrbten Mesh
auf.Der erste Schritt ist das Speichern der Punktpositionen und Farbwerte aus den
Dateien in Arrays. Mit Hilfe des folgenden Algorithmus ist es dann mglich, die
Farbwerte auf die richtigen Punkte im Mesh zu mappen:
1. Der erste Punkt aus dem Array der Meshpunkte wird als Referenzpunkt be-
trachtet.
2. Fr diesen Referenzpunkt sucht man nun aus der gefrbten Punktwolke den
Punkt mit dem geringsten Abstand.
3. Die Farbinformationen des Punktes mit dem geringsten Abstand wird nun
auf den Referenzpunkt bertragen.
4. Der Algorithmus whlt nun den nchsten Punkt aus dem Array der Mesh-
punkte als Referenzpunkt und fhrt iterativ so lange fort, bis das gesamte
Mesh eingefrbt ist.
Das resultierende gefrbte Mesh wird nun im .osg gespeichert.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
5. Scannen einer markierten Szene 20
5. Scannen einer markierten Szene
Die Applikation scan stellt als Anwendung das Herzstck des Projektes 3D Scan
2.0 dar. Mit Hilfe dieser Anwendung ist es mglich, Objekte innerhalb einer
festgelegten Umgebung dreidimensional einzuscannen.
5.1. Parameter
Es gibt zwei verschiedene Arten, einen Bereich einzugrenzen, innerhalb dessen
gescannt wird:
./scivi -scan -tablet Nutzung des Scan-Tablet als markierten Bereich
./scivi -scan -frame Nutzung des Scan-Frame als markierten Bereich
Zustzlich steht die Option -footprint zur Verfgung, welche eine noch experi-
mentelle Anwendung zur Ermittlung des Grundrisses darstellt.
5.2. Benutzung und Ansicht
Bei Start der Applikation erkennt man sogleich eine zweigeteilte Ansicht (Abbil-
dung 24):
Links: Dieser View zeigt eine Kameraansicht der Kinect. Hier werden auf
den erkannten Markern rote Kugeln angezeigt.
Rechts: Hier wird die entwickelte Punktwolke angezeigt. Man kann die An-
sicht hier beliebig rotieren und transformieren. Falls drei Marker erfolgreich
erkannt wurden, wird hier auch der aktuelle Ausschnitt der Boundingbox
live angezeigt.
Nachdem das Objekt innerhalb der Marker platziert wurde, beginnt man, mit
der Kinect das 3D Modell zu fokussieren und, falls 3 Marker gefunden wurden,
den aktuellen Ausschnitt der Kamera zur Punktwolke hinzuzufgen. Danach wie-
derholt man den Vorgang von einer anderen Position aus. Verschiedene Tests mit
verschiedenen Objekten ergaben, dass eine sinnvolle Mesh-Rekonstruktion kei-
nesfalls viele Scans bentigt. Es ist eher so, dass schon 4 Aufnahmen reichen.
Nachdem man mit dem Ergebnis in der rechten Anzeige zufrieden ist, kann man
die aktuelle Punktwolke als .ply-Datei speichern. Sie ist dann unter ./Data/PointClouds/New/
zu nden.
Folgende Eingaben sind whrend des Scannens zulssig:
c speichert den aktuellen Ausschnitt der Kinect in die Punktwolke, falls 3
Marker erkannt sind.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
5.3. genauer Programmablauf 21
Abb. 24: Die Scan-Anwendung mit der zweigeteilten Ansicht
entf lscht die Punktwolke
p speichert die aktuelle Punktwolke als .ply-Datei unter ./Data/PointClouds/New/.
5.3. genauer Programmablauf
5.3.1. Scanablauf
Nach dem Start der Anwendung werden die 3D-Punkte wie schon bei der Tes-
tapplikation kalibriert (siehe Kapietel B) und Dargestellt. Die Zuordnung der 3D-
Punkte auf 2D-Koordinaten werden dabei zwischengespeichert (in der sogenann-
ten Zuordnungsliste).
Nach diesem Schritt folgt die Erkennung der Marker mit Hilfe des ARToolKit im
RGB-Bild. Mit Hilfe der Zuordnungsliste existiert die Mglichkeit, die Punkte in
den 3D-Raum zu interpolieren
1
.Falls drei Marker von der Anwendung korrekt
erkannt wurden, ist das Aufnehmen einer Szene mglich.
Die beiden Fenster werden nach der Entscheidung aktualisiert, indem der osgViewer
der Kameraansicht (WorldView) die Listen bergeben bekommt und die rechte
Ansicht (ModelView) alle bisher aufgenommenen Punkte anzeigt. Falls das Auf-
nehmen einer Szene mglich wre, wird zustzlich die aktuelle Punktwolke dar-
gestellt.
1
In der Zuordnungsliste werden alle Nachbarpunkte mit dem Abstand kleiner eins gesucht und
mit einem Gewicht gespeichert. So knnen die 3D-Punkte der Marker durch gewichtete Inter-
polation bestimmt werden.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
5.3. genauer Programmablauf 22
Ein korrekte Ausrichtung der Punkte im ModelView bei mindestens 3 Markern ist
mglich, indem sie in das Objektkoordinatensystem transformiert werden. Durch
Mittlung der diagonalen Strecke zweier Marker wird der Ursprung des Koordi-
natensystems ermittelt. Nun werden aus den Markerpositionen die aufspannen-
den Vektoren fr das Koordinatensystem berechnet
2
. Aufgrund einer eindeutigen
Identizierung der Marker ist es mglich, das Koordinatensystem auch eindeutig
auszurichten.
Alle rekonstruierten Punkte werden nun mit Hilfe einer Verschiebung mit an-
schlieender senkrechter Projektion in das Objektkoordinatensystem transfor-
miert. Nach einem kurzen Test, ob der Punkt in der Bounding-Box liegt, wird der
Punkt je nach Einstellung der Speicherung entweder in die Liste der permanenten
Punkte aufgenommen oder in das Live-Bild integriert. Nach diesem Schritt wird
das ModellView aktualisiert, um so den aktuellen Stand der Punktwolke darzu-
stellen.
Falls die Taste p gedrckt und somit das speichern aktiviert wurde, kopiert das
Programm den aktuellen Stand der permanenten Punktwolke in eine .ply Datei
unter ./Data/PointClouds/New/. Diese kann dann mit externer Software (z.B.
Meshlab) oder anderen Applikationen (z.B. generate) betrachtet und bearbeitet
werden.
5.3.2. Die Option footprint
Um einen Grundriss zu erzeugen, sind mehrere aufeinanderfolgende Schritte
ntig. Zuerst wird mit einem Schwellwert von 0.002 (2mm) jeder Punkt nahe der
Bodenche auf eine 2D-Ebene projiziert. Nachdem Punkte mit sehr geringem
Abstand zusammengefasst wurden, wird eine Distanzmatrix aufgestellt, welche
man fr die Implementierung von -Shapes bentigt. Dabei werden immer zwei
Punkte betrachtet, deren Abstand kleiner ist, als ein festgelegter Wert (-Wert).
Im Anschluss wird durch beide Punkte ein Kreis mit dem Radius

2
gelegt, wel-
cher mit Hilfe der Strecke zwischen beiden Punkten zweigeteilt wird. Falls nun im
greren Kreisabschnitt keine weiteren Punkte zu nden sind, handelt es sich um
eine Auenkante.
Die gefunden Kanten werden jetzt in Cluster sortiert, indem rekursiv nach zusam-
menhngenden Kanten gesucht wird. Diese Zuordnung zu einem Cluster wird mit
Hilfe einer Clusternummer in der Kanten-Datenstruktur angegeben. Alle Punkte,
welche zu einem Cluster gehren, werden jetzt in Felder gespeichert.
Der nchste Schritt ist es, die konvexe Hlle eines jeden Clusters zu bestimmen.
Der dafr verwendete Algorithmus entspricht dem der -shapes, nur dass in
2
Zuerst werden mit den gegebenen Vektoren die Grundche berechnet und danach ber das
Kreuzprodukt ein dazu senkrechter Vektor.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
5.3. genauer Programmablauf 23
diesem Fall als unendlich angenommen wird
3
. Dadurch knnen nur konvexe
Fuabdrcke realisiert werden.
Durch die Umwandlung der konvexen Hlle in die konkave Hlle knnen jedoch
auch nichtkonvexe Fuabdrcke erkannt werden. Dabei wird eine Kante durch
zwei neue zu ersetzten, indem naheliegende, innere Punkte verwendet werden.
Im Falle der Option footprint werden beim Drcken der Taste p die Dateien
alpha_shape.gle zeigt -Shape des Grundrisses
convex_hull.gle zeigt konvexe Hlle des Grundrisses
concave_hull.gle zeigt konkave Hlle des Grundrisses
im Verzeichnis ./Data/Footprints/ gespeichert, welche mit Hilfe der Graphics
Layout Engine bersetzt und betrachtet werden knnen.
3
Das heit, man sucht Geraden zwischen zwei Punkten, wobei alle restlichen Punkte auf der
selben Seite der Gerade benden sollen.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
6. Generierung eines Modells 24
6. Generierung eines Modells
Die Anwendung generate stellt ein automatisiertes System dar, um aus Punkt-
wolken, welche ber den Scanprozess entstanden sind, farbige Gittermodelle im
.osg-Format zu erstellen. Der Programmablauf kann dabei in vier wesentliche
Schritte zusammengefasst werden:
1. Entfernung von Duplikaten
2. Berechnung der Normalen
3. Poisson Surface Reconstruction
4. Colorierung des Gittermodells
Mit Hilfe des Algorithmus, welcher schon in der testPoisson vorgestellt wurde,
werden innerhalb dieser Applikation zuerst Duplikate von Punkten gefunden und
dann entfernt. Die benutzte -Umgebung arbeitet dabei mit dem Standartwert
von 2mm beziehungsweise mit einem Wert, welcher ber die Kommandozeile
als Argument geliefert wird.
Bei dem nun folgenden Schritt der Normalenberechnung bedient man sich der
Visual and Computer Graphics Library (VCG Library). Diese ist eine Open Sour-
ce Bibliothek, welche aus einer Zusammenarbeit zwischen dem Visual Compu-
ting Lab der ISTI und dem Italian National Research Council (CNR) enstanden
ist. Sie basiert auf C++ Templates und bietet Algorithmen fr das Verarbeiten
von Dreiecks- bzw. Vierecksmeshes. Unter Anderem bietet diese Bibliothek einen
Algorithmus zur Berechnung von Normalen, welcher in diesem Schritt seine Ver-
wendung ndet. Er nutzt dabei eine vorzugebende Anzahl von Nachbarn (Stan-
dard: 10 Nachbarn) und liefert als Ergebnis ein Array mit gegltteten Normalen.
Der wesentliche Vorteil dieser Verbesserung besteht darin, dass die Normalen
keine Ausreier enthalten und somit das Gittermodell wesentlich runder wirkt.
Der dritte Schritt, in welchem die Poisson Surface Reconstruction genutzt wird,
um ein Mesh zu erzeugen, wurde in seiner Funktionsweise aus Kapitel 3 ber-
nommen. Alle Werte fr die Rekonstruktion knnen ber ein Kommandozeilen-
argument oder aber auch aus den Standartwerten bernommen werden. Somit
knnen die Gittermodelle gezielt auf die gegebene Punktwolke abgestimmt wer-
den.
Fr die Colorierung des Meshes steht neben dem bekannten Algorithmus aus der
Testanwendung testColor, welcher mit der Option -cf genutzt wird, ein weiterer
effektiver Algorithmus zur Verfgung. Hierbei erreicht man eine hhere Qualitt,
indem der Farbwert aus einer Anzahl von Nachbarpunkten berechnet wird (Op-
tion -cnc mit dem Standard 10). Somit knnen gezielt weichere Farbbergnge
erzeugt werden.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
6. Generierung eines Modells 25
In den Kommandozeilenausgaben 3 und 4 kann man die Funktionsweise aller
Schritte sehr leicht am Beispiel der Punktwolke
Data/PointClouds/FrogToy_2011_07_02_15_11_07_bin.ply
nachvollziehen. Das fertige colorierte Modell ist in Abbildung 25 zu sehen.
Abb. 25: Die automatisierte Meshgenerierung
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
6. Generierung eines Modells 26
Kommandozeilenausgabe 3 Meshgenerierung Teil 1
################################################################
# TU BERGAKADEMIE FREIBERG
# Scientific Visualization Workshop 2011
#
# Loading input point cloud:
# Successfully loaded data from file "Data/PointClouds/Frog[...]
# Done.
# Removing duplicated vertices:
# Remaining vertex count: 196000
[...]
# Remaining vertex count: 3000
# Remaining vertex count: 0
# Duplicate count: 144417
# Vertex count: 51886
# Done.
# Calculating normals for point cloud:
# Done.
# Generating mesh from point cloud:
# Set output filename to tmp
################################################################
# Starting Poisson Surface Reconstruction using Kazhdans Code
# Saving to file tmp
# Parameter Depth: 8
# Parameter SolverDivide: 6
# Parameter SamplesPerNode: 1
# Parameter IsoDivide: 8
# Parameter Refine: 3
# Parameter Scale: 1.25
# Parameter KernelDepth: -1
# Paremeter Offset: 1
# Parameter NoResetSamples: 0
# Parameter NoClipTree: 0
# Parameter Confidence: 1
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
6. Generierung eines Modells 27
Kommandozeilenausgabe 4 Meshgenerierung Teil 2
Samples: 51886
Setting sample weights
Adding Points and Normals
# Leaves/Nodes: 326775/373457
# Leaves/Nodes: 326915/373617
Depth: 1/8
Matrix entries: 36 / 8^2 = 56.2500%
Got / Solved / Updated in: 0.000 / 0.000 / 0.000
[...]
Nodes[59/64]: 2192
Matrix entries: 90895 / 2192^2 = 1.8917%
Got / Solved / Updated in: 0.000 / 0.000 / 0.000
# IsoValue is -1651.069512
# IsoValue is -1651.069458
# Poisson Reconstruction done.
# Saved to tmp
# Done.
# Loading generated mesh:
# Successfully loaded data from file "tmp.ply"
# Done.
# Mapping color information:
# Remaining vertex count: 52000
[...]
# Remaining vertex count: 1000
# Done.
Manipulator warning: eventTimeDelta = -4.5e-05
Manipulator warning: eventTimeDelta = -0.000226
#
################################################################
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
A. genaue Hardwarespezikationen 28
A. genaue Hardwarespezikationen
Abb. 26: vollstndige Hardware der Kinect
elektrischer Motor
3 Mainboard Platinen
Arbeitsspeicher: Hynix 512Mb DDR2 SDRAM
Aktivkhler
Farbkamera
Infarotkamera
Infarotprojektor
4 Mikrofone
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
A. genaue Hardwarespezikationen 29
4 Arten von Schrauben
15 spezielle Chips, darunter:
Wolfson Stereo ADC with microphone preamp
Fairchild N-Channel PowerTrench MOSFET
NEC USB 2.0 hub controller
Camera interface controller
Marvell SoC camera interface controller
Analog Devices CMOS Rail-to-Rail Output Operational Amplier
TI 8-bit, 8-channel Sampling A/D converter
Allegro low voltage stepper and single/dual motor driver
ST 8Mbit NV ash memory
PrimeSense image sensor processor
Texas Instruments USB audio controller
Kionix accelerometer
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
B. mathematische Beschreibung der Kalibrierung 30
B. mathematische Beschreibung der Kalibrierung
B.1. Das Lochkameramodell
Das Lochkamera-Model beschreibt die mathematischen Zusammenhnge zwi-
schen einer 3D-Szene und der 2D-Reprsentation eines aufgenommenen Bildes.
Da die Kalibrierung auf eine Transformation zwischen den beiden Rumen redu-
ziert wird, steht die Bestimmung der inneren und ueren Kameraparameter im
Mittelpunkt.
Abb. 27: Lochkamera, vereinfacht
B.2. Geometrie des Modells
Die Lochkamera obliegt einer sehr bestimmten Geometrie, dargestellt in Abb. 28.
Die Blende der Kamera ist dabei ein Punkt im Ursprung O des dreidimensiona-
len orthogonalen Koordinatensystems. Die optische Achse wird mit X
3
bezeichnet
und die 2D Projektionsche (Bildche) ist eine Ebene, parallel zur X
1
X
2
-Ebene.
Ihr Mittelpunkt O wird mit dem Abstand f in negativer Richtung der X
3
-Achse auf
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
B.2. Geometrie des Modells 31
Abb. 28: Lochkamera, Geometrie
die Bildche verschoben, wo er das Bildzentrum R bildet. Ein Punkt P der 3D-
Szene wird dabei durch eine Gerade PO auf den Punkt Q abgebildet. Das re-
sultierende Bild ist dabei einer Punktspiegelung unterzogen worden. Als Ausweg
wird eine Anschauung einer virtuellen Bildche Q

, aufgespannt durch Y
1
und
Y
2
, betrachtet, in welcher die Bildkoordinaten richtig orientiert vorliegen (Siehe
Abb. 29).
Man kann den Strahlenverlauf auf zwei Dimensionen projizieren, in denen durch
die optischen Strahlen hnliche Dreiecke aufgebaut werden. Aus dieser hnlich-
keit folgert
_
y
1
y
2
_
=
f
x
3
_
x
1
x
2
_
, f > 0, x
3
> 0 (1)
Unter Verwendung homogener Koordinaten ist es mglich, die Gleichung mit
Hilfe der Kameramatrix C auszudrcken:
y Cx (2)
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
B.3. Mapping zwischen Farb- und Tiefenwerten 32
Abb. 29: Lochkamera, Geometrie
mit
y = (y
1
, y
2
, 1)
T
x = (x
1
, x
2
, x
3
, 1)
T
C =
_
_
f
x
1
0 c
x
1
0
0 f
x
2
c
x
2
0
0 0 1 0
_
_
Um eine Kamerabewegung auszudrcken, nutzt man nun eine Transformations-
matrix
_
R t

, welche Translationen und Rotationen in sich vereint. Zustzlich


muss die Isometrie durch Multiplikation eines Skalierungsfaktors s ungleich null
zur Gleichheit gefhrt werden, was zur endgltigen Beschreibung unseres Mo-
dells fhrt.
s
_
_
y
1
y
2
1
_
_
=
_
_
f
x
1
0 c
x
1
0
0 f
x
2
c
x
2
0
0 0 1 0
_
_

_
_
r
11
r
12
r
13
t
1
r
21
r
22
r
23
t
2
r
31
r
32
r
33
t
3
_
_

_
_
_
_
x
1
x
2
x
3
1
_
_
_
_
(3)
Mithilfe der Daten ber die Transformationsmatrix (uere Merkmale) sowie den
Daten ber die Kameramatrix (innere Merkmale) kann das Modell szenenun-
abhngig angewendet werden. Diese Daten werden mit Hilfe der vorgestellten
Software RGBDemo ermittelt.
B.3. Mapping zwischen Farb- und Tiefenwerten
Um die Farbwerte korrekt auf die Tiefenwerte abzubilden, wird die reale Entfer-
nung zur Kinect bentigt. Die Infarotkamera besitzt jedoch nicht die Fhigkeit,
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
B.4. Grenzen und Probleme des Modells 33
echte Distanzen (distance) zu ermitteln, sondern kann nur einen umskalierten
Wert abgeben. Experimentelle Ausarbeitungen ergaben jedoch eine Mglichkeit,
diese Werte (disparity) zurckskalieren zu knnen.
distance = 1.0/(0.00307110156374373 disparity + 3.33094951605675) (4)
Folgender Algorithmus wird verwendet, um ein erfolgreiches Abbilden der unter-
schiedlichen Aufnahmen der Kameras auf einen gemeinsamen Raum zu realisie-
ren:
1. rechne alle disparity-Werte in echte distance-Werte um
2. projiziere alle Punkte des 2D-Tiefenbildes in den 3D-Raum, indem die distance-
Werte als Skalierungsfaktor s benutzt werden.
x
depth
= C
1
depth
(s y
depth
) (5)
3. transformiere die 3D-Szene der Tiefenwerte auf die 3D-Szene der RGB-
Werte und projiziere das Ergebnis wieder in ein 2D-Bild, indem man wieder
die distance-Werte als Skalierungsfaktor s benutzt.
y
rgb
=
C
rgb
(
_
R t

DepthToRgb
x
depth
)
s
(6)
Das Ergebnis ist ein Bild, in dem die Farbwerte und die Tiefenwerte der origina-
len Szene korrekt aufeinander gemappt sind und immer so genau sind, wie die
Kalibrierung dies ermglicht.
B.4. Grenzen und Probleme des Modells
Da die Tiefenbildkamera und die Farbkamera bei gleicher Ausung verschie-
dene Sichtbereiche der selben 3D-Szene haben, knnen einige Punkte am Rand
der Bilder nicht aufeinander abgebildet werden. Dadurch hat die resultierende
Punktwolke eine geringere Ausung als die ursprnglichen Bilder.
Eine weitere Schwche des Modells ist die Annahme eines Loches als Blende.
Echte Linsen haben jedoch eine Verzerrung, was zur einer Strung im Bild fhrt,
welche durch die Kameramatrix nicht ausgeglichen wird. Gerade bei dieser Mo-
dellschwche knnen noch entscheidende Verbesserungen durchgefhrt werden.
Diese erhhen jedoch den Rechenaufwand und knnten zur Verschlechterung der
Performanz fhren.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0
Literatur 34
Literatur
[Kin] Inside The Kinect Hardware. 5. Aug. 2011. URL: http : / / www .
trueachievements.com/n2124/inside-the-kinect-hardware.htm.
[Wika] Kinect. 5. Aug. 2011. URL: http://de.wikipedia.org/wiki/Kinect.
[Wikb] Kinect. 5. Aug. 2011. URL: http://en.wikipedia.org/wiki/Kinect.
[Bur] Kinect Calibration. 10. Sep. 2011. URL: http://nicolas.burrus.
name/index.php/Research/KinectCalibration.
[New06] Newman, T.S. A survey of the marching cubes algorithm. In: Com-
puter Graphics 30 (2006). URL: http://www.proxyarch.com/util/
techpapers/papers/survey%20of%20marching%20cubes.pdf.
[Pin] Pinhole camera model. 10. Sep. 2011. URL: http://en.wikipedia.
org/wiki/Pinhole_camera_model.
[Kaza] Poisson Surface Reconstruction. 8. Juli 2011. URL: http://www.cs.
jhu.edu/~misha/MyPapers/SGP06.pdf.
[Kazb] Poisson Surface Reconstruction Quelltext. 8. Juli 2011. URL: http://
www.cs.jhu.edu/~misha/Code/PoissonRecon/.
[Bou] Polygonising a scalar eld. 14. Juli 2011. URL: http://paulbourke.
net/geometry/polygonise/.
[Kazc] Unconstrained Isosurface Extraction on Arbitrary Octrees. 8. Juli 2011.
URL: http://www.cs.jhu.edu/~misha/MyPapers/SGP07a.pdf.
Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0