Kalibrierung eines 3D-Scanners

  • Typ:Diplomarbeit
  • Datum:2004
  • Autor(en):George Chitishvili

Diese Diplomarbeit ist Teil eines Projekts am Institut für Betriebs- und Dialogsysteme an der Fakultät für Informatik der Universität Karlsruhe.

Das Ziel des Projekts ist der Aufbau eines 3D-Scanners mit Hilfe eines Projektors und einer Digitalkamera. Dabei werden im Vergleich zu existierenden 3D-Scannern kostengünstigere Geräte verwendet. In unserem Fall ist es ein Epson EMP-7350 Projektor, der die Bilder in einer Auflösung von 1024x768 Pixeln projizieren kann, und eine Fuji Finepix S2 Pro Spiegelreflex-Digitalkamera, die 6,17 Millionen Pixel pro Aufnahme im TIFF-Format aufzeichnen kann.

Beim Scan-Prozess werden bestimmte Muster mit dem Projektor auf das zu scannende Objekt projiziert und mit der Kamera aufgenommen. Aus den aufgenommenen Bildinformationen werden Punkte auf der Oberfläche des Objekts bestimmt und aus diesen ein Dreiecksnetz gebildet.

 



Schematische Darstellung des 3D-Scanners

 

 


Das aufgenommene Objekt in weißem Licht und mit projiziertem Muster

 

Bei der Abbildung von Punkten aus dem dreidimensionalen Raum in die zweidimensionale Bildebene kommt es zu mehreren Transformationen zwischen verschiedenen Koordinatensystemen sowie zu einem generellen Informationsverlust. Um Rückschlüsse vom aufgenommenen Bild auf das Urbild machen zu können, benötigt man eine genauere Kenntnis darüber, wie das Bild entstanden ist. Dazu dient die Bestimmung der internen und externen Parameter der Kamera bzw. des Projektors über die Kalibrierung. Ziel dieser Diplomarbeit ist eine theoretische Beschreibung und praktische Implementierung des Kalibrierungsprozesses.

Eine Implementierung der Kalibrierung soll folgende Forderungen erfüllen:

  • Autonom: Es sollen keine Parameter von Hand eingegeben werden.
  • Exakt: Die Ergebnisse (Abbildungsmatrizen und entsprechend die internen und externen Parameter) sollen gewisse Schranken nicht überschreiten.
  • Effizient: Die Kalibrierung sollen innerhalb eines akzeptabel kleinen Zeitraums erfolgen.

Um die Kamera und den Projektor zu kalibrieren, wird ein so genanntes Kalibrierobjekt verwendet. Dies ist ein ebenes Brett, auf dem spezielle Markierungen aufgebracht sind. Auf dieses Kalibrierobjekt wird dann ein bestimmtes Muster (z. B. ein Schachbrettmuster) projiziert und ein Bild mit der Digitalkamera aufgenommen. Danach wird das Kalibrierobjekt in eine andere Position gedreht und es werden weitere Aufnahmen gemacht.

 


Kalibrierobjekt und darauf projiziertes Muster

 

Aus den aufgenommenen Bildern werden die Koordinaten der Eckpunkte berechnet und anschließend den Punkten auf dem Muster des Projektors zugeordnet. Wenn es genug Punktzuordnungen gibt, ist es möglich, die Abbildungsmatrizen von Kamera und Projektor zu berechnen. Dies geschieht schrittweise:

  1. Projektive Kalibrierung: Berechnung der Fundamentalmatrix F und der kanonischen Zerlegung von F. Die Abbildungsmatrizen sind bis auf eine projektive Koordinatentransformation bestimmt.
  2. Affine Kalibrierung: Berechnung der Fernebene. Für die affine Kalibrierung werden die festen Marker auf dem Kalibrierobjekt benötigt.
  3. Euklidische Kalibrierung : Berechnung des Kreiskegelschnittes aus dem sich dann die internen und externen Parameter der Abbildungen bestimmen lassen.

Das Programm zur Diplomarbeit, das die Kalibrierung für Kamera und Projektor durchführt, wurde in der Programmiersprache Java implementiert. Dadurch ist die Plattformunabhängigkeit der Anwendung gewährleistet. Für die Implementierung wurden außer den Standardbibliotheken der Sprache Java noch folgende Klassenbibliotheken verwendet:

  • JAMA (Java Matrix Package): Die in diesem Paket beinhaltete Klasse Jama.Matrix stellt neben fundamentalen Operationen der linearen Algebra wie Addition, Multiplikation, Berechnung der Determinante, Inversen und verschiedenen Normen einer Matrix auch folgende Zerlegungen, die im Programm mehrmals verwendet werden, zur Verfügung: Hauptachsentransformation, Singulärwertzerlegung, Cholesky-Zerlegung, LU-Zerlegung und QR-Zerlegung.
  • Java 3D API: Das Paket javax.vecmath, das zu Java 3D gehört, stellt zusätzliche Klassen und Methoden, die verschiedene Operationen der linearen Algebra und der analytischen Geometrie implementieren, zur Verfügung.
  • FPL Nonlinear Optimization Java Package: Dieses Paket beinhaltet die Java-Implementierung der in MINPACK beschriebenen nichtlinearen Minimierungsalgorithmen wie der Levenberg-Marquardt-Algorithmus.