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
können die Parameter in seltenen Fällen ein unrealistisches Bild des Setups
vermitteln, was jedoch die Messgenauigkeit der Kalibrierung nicht negativ
beeinflusst.
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.
SheetOfLightModelID
(input_control, Zustand wird modifiziert) sheet_of_light_model →
(handle)
Handle für den Zugriff auf das Lichtschnitt-Modell.
Error
(output_control) number →
(real)
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