Strukturiertes Licht

Liste der Abschnitte ↓

Dieses Kapitel beschreibt die Verwendung von strukturiertem Licht zur 3D-Rekonstruktion.

Konzept von strukturiertem Licht

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.

Erzeugen eines Modells für strukturiertes Licht:

Im ersten Schritt wird das Modell für strukturiertes Licht mit

erzeugt oder mit

eingelesen.

Setzen der Modellparameter:

Die unterschiedlichen Modellparameter können mit

gesetzt oder mit

abgefragt werden. Die Parameter 'pattern_width'"pattern_width""pattern_width""pattern_width""pattern_width", 'pattern_height'"pattern_height""pattern_height""pattern_height""pattern_height", 'pattern_orientation'"pattern_orientation""pattern_orientation""pattern_orientation""pattern_orientation" und 'pattern_type'"pattern_type""pattern_type""pattern_type""pattern_type" spezifizieren, mitsamt den Parametern 'min_stripe_width'"min_stripe_width""min_stripe_width""min_stripe_width""min_stripe_width" und 'single_stripe_width'"single_stripe_width""single_stripe_width""single_stripe_width""single_stripe_width" die Vorgaben der zu erzeugenden Muster-Bilder, welche zur Beleuchtung der Oberfläche benutzt werden. Schließlich kann der Parameter 'persistence'"persistence""persistence""persistence""persistence" gesetzt werden, um die Zwischenergebnisse zu debuggen.

Erzeugen der Muster-Bilder:

Die Muster-Bilder werden mit gen_structured_light_patterngen_structured_light_patternGenStructuredLightPatternGenStructuredLightPatterngen_structured_light_pattern erzeugt, nachdem alle relevanten Parameter gesetzt wurden. Es ist sicherzustellen, dass die erzeugten Muster-Bilder an den Bedarf des jeweiligen Setups angepasst sind.

Beleuchtung der Oberfläche mit Mustern und Aufnahme der Kamerabilder:

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'"camera_setup_model""camera_setup_model""camera_setup_model""camera_setup_model" mit set_structured_light_model_paramset_structured_light_model_paramSetStructuredLightModelParamSetStructuredLightModelParamset_structured_light_model_param gesetzt werden.

Dekodieren der aufgenommenen Bilder:

Die erzeugten Kamerabilder CameraImagesCameraImagesCameraImagescameraImagescamera_images können mit decode_structured_light_patterndecode_structured_light_patternDecodeStructuredLightPatternDecodeStructuredLightPatterndecode_structured_light_pattern dekodiert werden. Nach Aufruf dieses Operators werden die Korrespondenzbilder erzeugt und in dem Modell StructuredLightModelStructuredLightModelStructuredLightModelstructuredLightModelstructured_light_model gespeichert.

Abrufen der Ergebnisse:

Die dekodierten Korrespondenzbilder 'correspondence_image'"correspondence_image""correspondence_image""correspondence_image""correspondence_image" sowie die anderen Ergebnisse können mit get_structured_light_objectget_structured_light_objectGetStructuredLightObjectGetStructuredLightObjectget_structured_light_object abgefragt werden. Weitere Details über die verschiedenen Objekte, die abgefragt werden können, finden sich in der Referenzdokumentation des Operators.

Durchführen der Rekonstruktion:

Die rekonstruierte 3D-Oberfläche wird von reconstruct_surface_structured_lightreconstruct_surface_structured_lightReconstructSurfaceStructuredLightReconstructSurfaceStructuredLightreconstruct_surface_structured_light geliefert.

Weitere Operatoren

Das Modell für strukturiertes Licht bietet diverse Operatoren, die dabei helfen, auf Modellparameter zuzugreifen und diese zu aktualisieren.

Mit write_structured_light_modelwrite_structured_light_modelWriteStructuredLightModelWriteStructuredLightModelwrite_structured_light_model 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 read_structured_light_modelread_structured_light_modelReadStructuredLightModelReadStructuredLightModelread_structured_light_model kann die Modell-Datei gelesen werden.

Des Weiteren ist es möglich, das Modell mit den Operatoren serialize_structured_light_modelserialize_structured_light_modelSerializeStructuredLightModelSerializeStructuredLightModelserialize_structured_light_model und deserialize_structured_light_modeldeserialize_structured_light_modelDeserializeStructuredLightModelDeserializeStructuredLightModeldeserialize_structured_light_model zu serialisieren und zu deserialisieren.

Weiterführende Informationen

Weitere Details zu strukturiertem Licht finden sich im „Solution Guide Basics“. Eine Liste der Operatoren findet sich in Inspektion / Strukturiertes Licht.


Liste der Abschnitte