| Operatoren |
calibrate_sheet_of_light — Kalibrieren eines Lichtschnitt-Modells mit einem 3D Kalibrierkörper.
calibrate_sheet_of_light( : : SheetOfLightModelID : Error)
calibrate_sheet_of_light kalibriert das Lichtschnitt-Modell SheetOfLightModelID mit einem Disparitätsbild eines 3D Kalibrierkörpers und gibt den Rückprojektionsfehler der Optimierung in Error zurück.
Überblick
Die Kalibrierung eines Lichtschnitt Aufbaus mit calibrate_sheet_of_light ist einfacher als die Kalibrierung mit Standard HALCON Kalibrierplatten, wie es im HDevelop Beispiel calibrate_sheet_of_light_calplate.hdev gezeigt wird. Es wird nur die unkalibrierte Rekonstruktion, das heißt ein Disparitätsbild, eines speziellen 3D Kalibrierkörpers benötigt um das Lichtschnitt-Modell zu kalibrieren.
Im folgenden werden die Schritte, die für die Kalibrierung nötig sind beschrieben.
3D Kalibrierkörper
Es wird ein spezieller 3D Kalibrierkörper benötigt. Dieser Kalibrierkörper muss dem mit create_sheet_of_light_calib_object erzeugten CAD Modell entsprechen. Der 3D Kalibrierkörper besteht aus einer schiefen Ebene, auf der sich ein Pyramidenstumpf befindet. Die dünne Seite wird im folgenden als die Vorderseite bezeichnet. Die dickere Seite als die Rückseite.
Die Dimensionen des Kalibrierkörpers sollten so gewählt sein, dass der Kalibrierkörper das Messvolumen abdeckt. Dabei ist zu beachten, dass nur der Bereich auf dem Kalibrierkörper, der über 'HeightMin' liegt, in die Kalibrierung einfließt.
Das CAD-Modell, welches als DXF Datei geschrieben wurde, dient auch als Beschreibungsdatei für den Kalibrierkörper.
Vorbereitung des Lichtschnitt-Modells
Um ein Lichtschnitt-Modell auf die Kalibrierung vorzubereiten, müssen die folgenden Schritte durchgeführt werden:
Erzeugen des Lichtschnitt-Modells mit create_sheet_of_light_model und Anpassen der Modelleinstellungen an die konkrete Messaufgabe.
Setzen der Startkameraparameter mit set_sheet_of_light_param. Zunächst werden nur projektive Flächenkameras mit Divisionsmodell unterstützt, d.h. Kameras vom Typ 'area_scan_division'.
Setzen der Beschreibungsdatei des Kalibrierkörpers (erzeugt mit create_sheet_of_light_calib_object) mit set_sheet_of_light_param.
Unkalibrierte Rekonstruktion des 3D Kalibrierkörpers
Der 3D Kalibrierkörper muss mit dem (unkalibrierten) Lichtschnitt-Modell (das wie oben vorbereitet wurde) rekonstruiert werden, d.h. es muss ein Disparitätsbild des 3D Kalibrierkörper erzeugt werden.
Für diese Rekonstruktion muss der Kalibrierkörper so orientiert sein, dass entweder seine Vorderseite oder seine Rückseite die Lichtebene als erstes schneiden (das heißt, der Bewegungsvektor muss parallel zur Y Achse des Kalibrierkörpers sein, siehe create_sheet_of_light_calib_object). So weit wie möglich sollte die Region des Disparitätsbildes des Kalibrierkörpers auf den Kalibrierkörper eingeschränkt sein. Die Region des Disparitätsbildes sollte außerdem auf der abgeschnittenen Pyramide keine Löcher aufweisen. Alle vier Seiten der abgeschnittenen Pyramide müssen deutlich sichtbar sein.
Kalibrierung des Lichtschnitt Aufbaus
Die Kalibrierung wird mit calibrate_sheet_of_light durchgeführt. Der zurückgegebene Fehler Error ist der RMS der Distanz der rekonstruierten Punkte zum Kalibrierobjekt in Metern.
Bei mit calibrate_sheet_of_light kalibrierten Lichtschnitt-Modellen ist es nicht möglich die Werte für die kalibrierten Kameraparameter, die Pose der Kamera, die Pose der Lichtebene und den Bewegungsvektor abzufragen.
Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:
Der Wert dieses Parameters darf nicht über mehrere Threads verwendet werden.Handle für den Zugriff auf das Lichtschnitt-Modell.
Durchschnittlicher verbleibender Fehler nach der Optimierung.
* Calibrate a sheet-of-light model with a 3D calibration object
gen_rectangle1 (Rectangle, 300, 0, 800, 1023)
CameraParam := ['area_scan_division', 0.016, 0, 4.65e-6, 4.65e-6, \
640.0, 512.0, 1280, 1024]
create_sheet_of_light_model (Rectangle, 'min_gray', 50, SheetOfLightModelID)
set_sheet_of_light_param (SheetOfLightModelID, 'camera_parameter', \
CameraParam)
set_sheet_of_light_param (SheetOfLightModelID, 'calibration_object', \
'calib_object.dxf')
* Uncalibrated reconstruction of the calibration object
for ProfileIndex := 1 to 1000 by 1
grab_image_async (Image, AcqHandle, -1)
measure_profile_sheet_of_light (Image, SheetOfLightModelID, [])
endfor
* Calibration of the sheet-of-light-model
calibrate_sheet_of_light (SheetOfLightModelID, Error)
* Now get a calibrated reconstruction of the calibration object
get_sheet_of_light_result_object_model_3d (SheetOfLightModelID, \
ObjectModel3D)
calibrate_sheet_of_light liefert den Wert 2 (H_MSG_TRUE), falls die Kalibrierung erfolgreich war. Ansonsten wird eine Fehlerbehandlung durchgeführt.
create_sheet_of_light_model, set_sheet_of_light_param, set_profile_sheet_of_light, measure_profile_sheet_of_light
set_profile_sheet_of_light, apply_sheet_of_light_calibration
3D Metrology
| Operatoren |