calibrate_sheet_of_lightT_calibrate_sheet_of_lightCalibrateSheetOfLightCalibrateSheetOfLight (Operator)

Name

calibrate_sheet_of_lightT_calibrate_sheet_of_lightCalibrateSheetOfLightCalibrateSheetOfLight — Kalibrieren eines Lichtschnitt-Modells mit einem 3D Kalibrierkörper.

Signatur

calibrate_sheet_of_light( : : SheetOfLightModelID : Error)

Herror T_calibrate_sheet_of_light(const Htuple SheetOfLightModelID, Htuple* Error)

void CalibrateSheetOfLight(const HTuple& SheetOfLightModelID, HTuple* Error)

double HSheetOfLightModel::CalibrateSheetOfLight() const

static void HOperatorSet.CalibrateSheetOfLight(HTuple sheetOfLightModelID, out HTuple error)

double HSheetOfLightModel.CalibrateSheetOfLight()

Beschreibung

calibrate_sheet_of_lightcalibrate_sheet_of_lightCalibrateSheetOfLightCalibrateSheetOfLightCalibrateSheetOfLight kalibriert das Lichtschnitt-Modell SheetOfLightModelIDSheetOfLightModelIDSheetOfLightModelIDSheetOfLightModelIDsheetOfLightModelID mit einem Disparitätsbild eines 3D Kalibrierkörpers und gibt den Rückprojektionsfehler der Optimierung in ErrorErrorErrorErrorerror zurück.

Überblick

Die Kalibrierung eines Lichtschnitt Aufbaus mit calibrate_sheet_of_lightcalibrate_sheet_of_lightCalibrateSheetOfLightCalibrateSheetOfLightCalibrateSheetOfLight 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.

Kalibrierung eines Lichtschnitt Aufbaus

3D Kalibrierkörper

Es wird ein spezieller 3D Kalibrierkörper benötigt. Dieser Kalibrierkörper muss dem mit create_sheet_of_light_calib_objectcreate_sheet_of_light_calib_objectCreateSheetOfLightCalibObjectCreateSheetOfLightCalibObjectCreateSheetOfLightCalibObject 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'"HeightMin""HeightMin""HeightMin""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:

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.

Disparitätsbild eines 3D Kalibrierkörpers

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_objectcreate_sheet_of_light_calib_objectCreateSheetOfLightCalibObjectCreateSheetOfLightCalibObjectCreateSheetOfLightCalibObject). 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_lightcalibrate_sheet_of_lightCalibrateSheetOfLightCalibrateSheetOfLightCalibrateSheetOfLight durchgeführt. Der zurückgegebene Fehler ErrorErrorErrorErrorerror ist der RMS der Distanz der rekonstruierten Punkte zum Kalibrierobjekt in Metern.

Bei mit calibrate_sheet_of_lightcalibrate_sheet_of_lightCalibrateSheetOfLightCalibrateSheetOfLightCalibrateSheetOfLight 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.

Ausführungsinformationen

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.

Parameter

SheetOfLightModelIDSheetOfLightModelIDSheetOfLightModelIDSheetOfLightModelIDsheetOfLightModelID (input_control, Zustand wird modifiziert)  sheet_of_light_model HSheetOfLightModel, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle für den Zugriff auf das Lichtschnitt-Modell.

ErrorErrorErrorErrorerror (output_control)  number HTupleHTupleHtuple (real) (double) (double) (double)

Durchschnittlicher verbleibender Fehler nach der Optimierung.

Beispiel (HDevelop)

* 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)

Ergebnis

calibrate_sheet_of_lightcalibrate_sheet_of_lightCalibrateSheetOfLightCalibrateSheetOfLightCalibrateSheetOfLight liefert den Wert 2 (H_MSG_TRUE), falls die Kalibrierung erfolgreich war. Ansonsten wird eine Fehlerbehandlung durchgeführt.

Vorgänger

create_sheet_of_light_modelcreate_sheet_of_light_modelCreateSheetOfLightModelCreateSheetOfLightModelCreateSheetOfLightModel, set_sheet_of_light_paramset_sheet_of_light_paramSetSheetOfLightParamSetSheetOfLightParamSetSheetOfLightParam, set_profile_sheet_of_lightset_profile_sheet_of_lightSetProfileSheetOfLightSetProfileSheetOfLightSetProfileSheetOfLight, measure_profile_sheet_of_lightmeasure_profile_sheet_of_lightMeasureProfileSheetOfLightMeasureProfileSheetOfLightMeasureProfileSheetOfLight

Nachfolger

set_profile_sheet_of_lightset_profile_sheet_of_lightSetProfileSheetOfLightSetProfileSheetOfLightSetProfileSheetOfLight, apply_sheet_of_light_calibrationapply_sheet_of_light_calibrationApplySheetOfLightCalibrationApplySheetOfLightCalibrationApplySheetOfLightCalibration

Modul

3D Metrology