| Operatoren |
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.
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:
Der Wert dieses Parameters darf nicht über mehrere Threads verwendet werden.Aufgenommene Kamerabilder.
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')
* Clean up
clear_structured_light_model (StructuredLightModel)
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
| Operatoren |