Dieses Kapitel beschreibt die Verwendung von strukturiertem Licht zur 3D-Rekonstruktion.
Das grundlegende Konzept von strukturiertem Licht beruht auf strukturierter Beleuchtung, einer Beleuchtung mit bekannten Mustern. Die Art und Weise, wie diese Muster nach dem Auftreffen auf eine Oberfläche in der Szene erscheinen, lässt eine weitere Analyse (z.B. Inspektion, siehe Inspektion / Strukturiertes Licht) oder Rekonstruktion der Oberfläche zu.
Für nicht-spiegelnde (lambertsche oder diffus streuende) Oberflächen kann bei Verwendung eines Projektors, welcher Licht gerichtet wie eine 'inverse Kamera' projiziert, eine 3D-Oberfläche rekonstruiert werden. Für jedes projizierte Muster-Bild wird ein Kamerabild der Projektion auf die Oberfläche aufgenommen. Mithilfe der dekodierten Korrespondenzen zwischen den beleuchtenden Projektorkoordinaten und den Kamerakoordinaten, sowie Kalibrierdaten, wird die 3D-Oberfläche rekonstruiert.
Die zur Verwendung von strukturiertem Licht zur 3D-Rekonstruktion notwendigen Schritte werden im Folgenden kurz erläutert.
Im ersten Schritt wird das Modell für strukturiertes Licht mit
(create_structured_light_model=ModelType'3d_reconstruction')
erzeugt oder mit
eingelesen.
Die unterschiedlichen Modellparameter können mit
gesetzt oder mit
abgefragt werden. Die Parameter
'pattern_width', 'pattern_height',
'pattern_orientation' und 'pattern_type' spezifizieren,
mitsamt den Parametern 'min_stripe_width' und
'single_stripe_width' die Vorgaben der zu erzeugenden Muster-Bilder,
welche zur Beleuchtung der Oberfläche benutzt werden.
Schließlich kann der Parameter 'persistence' gesetzt werden,
um die Zwischenergebnisse zu debuggen.
Die Muster-Bilder werden mit erzeugt,
nachdem alle relevanten Parameter gesetzt wurden. Es ist sicherzustellen,
dass die erzeugten Muster-Bilder an den Bedarf des jeweiligen Setups
angepasst sind.
gen_structured_light_pattern
In dieser Phase werden die Muster-Bilder projiziert. Für jedes Muster-Bild wird ein Kamerabild der beleuchteten Oberfläche aufgenommen.
Bei der Kalibrierung wird hierbei das Kalibrierobjekt beleuchtet und
aufgenommen. Der Kalibriervorgang kann im Detail im Beispielprogramm
structured_light_calibration.hdev nachvollzogen werden.
Die dadurch erhaltenen Kalibrierdaten können über den Parameter
'camera_setup_model' mit
gesetzt werden.
set_structured_light_model_param
Die erzeugten Kamerabilder können mit
CameraImages dekodiert werden. Nach Aufruf dieses
Operators werden die Korrespondenzbilder erzeugt und in dem Modell
decode_structured_light_pattern gespeichert.
StructuredLightModel
Die dekodierten Korrespondenzbilder 'correspondence_image'
sowie die anderen Ergebnisse können mit
abgefragt werden. Weitere Details über
die verschiedenen Objekte, die abgefragt werden können, finden sich in der
Referenzdokumentation des Operators.
get_structured_light_object
Die rekonstruierte 3D-Oberfläche wird von
geliefert.
reconstruct_surface_structured_light
Das Modell für strukturiertes Licht bietet diverse Operatoren, die dabei helfen, auf Modellparameter zuzugreifen und diese zu aktualisieren.
Mit kann das Modell für strukturiertes
Licht in einer Datei gespeichert werden. Es ist sicherzustellen, dass zuvor
generierte Muster-Bilder nicht in dieser Datei gespeichert werden. Mit
write_structured_light_model kann die Modell-Datei gelesen
werden.
read_structured_light_model
Des Weiteren ist es möglich, das Modell mit den Operatoren
und
serialize_structured_light_model zu serialisieren und zu
deserialisieren.
deserialize_structured_light_model
Weitere Details zu strukturiertem Licht finden sich im „Solution
Guide Basics“. Eine Liste der Operatoren findet sich in
Inspektion / Strukturiertes Licht.