| Operatoren |
create_sheet_of_light_model — Anlegen eines generischen Modells zur Durchführung von 3D-Messungen nach dem Lichtschnittverfahren.
create_sheet_of_light_model(ProfileRegion : : GenParamName, GenParamValue : SheetOfLightModelID)
Mit Hilfe von create_sheet_of_light_model wird ein generisches Modell zur Durchführung von 3D-Messungen nach dem Lichtschnittverfahren angelegt.
Das Lichtschnittverfahren ermöglicht es, die Oberfläche von lichtstreuenden Körpern zu rekonstruieren. Hierfür werden eine Kamera mit Flächensensor und ein Lichtlinienprojektor (typischerweise ein Laserlinienprojektor) benötigt. Der Linienprojektor und die Kamera haben eine feste Anordnung zueinander. Ihre optischen Achsen bilden einen sogenannten Triangulationswinkel, dessen Wert typischerweise zwischen 30° und 60° ausgewählt wird. Die projizierte Lichtlinie beschreibt eine Ebene im Raum. Diese Ebene schneidet die Oberfläche des zu messenden Körpers, so dass ein Profil der Oberfläche für die Kamera sichtbar wird. Durch relative Bewegung des zu messenden Körpers unter dem Messsystem (bestehend aus Kamera und Linienprojektor in fester Anordnung) können nacheinander mehrere Profile aufgenommen werden, und somit die gesamte Oberfläche des Körpers rekonstruiert werden. Je nach Anforderung kann der zu messende Körper unter dem Messsystem bewegt werden oder auch das Messsystem über dem Körper. Bitte bemerken Sie, dass die Profile annähernd waagerecht orientiert sein müssen, weil sie spaltenweise verarbeitet werden.
Wenn die geometrischen Eigenschaften des Messsystems bekannt sind, ist es möglich kalibrierte dreidimensionale Koordinaten der rekonstruierten Oberfläche zu berechnen. Die Referenzdokumentation zum Operator set_sheet_of_light_param liefert einen Überblick über die hierzu benötigte Information. Sind diese Informationen nicht vorhanden, so wird als Ergebnis der Messung nur ein Disparitätsbild erzeugt, bei welchem die Pixelwerte der subpixel-genauen Position des detektierten Profils entsprechen.
Als Ergebnis liefert der Operator in SheetOfLightModelID ein Handle zurück, das für alle weiteren Lichtschnittverfahren-Operationen verwendet wird, beispielsweise um Modelleinstellungen zu ändern, um Profile zu messen, um Kalibriertransformationen anzuwenden oder um auf die Messergebnisse zuzugreifen.
Erforderliche ikonische Eingabeparameter
Der folgende ikonische Parameter muss gesetzt werden, um Messungen durchführen zu können:
definiert die Region des Profilbildes, die durch den Operator measure_profile_sheet_of_light verarbeitet wird. Diese Region sollte rechteckig sein und kann zum Beispiel mit Hilfe von gen_rectangle1 erzeugt werden. Wenn ProfileRegion nicht rechteckig ist wird ihre kleinste umschließende Region benutzt. ProfileRegion wird nur von dem Operator measure_profile_sheet_of_light berücksichtigt und wird bei der Verarbeitung von Disparitätsbildern ignoriert.
Standardeinstellung des Lichtschnitt-Modells
Die Standardeinstellungen des Lichtschnitt-Modells wurden ausgewählt, um Messungen in einer Grundkonfiguration durchführen zu können. Die folgende Liste gibt einen Überblick über die Standardwerte der Modellparameter (siehe set_sheet_of_light_param für eine detaillierte Beschreibung der Modellparameter):
wird auf 'center_of_gravity' gesetzt
wird auf 100 gesetzt
wird auf 512 gesetzt
wird auf 'first' gesetzt
wird auf 'none' gesetzt
wird auf 'none' gesetzt
Ändern der Modelleinstellung
Wir empfehlen die Modelleinstellungen an die konkrete Messaufgabe anzupassen, um die Qualität der Messung zu erhöhen oder um die Laufzeit zu verkürzen. Eine Änderung der Modelleinstellung ist ebenfalls erforderlich, um kalibrierte Messwerte zu ermitteln.
Mit Hilfe der generischen Parameter GenParamName und GenParamValue ist es möglich die Standardwerte des Lichtschnitt-Modells zu ändern. Diese Änderungen können ebenfalls mit dem Operator set_sheet_of_light_param durchgeführt werden. Bei diesem Operator kann jedoch nur ein einziger Parameter verändert werden, während mit create_sheet_of_light_model mehrere Parameter mit einem Aufruf verändert werden können. set_sheet_of_light_param liefert eine detaillierte Beschreibung der Modellparameter.
Bitte beachten Sie, dass die folgenden Modellparameter nicht mit dem Operator create_sheet_of_light_model, sondern nur mit dem Operator set_sheet_of_light_param gesetzt werden können: 'camera_parameter', 'camera_pose', 'lightplane_pose', und 'movement_pose'.
In jedem Fall können die aktuell eingestellten Modellparameter mit get_sheet_of_light_param ausgelesen werden. Die Namen der Parameter, die für das konkrete Modell gesetzt bzw. abgefragt werden können, liefert query_sheet_of_light_params.
Verwendung des vereinfachten Parameter des Lichtschnitt-Modells
Wenn ein einfacher Aufbau vorliegt oder keine metrische Messung nötig ist, können die Disparitäten mit einem stark vereinfachten Parametersatz in 3D umgewandelt werden.
Durch das Setzen der Kalibrierung mit Hilfe von set_sheet_of_light_param auf den Wert 'offset_scale' werden die Kameraparameter und Posen des Lichschnitt-Modells so gesetzt, dass Pixel als Maßstab für eine Überführung in 3D genutzt werden können. Das erlaubt das erzeugen von 3D Modellen und 3D Bildern aus einem unkalibrierten Aufbau.
Die sechs vereinfachten Parameter, die die Transformation von Disparitäten in 3D steuern sind: 'scale_x', 'scale_y', 'scale_z', 'offset_x', 'offset_y','offset_z'. Die Beschreibung von set_sheet_of_light_param enthält detaillierte Informationen über diese Parameter.
Freigabe des Lichtschnitt-Modells
Da in create_sheet_of_light_model und während der weiteren Arbeit mit dem Modell Speicher reserviert wird, sollte das Modell, wenn es nicht mehr benötigt wird, mit clear_sheet_of_light_model wieder freigegeben werden.
Verwendung des Handles in mehreren Threads
Es ist zu beachten, dass man bei der Verwendung eines Lichtschnitt-Modells 'SheetOfLightModelID' in mehreren Threads sorgfältig umgehen muss. Ein und dasselbe Handle kann nicht gleichzeitig von unterschiedlichen Threads verwendet werden, wenn diese das Handle modifizieren. Somit muss man besonders vorsichtig sein, wenn die Threads solche Operatoren aufrufen, die Änderungen an den Daten des Handles vornehmen. Ein entsprechender Hinweis ist in dem 'Attention' Abschnitt der Operatoren zu finden. Falls man trotzdem dasselbe Handle in Operatoren verwenden möchte, die gleichzeitig in unterschiedlichen Threads das Handle modifizieren, müssen die Threads synchronisiert werden. Damit wird sichergestellt, dass die Threads keinen gleichzeitigen Zugriff auf das Handle haben. Wenn man nicht sicher ist, ob die Verwendung eines Handles thread-safe ist, kann man im 'Attention' Abschnitt des entsprechenden Operatoreintrags im Referenzhandbuch nachsehen, ob es eine Warnung gibt, die auf dieses Problem hinweist. Unterschiedliche Handles hingegen können unabhängig und sicher in unterschiedlichen Threads verwendet werden.
Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.
Region in welcher die zu detektierenden Profile gesucht werden. Wenn diese Region nicht rechteckig ist, wird die kleinste umschließende rechteckige Region verwendet.
Namen der generischen Parameter, die für die Detektion des Profils eingestellt werden können.
Defaultwert: 'min_gray'
Werteliste: 'ambiguity_solving', 'calibration', 'method', 'min_gray', 'num_profiles', 'offset_x', 'offset_y', 'offset_z', 'scale', 'scale_x', 'scale_y', 'scale_z', 'score_type'
Wert der generischen Parameter, die für die Detektion des Profils eingestellt werden können.
Defaultwert: 50
Wertevorschläge: 'default', 'center_of_gravity', 'last', 'first', 'brightest', 'none', 'intensity', 'width', 'offset_scale', 50, 100, 150, 180
Handle für den Zugriff auf das Lichtschnitt-Modell
* Create the rectangular region in which the profiles are measured.
gen_rectangle1 (ProfileRegion, 120, 75, 195, 710)
*
* Create a model in order to measure profiles according to
* the sheet-of-light technique. Simultaneously set some
* parameters for the model.
create_sheet_of_light_model (ProfileRegion, ['min_gray','num_profiles', \
'ambiguity_solving','score_type'], \
[70,290,'first','width'], \
SheetOfLightModelID)
*
* Measure the profile from successive images
for Index := 1 to 290 by 1
read_image (ProfileImage, 'sheet_of_light/connection_rod_'+Index$'.3')
dev_display (ProfileImage)
dev_display (ProfileRegion)
measure_profile_sheet_of_light (ProfileImage, SheetOfLightModelID, [])
endfor
*
* Get the resulting disparity and score images
get_sheet_of_light_result (Disparity, SheetOfLightModelID, 'disparity')
get_sheet_of_light_result (Score, SheetOfLightModelID, 'score')
*
* Close the sheet-of-light handle once the measurement
* has been performed
clear_sheet_of_light_model (SheetOfLightModelID)
create_sheet_of_light_model liefert den Wert 2 (H_MSG_TRUE), wenn die übergebenen Parameter korrekt sind, und das Model angelegt werden kann. Ansonsten wird eine Fehlerbehandlung durchgeführt.
set_sheet_of_light_param, measure_profile_sheet_of_light
clear_sheet_of_light_model, calibrate_sheet_of_light
3D Metrology
| Operatoren |