Structured Light
List of Operators ↓
This chapter describes operators for using structured light.
Concept of Structured Light
The basic concept behind structured light is the display of known
patterns onto a display or projector. The way those patterns appear in the
scene after hitting surfaces helps to further analyze the surfaces.
To use structured light, a model must first be created using
create_structured_light_modelcreate_structured_light_modelCreateStructuredLightModelCreateStructuredLightModelCreateStructuredLightModel. The model type is specified in
ModelTypeModelTypeModelTypeModelTypemodelType. Currently, only the model type 'deflectometry'"deflectometry""deflectometry""deflectometry""deflectometry"
is supported. Deflectometry is the procedure of analyzing the reflections
of known patterns from specular or semi-specular surfaces. Currently, only
deflectometry to detect defects on the specular surfaces is supported. In
such a setup, for every pattern image projected on the screen, a camera
image of the reflection is acquired. Deformations of the pattern in the
camera image imply a defect on the specular surface.
In the following, the steps that are required to perform defect detection
on specular surfaces are described briefly.
- Create a structured light model:
-
In the first step, a structured light model is created with
or read with
- Set the model parameters:
-
The different structured light model parameters can then be set with
set_structured_light_model_paramset_structured_light_model_paramSetStructuredLightModelParamSetStructuredLightModelParamSetStructuredLightModelParam or queried with
get_structured_light_model_paramget_structured_light_model_paramGetStructuredLightModelParamGetStructuredLightModelParamGetStructuredLightModelParam. The pattern parameters
'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", and 'pattern_type'"pattern_type""pattern_type""pattern_type""pattern_type" specify along
with the stripe parameter 'min_stripe_width'"min_stripe_width""min_stripe_width""min_stripe_width""min_stripe_width" the specifications
of the pattern images to be generated and projected onto the specular
surface. Segmentation parameters can also be set. Finally, the
'persistence'"persistence""persistence""persistence""persistence" parameter can be enabled to debug intermediate
results.
- Generate the pattern images:
-
The pattern images are to be generated with
gen_structured_light_patterngen_structured_light_patternGenStructuredLightPatternGenStructuredLightPatternGenStructuredLightPattern after setting all relevant parameters.
Please ensure that the output images are as needed in the particular setup.
- Project the patterns and acquire the camera images:
-
At this stage, the pattern images are shown on the display and reflected
by the specular surface. The respective reflected image is acquired by the
camera for each pattern image.
- Decode the acquired images:
-
The acquired CameraImagesCameraImagesCameraImagesCameraImagescameraImages can be decoded with
decode_structured_light_patterndecode_structured_light_patternDecodeStructuredLightPatternDecodeStructuredLightPatternDecodeStructuredLightPattern. Upon calling this operator, the
correspondence images are created and stored in the model
StructuredLightModelStructuredLightModelStructuredLightModelStructuredLightModelstructuredLightModel.
- Get the results:
-
Now the decoded 'correspondence_image'"correspondence_image""correspondence_image""correspondence_image""correspondence_image", as well as other results
can be queried with get_structured_light_objectget_structured_light_objectGetStructuredLightObjectGetStructuredLightObjectGetStructuredLightObject. The
'defect_image'"defect_image""defect_image""defect_image""defect_image" can be generated and queried with
get_structured_light_objectget_structured_light_objectGetStructuredLightObjectGetStructuredLightObjectGetStructuredLightObject. For more details of the different
objects that can be queried, please refer to the operator's documentation.
- Clear the structured light model:
-
Finally, the structured light model should be cleared and all allocated
memory freed by calling clear_structured_light_modelclear_structured_light_modelClearStructuredLightModelClearStructuredLightModelClearStructuredLightModel.
Further operators
The structured light model offers various other operators that help access
and update the various parameters of the model.
The operator write_structured_light_modelwrite_structured_light_modelWriteStructuredLightModelWriteStructuredLightModelWriteStructuredLightModel enables writing the
structured light model to a file. Please note that previously generated
pattern images are not written in this file. A structured light model file
can be read using read_structured_light_modelread_structured_light_modelReadStructuredLightModelReadStructuredLightModelReadStructuredLightModel.
Furthermore, it is possible to serialize and deserialize the structured
light model using serialize_structured_light_modelserialize_structured_light_modelSerializeStructuredLightModelSerializeStructuredLightModelSerializeStructuredLightModel and
deserialize_structured_light_modeldeserialize_structured_light_modelDeserializeStructuredLightModelDeserializeStructuredLightModelDeserializeStructuredLightModel.
Further Information
See also the “Solution Guide Basics” for further details.
List of Operators
- clear_structured_light_modelClearStructuredLightModelClearStructuredLightModelclear_structured_light_model
- Clear a structured light model and free the allocated memory.
- create_structured_light_modelCreateStructuredLightModelCreateStructuredLightModelcreate_structured_light_model
- Create a structured light model.
- decode_structured_light_patternDecodeStructuredLightPatternDecodeStructuredLightPatterndecode_structured_light_pattern
- Decode the camera images acquired with a structured light setup.
- deserialize_structured_light_modelDeserializeStructuredLightModelDeserializeStructuredLightModeldeserialize_structured_light_model
- Deserialize a structured light model.
- gen_structured_light_patternGenStructuredLightPatternGenStructuredLightPatterngen_structured_light_pattern
- Generate the pattern images to be displayed in a structured light setup.
- get_structured_light_model_paramGetStructuredLightModelParamGetStructuredLightModelParamget_structured_light_model_param
- Query parameters of a structured light model.
- get_structured_light_objectGetStructuredLightObjectGetStructuredLightObjectget_structured_light_object
- Get (intermediate) iconic results of a structured light model.
- read_structured_light_modelReadStructuredLightModelReadStructuredLightModelread_structured_light_model
- Read a structured light model from a file.
- serialize_structured_light_modelSerializeStructuredLightModelSerializeStructuredLightModelserialize_structured_light_model
- Serialize a structured light model.
- set_structured_light_model_paramSetStructuredLightModelParamSetStructuredLightModelParamset_structured_light_model_param
- Set parameters of a structured light model.
- write_structured_light_modelWriteStructuredLightModelWriteStructuredLightModelwrite_structured_light_model
- Write a structured light model to a file.