doku kinec

Upload: berger-maskenball

Post on 18-Jul-2015

125 views

Category:

Documents


0 download

TRANSCRIPT

Technische Universitt Bergakademie FreibergFakultt fr Mathematik und InformatikInstitut fr InformatikLehrstuhl fr virtuelle Realitt und MultimediaWissenschaftliche Visualisierung3D-Scan 2.0Martin ReinhardtSteffen DachMartin BackaschChristian SchlegelTobias Schrder15. September 2011Betreuer/1. Korrektor:Prof. B. Jung2. Korrektor:Dr. Ben Amor2Die von den Firmen Microsoft und PrimeSense entwickelte HardwareKinect ist eine Sensorleiste bestehend aus einer Tiefensensor-Kamera,einer Farbkamera und einem 3D-Mikrofon. Sie ist in Deutschland seiddem10.Novembererhltlichundwurdeweltweitber10Millionenmal verkauft.BereitswenigeTagenachderVerffentlichunggabeserste Projekte, welche die Nutzung am PC unter Verwendung verschie-dener Betriebssysteme ermglichte.An der TU Bergakademie Freiberg wurde am Institut fr Informatik imSommersemester 2011 das Projekt 3D-Scan 2.0 gestartet. Ziel ist esdabei, mit Hilfe dieser speziellen Hardware Objekte zu scannen unddas Ergebnis als Punktwolke oder als Gittermodel zu speichern.In dieser Dokumentation sollen die Hardware und alle fr die Softwarerelevanten Algorithmen vorgestellt und erklrt werden.Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0Inhaltsverzeichnis 3Inhaltsverzeichnis1. Hardware 41.1. Die Kinect Senorleiste . . . . . . . . . . . . . . . . . . . . . . . . 41.2. Scan-Tablet und Scan-Frame . . . . . . . . . . . . . . . . . . . . 51.3. Netzteil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62. Kalibrierung 72.1. Grund der Kalibrierung. . . . . . . . . . . . . . . . . . . . . . . 72.2. praktische Realisierung . . . . . . . . . . . . . . . . . . . . . . . 73. Poisson Surface Reconstruction 93.1. Funktionsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.2. Parameter der PSR . . . . . . . . . . . . . . . . . . . . . . . . . . 103.3. Beispiel verschiedener Parameter. . . . . . . . . . . . . . . . . . 114. Applikationen fr Tests 144.1. Applikationsstarter . . . . . . . . . . . . . . . . . . . . . . . . . . 144.2. OpenSceneGraph Testprogramm . . . . . . . . . . . . . . . . . . 144.3. Kinect Testprogramm . . . . . . . . . . . . . . . . . . . . . . . . 144.4. Standard Testprogramm . . . . . . . . . . . . . . . . . . . . . . . 154.5. Benchmark der Poisson-Surface-Reconstruction . . . . . . . . . . 164.6. Poisson-Surface-Reconstruction Testprogramm . . . . . . . . . . . 174.7. Mesh-Frbung Testprogramm . . . . . . . . . . . . . . . . . . . . 195. Scannen einer markierten Szene 205.1. Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.2. Benutzung und Ansicht . . . . . . . . . . . . . . . . . . . . . . . 205.3. genauer Programmablauf . . . . . . . . . . . . . . . . . . . . . . 216. Generierung eines Modells 24A. genaue Hardwarespezikationen 28B. mathematische Beschreibung der Kalibrierung 30B.1. Das Lochkameramodell . . . . . . . . . . . . . . . . . . . . . . . 30B.2. Geometrie des Modells . . . . . . . . . . . . . . . . . . . . . . . 30B.3. Mapping zwischen Farb- und Tiefenwerten . . . . . . . . . . . . 32B.4. Grenzen und Probleme des Modells . . . . . . . . . . . . . . . . 33Literatur 34Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.01. Hardware 41. HardwareDieGrundlagefrdasgesamte3D-Scan-Projekt bildet diezurVerfgungge-stellteHardware. Natrlichsteht dieMicrosoft Kinect dabei imMittelpunkt,je-doch sind auch andere Hilfsmittel sehr wichtig, um einen erfolgreichen qualitativhochwertigen Scan zu realisieren.1.1. Die Kinect SenorleisteDieMicrosoft Kinect wurdeinZusammenarbeit mit demVideospiel-EntwicklerRare Ltd. und der israelischen Firma PrimeSense entwickelt. Die Sensorleiste be-steht aus einer RGB-Kamera, einem Infarot-Sensor, einem Infarot-Projektor undeinem 3D-Mikrofon (multi-microphone-array).Abb. 1: Aufbau der Kinect SensorleisteFr die Datenbertragung wird ein spezieller proprietrer Microsoft-zertizierterUSB-Port genutzt, welcher neben dem USB 2.0 Standard zustzlichen Strom (12Volt bei 1.08Ampere)liefert.EinmitgelieferterAdaptermit Netzteil stellt hier-bei eineLsungzumAnschlussaneinenstandardisiertenUSB2.0Port(Typ-A)bereit. Die Sensorleiste hat einen motorisierten Standfu, mit welcher die Sensor-leiste um jeweils 27auf- und abgeneigt werden kann. Mit Hilfe der originalenMicrosoft-Xbox-SoftwarewirdeinepraktischeNutzweitevon1.2-3.5merreicht,andererseits wurde bereits erfolgreiche Trackingsoftware im Bereich 0.7-6m ge-testet.DieinderKinect verbauteRGB-Kameranutzt zurBilderzeugungeinenBayer-Sensor, mit HilfedessenverschiedeneStreamserzeugt werden. Dabei werdenReinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.01.2. Scan-Tablet und Scan-Frame 5Abb. 2: Funktionsweise des Infarot-SystemsdieAusungen640x480und1280x1024bei jeweils8,16und24bitunter-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 reektiertwerden. Gemeinsam bilden die Kameras einen VGA-Stream (640x480), welchernebendenFarbwertennunauchdieTiefeninformationenenthlt. Diesnenntman 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 eineKalibrierung 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-FrameDas Scan-Tablet ist eine Unterlage, mit dessen Hilfe Objekte in ausreichender Ge-nauigkeit gescannt werden knnen. Dies wird durch die optimale quadratischeMarker-Anordnung in den Ecken ermglicht. Auf der Unterseite ist ein Checker-boardangebracht, mit welchemeineeinwandfreieKalibrierungdurchgefhrtwerden kann. Auerdem gibt es noch eine optionale Drehunterlage. Durch Be-nutzung dieser verndert sich die Belichtung des Objektes whrend des Scannensnicht, 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 zunutzen. Dennoch werden die Marker fr die Kamerandung innerhalb des 3D-Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.01.3. Netzteil 6Raumesbentigt, welchebestimmtenPositionierungsvoraussetzungenunterlie-gen. Durch die Nutzung des Rahmens kann man diese Marker dennoch perfektplatzieren, um sehr gute Scanergebnisse zu erzielen.AlleScan-UtensiliensindausHolzgefertigt,damit beispielsweiseschwereGe-genstndeaufdemTabletplatziertwerdenknnen.BeimScan-FramesinddieStreben doppelt geschient, was eine hohe Robustheit zur Folge hat.Abb. 3: Scan-Tablet mit Markern Abb. 4: Scan-Frame mit Markern1.3. NetzteilAufgrundderbesonderenBedrfnisseanSpannungundStrom, ist dieKinectnichtfrdenEinsatzimfreiengeeignet.EinselbstgebautesmodiziertesNetz-teil kanndiesjedochermglichen,indemmitHilfevon10Mignon-Akkuzellenwird eine unterbrechungsfreie Spannungsversorgung garantiert wird. Somit ist esmglich, Objekte auch auerhalb der Steckdosenreichweite einzuscannen.Abb. 5: spezieller Kinect-Konnektor Abb. 6: Adapter mit Akku-PaketReinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.02. Kalibrierung 72. Kalibrierung2.1. Grund der KalibrierungDie Microsoft Kinect arbeitet mit zwei Kameras, der Farbkamera und der Infarot-kamera, umeinenRGBD-Streamaufzubauen. DadieverbautenLinsennichtperfekt immathematischenSinnesind, kommt eszuVerzerrungen, welcheesauszugleichengilt. ZudemsinddieKamerasasymmetrischzueinander 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 RealisierungDie zur Kalibrierung notwendigen Matrixeintrge knnen mit Hilfe der SoftwareRGBDemo von Nicolas Burrus ermittelt werden, welche zur Zeit in der Version0.6 vorliegt. Dazu wird lediglich ein sogenanntes Checkerboard bentigt (sieheAbb. 7), welches sich auf der Rckseite der Scan-Tablets bendet. Die Kalibrie-rungsdaten werden in .yml Dateien gespeichert, wobei fr die Serien-nummerderbenutztenKinect steht,damit beimNutzenderApplikationgleichdie richtigen Daten benutzt werden knnen.Das Ergebnis der genutzten Daten ist eine bereinstimmung der Farbwerte aufdie richtigen Punkte in der Wolke (Vergleich der Abbildungen 8 und 9). Nur durchdiese Kalibrierung ist es mglich, Farbwerte korrekt auf ein Mesh zu bertragenoder auch nur die Punktwolke an den richtigen Werten zu frben.Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.02.2. praktische Realisierung 8Abb. 7: Checkerboard beim KalibrierungsvorgangAbb. 8: Punktwolke, unkalibriert Abb. 9: Punktwolke, kalibriertReinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.03. Poisson Surface Reconstruction 93. Poisson Surface ReconstructionDiePoissonSurfaceReconstruction(kurz:PSR)stellt denMittelpunkt derMesh-generierungdar,dasoeinwassserdichtesundglattesGittererzeugt werdenkann. SiewurdeerstmalsvonMichael Kazhdaneingefhrt undndet Anwen-dung in der Punktwolke-Software Meshlab. Mit Hilfe einer wrapper-Klasse kannder Kazhdan-Code direkt auf die Punktwolken der gescannten Objekte angewen-det werden. Genaue Beschreibungen und Vorgehensweisen sind in der Literaturbei [Bou], [Kaza], [Kazb], [Kazc] sowie [New06] zu nden.3.1. FunktionsweiseFr den reibungslosen Ablauf der PSR bentigt man neben der Punktwolke auchalle Normalen an den Punkten. Unter Voraussetzung, dass diese Punkte die Fl-chedesObjektesbegrenzen,kanneineisosurfaceausdemNormalenfeldbe-stimmt werden. Diese isosurface steht mit dem Gradienten der Indikatorfunktionin 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 desPSR an einer zweidimensionalen Flche. Zuerst wird mit Hilfe des Normalenfeldesder Punktwolke der Gradient der Indikatorfunktion berechnet. Nun kann aus die-sem Gradienten die Indikatorfunktion, welche berall innerhalb der Flche denWert1 besitzt, abgeleitet werden, welche die Flche beschreibt. Diese Extraktionder Flche wird mit dem marching cubes Algorithmus realisiert, welcher mit deroctree Datenstruktur arbeitet (siehe Abbildung 11). Dieser Algorithmus zerlegt diePunktwolke in ein Voxelgitter und entscheidet, welche Punkte die isosurface desObjektes denieren. Die Schnittpunkte der isosurface mit den Kanten der Voxelgenerieren nun eine Triangulierung, wodurch ein 3D-Gittermodell entsteht.Abb. 10: Ablauf einer PSRReinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.03.2. Parameter der PSR 10Abb. 11: marching cubes Algorithmus3.2. Parameter der PSRUm 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, welchezusammenfallen.DamitwirddieAnzahl derVerticesimModell 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: beiTRUEwirddieLngederNormalenalsKondenzinformationgenutzt whrendbei FALSEdieNormalennormalisiert werdendamit alledie gleiche Lnge fr die Rekonstruktion haben.Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.03.3. Beispiel verschiedener Parameter 11Abb. 12: ursprngliche Punktwolke3.3. Beispiel verschiedener ParameterAm Beispiel der Models des sogenannten CrokToy (Abbildung 12) sollen nunverschiedene 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 bestimmtwurden (siehe Abbildungen 13 und 14).Abb. 13: Depth: 8, SpN: 1, Offset: 1 Verti-ces: 24899 Faces: 49794Abb. 14: Depth: 6, SpN: 1, Offset: 1 Verti-ces: 6275, Faces: 12546Mit Hilfe des Wertes SamplesPerNode kann das Modell ebenfalls sehr gut ge-Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.03.3. Beispiel verschiedener Parameter 12glttet 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: 12546Abb. 16: Depth: 6, SpN: 5, Offset: 1 Verti-ces: 6322, Faces: 12640Abb. 17: Depth: 6, SpN: 15, Offset: 1 Ver-tices: 5833, Faces: 11662Abb. 18: Depth: 6, SpN: 20, Offset: 1 Ver-tices: 5258, Faces: 10512MitdemOffset-WertknnendieFlchenvomZentrumdesObjektesweg-bewegt oder angenhert werden (Abbildungen 19, 20 und 21). Der beste Wertwurde hier mit 1 ermittelt.Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.03.3. Beispiel verschiedener Parameter 13Abb. 19: Depth: 6, SpN: 5, Offset: 1 Verti-ces: 6322, Faces: 12640Abb. 20: Depth: 6, SpN: 1, Offset: 1.5 Ver-tices: 6268, Faces: 12532Abb. 21: Depth: 6, SpN: 5, Offset: 0.5 Vertices: 6684, Faces: 13341Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.04. Applikationen fr Tests 144. Applikationen fr TestsDas System scivi besitzt neben der Anwendung Scan verschiedene Applikatio-nen zum Testen von OpenSceneGraph (OSG), der Kinect und der Poissonrekon-struktion. Diese sind:PoissonBenchtestColortestKinecttestOsgtestPoissontest4.1. ApplikationsstarterImGrundehandelt essichbei demFrameworkumeinenStarterfrAnwen-dungen, welche scivi mit Hilfe der Klasse ArgumentParser als Kommandozei-lenargument bergebenwird.DasInterfaceIApplicationstellt diedafrnot-wendigen Funktionen fr den Start und fr korrekte Kommandozeilenausgabenbereit.GltigeAnwendungenmssendahernurdasInterfaceimplementierenundindenStartereingetragenwerden.Bei AufrufohneArgumentwerdendiemglichen Programme vorgestellt (Kommandozeilenausgabe 1)4.2. OpenSceneGraph TestprogrammDasProgrammtestOsg(Abbildung22)stellteinenFunktionstestfrOSGundvor 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 TestprogrammDie Anwendung testKinect (Kommandozeilenausgabe 2) ist ein Test zum Aus-lesenderSeriennummerderangeschlossenenKinect undzumAnzeigenalleruntersttzten 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.04.4. Standard Testprogramm 15Kommandozeilenausgabe 1 Start ohne spezische Anwendung$./sciviUsage:./scivioption[suboption][arguments]Options:-PoissonBench Creatinglotsofexamplemesheswithdifferentpoissonreconstructionparameters.-generate Runtheapplicationforgeneratingamodel.-ds maxdistancebetweenduplicates-nc neighborcountfornormalcalculation-nf flipnormalsaftercalculation-ptd octreedepthforpoissonreconstruction-psd solverdivideforpoissonreconstruction-psc sample_countforpoissonreconstruction-pid iso_divideforpoissonreconstruction-pcn noconfidenceforpoissonreconstruction-pr refineforpoissonreconstruction-po offsetforpoissonreconstruction-cnc neighborcountforcolormapping-cf fastcolormapping-in inputpointcloud-out outputcoloredmesh-scan Runtheapplicationforscanningamarkedscene.-tabletboundingboxvaluesforscantablet-frameboundingboxvaluesforscanframe-footprintsavefootprintto.gle-files(experimental)-test Runthestandardtestapplication.-testColor Runthemeshcolorizingtestapplication.-testKinect RuntheKinecttestapplication.-testOsg RuntheOpenSceneGraphtestapplication.-testPoisson RunthePoisson-Surface-Reconstructiontestapplication.4.4. Standard TestprogrammDie Anwendung test (Abbildung 23) stellt einen professionellen Viewer der Ki-nect dar. Auf der linkenSeitekannder Kinect-Streammit denSchaltchenSTILL und LIVE gesteuert werden. Direkt darunter bendet sich der Button frdie Darstellung im Fenster (VISIBLE und HIDDEN). Mit den Kontrollschaltern,welche sich am oberen bzw. unterem Rand benden, kann der Neigungsmotordirekt angesteuert werden. Auf der rechten Seite benden sich die Buttons fr dieFarbgebungderdargestelltenPunktwolke.Dabei werdenentwederdieFarbenReinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.04.5. Benchmark der Poisson-Surface-Reconstruction 16Abb. 22: Die Anwendung testOsgaus dem RGB Bild auf das Tiefenbild gemappt oder eine Farbcodierung genutzt,welchedieTiefenwertedarstellen(InAbb.23wirddieFarbcodierunggenutzt).Bei dem genutzten Mapping werden natrlich, bei Vorhandensein einer passen-den .yml Datei, die Daten kalibriert, was durch Anzeige einer Seriennummer amunteren Rand verdeutlicht wird.Zustzlichbestehtbei dieserAnwendungdieMglichkeit,denaktuellenFrameals .ply oder .pgm zu speichern, um ihn in alternativen Anzeigeprogrammen zuanalysieren. Es gibt auch erste Versuche, ein passendes Mesh zu generieren; je-doch werden hier keine speziellen Techniken wie in anderen dafr vorgesehenenProgrammen verwendet.Durch diesen gesamten Funktionsumfang wird ein erstes greres Testprogrammvorgestellt, mit welchem die Kinect sehr professionell gesteuert und ausgelesenwerden kann4.5. Benchmark der Poisson-Surface-ReconstructionMit HilfederAnwendungPoissonBenchwerdenzueinemModell, welchesimQuelltext festgelegt ist, Rekonstruktionen mit vielen verschiedenen Parameterein-stellungen durchgefhrt. Somit dient sie zum Finden optimaler Poisson-Parameterfr 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.04.6. Poisson-Surface-Reconstruction Testprogramm 17Kommandozeilenausgabe 2 Ausgabe der Anwendung testKinect$./scivi-testKinect#######################################################################TUBERGAKADEMIEFREIBERG#ScientificVisualizationWorkshop2011##Serial:##SupportedKinectVideoModes# 0:1280x1024@24+0(decompressed)# 1: 640x 480@24+0(decompressed)# 2:1280x1024@ 8+0(bayercompressed)# 3: 640x 480@ 8+0(bayercompressed)# 4:1280x1024@ 8+0(8-bitIR)# 5: 640x 480@ 8+0(8-bitIR)# 6:1280x1024@10+6(10-bitIR)# 7: 640x 480@10+6(10-bitIR)# 8:1280x1024@10+0(10-bitpackedIR)# 9: 640x 480@10+0(10-bitpackedIR)# 10: 640x 480@24+0(YUVRGB)# 11: 640x 480@16+0(YUVRAW)#SupportedKinectDepthModes# 0: 640x 480@11+5(11-bitwithinuint16_t)# 1: 640x 480@10+6(10-bitwithinuint16_t)# 2: 640x 480@11+0(11-bitpacked)# 3: 640x 480@10+0(10-bitpacked)#######################################################################4.6. Poisson-Surface-Reconstruction TestprogrammDurch 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 gespeichertwurden, wird die sogenannte Bounding Box berechnet. Ein Algorithmus, dessenZiel esist,Duplikatezuentfernen,gehrtzumerstenwichtigenSchritt,umeinqualitativ hochwertiges Gittermodell zu erzeugen.1. Der erste Originalpunkt aus dem Array wird als Referenzpunkt betrachtet2. Nun werden alle Originalpunkte betrachtet, welche innerhalb einer festge-Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.04.6. Poisson-Surface-Reconstruction Testprogramm 18Abb. 23: Die Standard TestanwendunglegtenUmgebungdesReferenzpunktesliegen(-Umgebung).EinMittel-punkt wird ber alle Positionen der Originalpunkte aus der- Umgebungberechnet und am Ende des Arrays gespeichert.3. NunwerdendieimletztenSchritt betrachtetenOriginalpunkteausdemArray 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 PunktmitdemVoxel-GridFilterunddemRANSAC-Algorithmusbestimmt.Dazuwirdzuerst die Bounding Box in ein Voxelgitter zerlegt. Die resultierenden Voxel wer-den jetzt mit Hilfe des bekannten RANSAC-Algorithmus mit einer Normalen einerEbene versehen:1. eswerdenzuflligdrei PunkteausdemVoxel herausgegriffenmit deneneine Ebene aufgespannt wird2. Innerhalb des Voxels werden nun alle Punkte bestimmt, die innerhalb einerFehlerschranke um die Ebene positioniert sind. Diese bilden das Consensusset, woraus sich eine Fehlersumme berechnen lsst.Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.04.7. Mesh-Frbung Testprogramm 193. Evaluiere das Ergebnis und bernehme es, falls:Das Consensus set enthlt mehr Punkte als ein VorhergehendesDas Consensus set enthlt genauso viele Punkte wie ein Vorhergehen-des, aber die Fehlersumme ist geringerDer Algorithmus wird so lange wiederholt, bis entweder ein Modell mit derFehlersumme 0 gefunden wird, oder eine Iterationsschranke erreicht ist.Nach der Bestimmung der Normalen in jedem Punkt ist es nun mglich, mit denvorgegebenen Parametern eine PSR durchzufhren. Das resultierende Mesh wirdim Anschluss im Format .osg gespeichert.4.7. Mesh-Frbung TestprogrammMit Hilfe der Anwendung testColor ist es mglich, Farben aus der aufgenom-menen Punktwolke auf das generierte Gitter zu projizieren.Dazu ruft man dasProgramm mit den ArgumentenPfad zur PunktwolkePfad zum zugehrigem MeshPfad zur Ausgabedatei des eingefrbten Meshauf.Der erste Schritt ist das Speichern der Punktpositionen und Farbwerte aus denDateien in Arrays. Mit Hilfe des folgenden Algorithmus ist es dann mglich, dieFarbwerte 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 denPunkt mit dem geringsten Abstand.3. Die Farbinformationen des Punktes mit dem geringsten Abstand wird nunauf 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 gesamteMesh eingefrbt ist.Das resultierende gefrbte Mesh wird nun im .osg gespeichert.Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.05. Scannen einer markierten Szene 205. Scannen einer markierten SzeneDie Applikation scan stellt als Anwendung das Herzstck des Projektes 3D Scan2.0dar. Mit HilfedieserAnwendungist esmglich, Objekteinnerhalbeinerfestgelegten Umgebung dreidimensional einzuscannen.5.1. ParameterEsgibtzweiverschiedeneArten,einenBereicheinzugrenzen,innerhalbdessengescannt wird:./scivi-scan-tablet Nutzung des Scan-Tablet als markierten Bereich./scivi-scan-frame Nutzung des Scan-Frame als markierten BereichZustzlich steht die Option -footprint zur Verfgung, welche eine noch experi-mentelle Anwendung zur Ermittlung des Grundrisses darstellt.5.2. Benutzung und AnsichtBei Start der Applikation erkennt man sogleich eine zweigeteilte Ansicht (Abbil-dung 24):Links:DieserViewzeigt eineKameraansicht derKinect. Hierwerdenaufden 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 erfolgreicherkannt wurden, wirdhierauchderaktuelleAusschnitt derBoundingboxlive angezeigt.Nachdem das Objekt innerhalb der Marker platziert wurde, beginnt man, mitder 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 mitverschiedenen 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 mandie 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 3Marker erkannt sind.Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.05.3. genauer Programmablauf 21Abb. 24: Die Scan-Anwendung mit der zweigeteilten Ansichtentf lscht die Punktwolkep speichert die aktuelle Punktwolke als .ply-Datei unter ./Data/PointClouds/New/.5.3. genauer Programmablauf5.3.1. ScanablaufNach 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 imRGB-Bild. Mit HilfederZuordnungslisteexistiert dieMglichkeit, diePunkteinden3D-Raumzuinterpolieren1.Fallsdrei MarkervonderAnwendungkorrekterkannt wurden, ist das Aufnehmen einer Szene mglich.Die beiden Fenster werden nach der Entscheidung aktualisiert, indem der osgViewerderKameraansicht (WorldView)dieListenbergebenbekommt unddierechteAnsicht (ModelView) alle bisher aufgenommenen Punkte anzeigt. Falls das Auf-nehmen einer Szene mglich wre, wird zustzlich die aktuelle Punktwolke dar-gestellt.1In der Zuordnungsliste werden alle Nachbarpunkte mit dem Abstand kleiner eins gesucht undmit einem Gewicht gespeichert. So knnen die 3D-Punkte der Marker durch gewichtete Inter-polation bestimmt werden.Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.05.3. genauer Programmablauf 22Ein korrekte Ausrichtung der Punkte im ModelView bei mindestens 3 Markern istmglich, indem sie in das Objektkoordinatensystem transformiert werden. DurchMittlungderdiagonalenStreckezweierMarkerwirdderUrsprungdesKoordi-natensystems ermittelt. Nun werden aus den Markerpositionen die aufspannen-den Vektoren fr das Koordinatensystem berechnet2. Aufgrund einer eindeutigenIdentizierung der Marker ist es mglich, das Koordinatensystem auch eindeutigauszurichten.AllerekonstruiertenPunktewerdennunmit Hilfeeiner Verschiebungmit an-schlieender senkrechter Projektionindas Objektkoordinatensystemtransfor-miert. Nach einem kurzen Test, ob der Punkt in der Bounding-Box liegt, wird derPunkt je nach Einstellung der Speicherung entweder in die Liste der permanentenPunkte aufgenommen oder in das Live-Bild integriert. Nach diesem Schritt wirddas ModellViewaktualisiert, umso den aktuellenStand der Punktwolkedarzu-stellen.Falls die Taste p gedrckt und somit das speichern aktiviert wurde, kopiert dasProgramm den aktuellen Stand der permanenten Punktwolke in eine .ply Dateiunter./Data/PointClouds/New/.Diesekanndannmit externerSoftware(z.B.Meshlab) oder anderen Applikationen (z.B. generate) betrachtet und bearbeitetwerden.5.3.2. Die Option footprintUmeinenGrundrisszuerzeugen, sindmehrereaufeinanderfolgendeSchrittentig. Zuerst wird mit einem Schwellwert von 0.002 (2mm) jeder Punkt nahe derBodenche auf eine 2D-Ebene projiziert. Nachdem Punkte mit sehr geringemAbstandzusammengefasst wurden,wirdeineDistanzmatrixaufgestellt,welcheman fr die Implementierung von -Shapes bentigt. Dabei werden immer zweiPunktebetrachtet,derenAbstandkleinerist,alseinfestgelegterWert(-Wert).ImAnschlusswirddurchbeidePunkteeinKreismitdemRadius2gelegt,wel-cher mit Hilfe der Strecke zwischen beiden Punkten zweigeteilt wird. Falls nun imgreren Kreisabschnitt keine weiteren Punkte zu nden sind, handelt es sich umeine Auenkante.Die gefunden Kanten werden jetzt in Cluster sortiert, indem rekursiv nach zusam-menhngenden Kanten gesucht wird. Diese Zuordnung zu einem Cluster wird mitHilfe 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 verwendeteAlgorithmusentspricht demder -shapes, nur dassin2Zuerst werden mit den gegebenen Vektoren die Grundche berechnet und danach ber dasKreuzprodukt ein dazu senkrechter Vektor.Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.05.3. genauer Programmablauf 23diesem Fall als unendlich angenommen wird3. Dadurch knnen nur konvexeFuabdrcke realisiert werden.Durch die Umwandlung der konvexen Hlle in die konkave Hlle knnen jedochauchnichtkonvexeFuabdrckeerkanntwerden.DabeiwirdeineKantedurchzwei neue zu ersetzten, indem naheliegende, innere Punkte verwendet werden.Im Falle der Option footprint werden beim Drcken der Taste p die Dateienalpha_shape.gle zeigt -Shape des Grundrissesconvex_hull.gle zeigt konvexe Hlle des Grundrissesconcave_hull.gle zeigt konkave Hlle des Grundrissesim Verzeichnis ./Data/Footprints/ gespeichert, welche mit Hilfe der GraphicsLayout Engine bersetzt und betrachtet werden knnen.3Dasheit,mansucht Geradenzwischenzwei Punkten,wobei allerestlichenPunkteaufderselben Seite der Gerade benden sollen.Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.06. Generierung eines Modells 246. Generierung eines ModellsDieAnwendunggeneratestellt einautomatisiertesSystemdar,umausPunkt-wolken, welche ber den Scanprozess entstanden sind, farbige Gittermodelle im.osg-Format zuerstellen.DerProgrammablaufkanndabei invierwesentlicheSchritte zusammengefasst werden:1. Entfernung von Duplikaten2. Berechnung der Normalen3. Poisson Surface Reconstruction4. Colorierung des GittermodellsMit Hilfe des Algorithmus, welcher schon in der testPoisson vorgestellt wurde,werden innerhalb dieser Applikation zuerst Duplikate von Punkten gefunden unddannentfernt. Diebenutzte-Umgebungarbeitet dabei mit demStandartwertvon2mmbeziehungsweisemit einemWert, welcherberdieKommandozeileals Argument geliefert wird.Bei dem nun folgenden Schritt der Normalenberechnung bedient man sich derVisual and Computer Graphics Library (VCG Library). Diese ist eine Open Sour-ce Bibliothek, welche aus einer Zusammenarbeit zwischen dem Visual Compu-tingLabderISTIunddemItalianNational ResearchCouncil (CNR)enstandenist.SiebasiertaufC++TemplatesundbietetAlgorithmenfrdasVerarbeitenvon Dreiecks- bzw. Vierecksmeshes. Unter Anderem bietet diese Bibliothek einenAlgorithmus 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.DerwesentlicheVorteil dieserVerbesserungbesteht darin, dassdieNormalenkeine Ausreier enthalten und somit das Gittermodell wesentlich runder wirkt.DerdritteSchritt, inwelchemdiePoissonSurfaceReconstructiongenutzt wird,umeinMeshzuerzeugen,wurdeinseinerFunktionsweiseausKapitel 3ber-nommen. Alle Werte fr die Rekonstruktion knnen ber ein Kommandozeilen-argument oder aber auch aus den Standartwerten bernommen werden. Somitknnen die Gittermodelle gezielt auf die gegebene Punktwolke abgestimmt wer-den.Fr die Colorierung des Meshes steht neben dem bekannten Algorithmus aus derTestanwendung testColor, welcher mit der Option -cf genutzt wird, ein weiterereffektiver 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 Farbbergngeerzeugt werden.Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.06. Generierung eines Modells 25In denKommandozeilenausgaben 3 und4 kannman die FunktionsweiseallerSchritte sehr leicht am Beispiel der PunktwolkeData/PointClouds/FrogToy_2011_07_02_15_11_07_bin.plynachvollziehen. Das fertige colorierte Modell ist in Abbildung 25 zu sehen.Abb. 25: Die automatisierte MeshgenerierungReinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.06. Generierung eines Modells 26Kommandozeilenausgabe 3 Meshgenerierung Teil 1#################################################################TUBERGAKADEMIEFREIBERG#ScientificVisualizationWorkshop2011##Loadinginputpointcloud:#Successfullyloadeddatafromfile"Data/PointClouds/Frog[...]#Done.#Removingduplicatedvertices:#Remainingvertexcount:196000[...]#Remainingvertexcount:3000#Remainingvertexcount:0#Duplicatecount:144417#Vertexcount:51886#Done.#Calculatingnormalsforpointcloud:#Done.#Generatingmeshfrompointcloud:#Setoutputfilenametotmp#################################################################StartingPoissonSurfaceReconstructionusingKazhdansCode#Savingtofiletmp#ParameterDepth:8#ParameterSolverDivide:6#ParameterSamplesPerNode:1#ParameterIsoDivide:8#ParameterRefine:3#ParameterScale:1.25#ParameterKernelDepth:-1#ParemeterOffset:1#ParameterNoResetSamples:0#ParameterNoClipTree:0#ParameterConfidence:1Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.06. Generierung eines Modells 27Kommandozeilenausgabe 4 Meshgenerierung Teil 2Samples:51886SettingsampleweightsAddingPointsandNormals#Leaves/Nodes:326775/373457#Leaves/Nodes:326915/373617Depth:1/8Matrixentries:36/8^2=56.2500%Got/Solved/Updatedin: 0.000/ 0.000/ 0.000[...]Nodes[59/64]:2192Matrixentries:90895/2192^2=1.8917%Got/Solved/Updatedin: 0.000/ 0.000/ 0.000#IsoValueis-1651.069512#IsoValueis-1651.069458#PoissonReconstructiondone.#Savedtotmp#Done.#Loadinggeneratedmesh:#Successfullyloadeddatafromfile"tmp.ply"#Done.#Mappingcolorinformation:#Remainingvertexcount:52000[...]#Remainingvertexcount:1000#Done.Manipulatorwarning:eventTimeDelta=-4.5e-05Manipulatorwarning:eventTimeDelta=-0.000226#################################################################Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0A. genaue Hardwarespezikationen 28A. genaue HardwarespezikationenAbb. 26: vollstndige Hardware der Kinectelektrischer Motor3 Mainboard PlatinenArbeitsspeicher: Hynix 512Mb DDR2 SDRAMAktivkhlerFarbkameraInfarotkameraInfarotprojektor4 MikrofoneReinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0A. genaue Hardwarespezikationen 294 Arten von Schrauben15 spezielle Chips, darunter:Wolfson Stereo ADC with microphone preampFairchild N-Channel PowerTrench MOSFETNEC USB 2.0 hub controllerCamera interface controllerMarvell SoC camera interface controllerAnalog Devices CMOS Rail-to-Rail Output Operational AmplierTI 8-bit, 8-channel Sampling A/D converterAllegro low voltage stepper and single/dual motor driverST 8Mbit NV ash memoryPrimeSense image sensor processorTexas Instruments USB audio controllerKionix accelerometerReinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0B. mathematische Beschreibung der Kalibrierung 30B. mathematische Beschreibung der KalibrierungB.1. Das LochkameramodellDasLochkamera-Model beschreibt diemathematischenZusammenhngezwi-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 imMittelpunkt.Abb. 27: Lochkamera, vereinfachtB.2. Geometrie des ModellsDie Lochkamera obliegt einer sehr bestimmten Geometrie, dargestellt in Abb. 28.Die Blende der Kamera ist dabei ein Punkt im UrsprungO des dreidimensiona-len orthogonalen Koordinatensystems. Die optische Achse wird mit X3 bezeichnetund die 2D Projektionsche (Bildche) ist eine Ebene, parallel zur X1X2-Ebene.Ihr Mittelpunkt O wird mit dem Abstand f in negativer Richtung der X3-Achse aufReinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0B.2. Geometrie des Modells 31Abb. 28: Lochkamera, Geometriedie Bildche verschoben, wo er das BildzentrumR bildet. Ein PunktPder 3D-Szene wird dabei durch eine GeradePOauf den Punkt Q abgebildet. Das re-sultierende Bild ist dabei einer Punktspiegelung unterzogen worden. Als Auswegwird eine Anschauung einer virtuellen BildcheQ

, aufgespannt durchY1undY2,betrachtet,inwelcherdieBildkoordinatenrichtigorientiert vorliegen(SieheAbb. 29).Man kann den Strahlenverlauf auf zwei Dimensionen projizieren, in denen durchdie optischen Strahlen hnliche Dreiecke aufgebaut werden. Aus dieser hnlich-keit folgert_y1y2_=fx3_x1x2_, f> 0, x3> 0 (1)UnterVerwendunghomogenerKoordinatenist esmglich, dieGleichungmitHilfe der Kameramatrix C auszudrcken:y Cx (2)Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0B.3. Mapping zwischen Farb- und Tiefenwerten 32Abb. 29: Lochkamera, Geometriemity= (y1, y2, 1)Tx = (x1, x2, x3, 1)TC=__fx10 cx100 fx2cx200 0 1 0__Um eine Kamerabewegung auszudrcken, nutzt man nun eine Transformations-matrix _R t, welcheTranslationenundRotationeninsichvereint. Zustzlichmuss die Isometrie durch Multiplikation eines Skalierungsfaktorss ungleich nullzurGleichheitgefhrtwerden,waszurendgltigenBeschreibungunseresMo-dells fhrt.s __y1y21__=__fx10 cx100 fx2cx200 0 1 0____r11r12r13t1r21r22r23t2r31r32r33t3______x1x2x31____(3)Mithilfe der Daten ber die Transformationsmatrix (uere Merkmale) sowie denDatenberdieKameramatrix(innereMerkmale) kanndasModell szenenun-abhngig angewendet werden.Diese Daten werden mit Hilfe der vorgestelltenSoftware RGBDemo ermittelt.B.3. Mapping zwischen Farb- und TiefenwertenUm die Farbwerte korrekt auf die Tiefenwerte abzubilden, wird die reale Entfer-nungzurKinect bentigt.DieInfarotkamerabesitzt jedochnicht dieFhigkeit,Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0B.4. Grenzen und Probleme des Modells 33echteDistanzen(distance) zuermitteln, sondernkannnureinenumskaliertenWert 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 um2. projiziere alle Punkte des 2D-Tiefenbildes in den 3D-Raum, indem die distance-Werte als Skalierungsfaktor s benutzt werden.xdepth= C1depth (s ydepth) (5)3. transformieredie3D-Szeneder Tiefenwerteauf die3D-Szeneder RGB-Werte und projiziere das Ergebnis wieder in ein 2D-Bild, indem man wiederdie distance-Werte als Skalierungsfaktor s benutzt.yrgb=Crgb (_R tDepthToRgb xdepth)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 dieKalibrierung dies ermglicht.B.4. Grenzen und Probleme des ModellsDa die Tiefenbildkamera und die Farbkamera bei gleicher Ausung verschie-dene Sichtbereiche der selben 3D-Szene haben, knnen einige Punkte am RandderBildernichtaufeinanderabgebildetwerden.DadurchhatdieresultierendePunktwolke eine geringere Ausung als die ursprnglichen Bilder.EineweitereSchwchedesModellsist dieAnnahmeeinesLochesalsBlende.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 derPerformanz fhren.Reinhardt/Dach/Backasch/Schlegel/Schrder: 3D-Scan 2.0Literatur 34Literatur[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] PoissonSurfaceReconstruction.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