decode_structured_light_pattern
— Dekodieren der aufgenommenen Kamerabilder bei einem Verfahren mit
strukturiertem Licht.
decode_structured_light_pattern(CameraImages : : StructuredLightModel : )
decode_structured_light_pattern
dekodiert die Kamerabilder
CameraImages
, die zuvor bei einem Verfahren mit strukturiertem Licht
aufgenommen wurden. Die bei der Dekodierung erzeugten Korrespondenzbilder
und andere Zwischenergebnisse
werden im Model StructuredLightModel
gespeichert und können im
Anschluss mit dem Operator get_structured_light_object
abgerufen
werden.
Im Folgenden wird der Dekodiervorgang ausführlich erklärt:
Wie in gen_structured_light_pattern
angemerkt, ist es im ersten
Schritt notwendig zu entscheiden, ob ein Kamerapixel eine Region beobachtet,
die einen weißen Streifen reflektiert oder einen schwarzen Streifen
reflektiert. Um diesen Entscheidungsprozess zu vereinfachen, werden
Normalisierungsbilder benutzt und ein lokal wechselnder Schwellenwert
bestimmt, der
variierende Reflexionsgrade des Objekts und variierende Lichtverhältnisse
verarbeiten kann.
Während des Dekodiervorgangs der aufgenommenen Kamerabilder werden alle
Gray-Code-Bilder mit diesem vorberechneten Schwellenwert verglichen.
Ein Kamerapixel wird als hell klassifiziert, wenn sein Grauwert größer oder
gleich diesem Schwellenwert ist.
Ferner wird während des Dekodiervorgangs die Musterregion bestimmt. Die
Segmentierung wird vom Parameter 'min_gray_difference'
(siehe set_structured_light_model_param
) kontrolliert.
Angenommen, es wurden n Gray-Code-Bilder verarbeitet, erhält man für jedes Pixel einen binären n-bit Code. Aus dieser Folge lassen sich Zeile und Spalte des Monitors bis auf bestimmen.
Besteht das StructuredLightModel
nicht nur aus Gray-Code-Bildern,
sondern ist ein Hybrid-System mit Phasenbildern
(see gen_structured_light_pattern
), so werden im nächsten Schritt
die Phasenbilder dekodiert. Das Ergebnis ist ein subpixelgenaues
Korrespondenzbild zwischen Monitor- und Kamerakoordinaten, das die
Information beinhaltet, welches Kamerapixel die Reflexion welches
Monitorpixels beobachtet.
Wenn der Parameter 'pattern_type' des Modells
StructuredLightModel
auf 'single_stripe' gesetzt wird, wird
im ersten Schritt des Dekodierprozesses entschieden, welcher Einzelstreifen
sein Licht auf einen Kamerapixel wirft. Die Gray-Code-Folge und die Phase
werden dann verwendet, um die Position innerhalb des gefundenen Einzelstreifens
zu verfeinern.
Es kann vorkommen, dass die detektierte Gray-Code-Folge eines Pixels falsch ist. Dies kann zu Werten im Korrespondenzbild führen, die Monitor- Zeilen und -Spalten darstellen, die größer als die Monitor-Breite und -Höhe sind. Um diese Probleme zu vermeiden, ist der letzte Schritt des Dekodiervorgangs die Entfernung dieser Werte aus dem Korrespondenzbild.
Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:
Während der Ausführung dieses Operators muss der Zugriff auf den Wert dieses Parameters synchronisiert werden, wenn er über mehrere Threads hinweg verwendet wird.
CameraImages
(input_object) (multichannel-)image(-array) →
object (byte / uint2)
Aufgenommene Kamerabilder.
StructuredLightModel
(input_control, Zustand wird modifiziert) structured_light_model →
(handle)
Handle des Modells für strukturiertes Licht.
* Create the model create_structured_light_model ('deflectometry', StructuredLightModel) * Set the size of the monitor set_structured_light_model_param (StructuredLightModel, \ 'pattern_width', 1600) set_structured_light_model_param (StructuredLightModel, \ 'pattern_height', 1200) * Set the smallest width of the stripes in the pattern set_structured_light_model_param (StructuredLightModel, \ 'min_stripe_width', 8) * Generate the patterns to project gen_structured_light_pattern (PatternImages, StructuredLightModel) * Set the expected black/white contrast in the region of interest set_structured_light_model_param (StructuredLightModel, \ 'min_gray_difference', 70) * Decode the camera images decode_structured_light_pattern (CameraImages, StructuredLightModel) * Get the computed correspondences and defects get_structured_light_object (CorrespondenceImages, StructuredLightModel, \ 'correspondence_image') set_structured_light_model_param (StructuredLightModel, 'derivative_sigma', \ Sigma) get_structured_light_object (DefectImage, StructuredLightModel, \ 'defect_image')
Der Operator decode_structured_light_pattern
gibt 2 (H_MSG_TRUE) zurück,
sofern alle Parameter korrekt sind. Andernfalls wird eine Fehlerbehandlung
ausgelöst.
create_structured_light_model
,
set_structured_light_model_param
3D Metrology