sim_caltabT_sim_caltabSimCaltabSimCaltab (Operator)

Name

sim_caltabT_sim_caltabSimCaltabSimCaltab — Simulieren eines Bildes mit Kalibrierkörper.

Signatur

sim_caltab( : SimImage : CalPlateDescr, CameraParam, CalPlatePose, GrayBackground, GrayPlate, GrayMarks, ScaleFac : )

Herror T_sim_caltab(Hobject* SimImage, const Htuple CalPlateDescr, const Htuple CameraParam, const Htuple CalPlatePose, const Htuple GrayBackground, const Htuple GrayPlate, const Htuple GrayMarks, const Htuple ScaleFac)

void SimCaltab(HObject* SimImage, const HTuple& CalPlateDescr, const HTuple& CameraParam, const HTuple& CalPlatePose, const HTuple& GrayBackground, const HTuple& GrayPlate, const HTuple& GrayMarks, const HTuple& ScaleFac)

void HImage::SimCaltab(const HString& CalPlateDescr, const HCamPar& CameraParam, const HPose& CalPlatePose, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac)

void HImage::SimCaltab(const char* CalPlateDescr, const HCamPar& CameraParam, const HPose& CalPlatePose, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac)

void HImage::SimCaltab(const wchar_t* CalPlateDescr, const HCamPar& CameraParam, const HPose& CalPlatePose, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac)   (Nur Windows)

HImage HCamPar::SimCaltab(const HString& CalPlateDescr, const HPose& CalPlatePose, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac) const

HImage HCamPar::SimCaltab(const char* CalPlateDescr, const HPose& CalPlatePose, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac) const

HImage HCamPar::SimCaltab(const wchar_t* CalPlateDescr, const HPose& CalPlatePose, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac) const   (Nur Windows)

HImage HPose::SimCaltab(const HString& CalPlateDescr, const HCamPar& CameraParam, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac) const

HImage HPose::SimCaltab(const char* CalPlateDescr, const HCamPar& CameraParam, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac) const

HImage HPose::SimCaltab(const wchar_t* CalPlateDescr, const HCamPar& CameraParam, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac) const   (Nur Windows)

static void HOperatorSet.SimCaltab(out HObject simImage, HTuple calPlateDescr, HTuple cameraParam, HTuple calPlatePose, HTuple grayBackground, HTuple grayPlate, HTuple grayMarks, HTuple scaleFac)

void HImage.SimCaltab(string calPlateDescr, HCamPar cameraParam, HPose calPlatePose, int grayBackground, int grayPlate, int grayMarks, double scaleFac)

HImage HCamPar.SimCaltab(string calPlateDescr, HPose calPlatePose, int grayBackground, int grayPlate, int grayMarks, double scaleFac)

HImage HPose.SimCaltab(string calPlateDescr, HCamPar cameraParam, int grayBackground, int grayPlate, int grayMarks, double scaleFac)

Beschreibung

sim_caltabsim_caltabSimCaltabSimCaltabSimCaltab dient der Simulation eines Kalibrierbildes. Dazu wird die Kalibrierkörperbeschreibung aus der Datei CalPlateDescrCalPlateDescrCalPlateDescrCalPlateDescrcalPlateDescr eingelesen und die darin enthaltende 3D-Beschreibung mit Hilfe der angegebenen Kameraparameter, d.h., den internen Kameraparametern CameraParamCameraParamCameraParamCameraParamcameraParam und externen Kameraparametern CalPlatePoseCalPlatePoseCalPlatePoseCalPlatePosecalPlatePose, auf die Bildebene projiziert (vgl. project_3d_pointproject_3d_pointProject3dPointProject3dPointProject3dPoint). Die 3D-Lage CalPlatePoseCalPlatePoseCalPlatePoseCalPlatePosecalPlatePose wird in der Form erwartet. Dabei steht ccs für das Kamerakoordinatensystem und wcs für das Weltkoordinatensystem (siehe auch Transformationen / Posen und „Solution Guide III-C - 3D Vision“).

In dem simulierten Bild ist nur der Kalibrierkörper abgebildet. Der Bildhintergrund wird mit dem Grauwert GrayBackgroundGrayBackgroundGrayBackgroundGrayBackgroundgrayBackground, der Hintergrund des Kalibrierkörpers mit GrayPlateGrayPlateGrayPlateGrayPlategrayPlate und die Kalibrierkörpermarken werden mit GrayMarksGrayMarksGrayMarksGrayMarksgrayMarks belegt. Der Parameter ScaleFacScaleFacScaleFacScaleFacscaleFac beeinflusst die Anzahl der Stützstellen, mit der die ellipsenförmigen Konturen der Kalibrierkörpermarken approximiert werden (vgl. disp_caltabdisp_caltabDispCaltabDispCaltabDispCaltab). Die Erhöhung der Stützstellenanzahl bewirkt daher eine genauere Bestimmung der Markenbegrenzung, erhöht aber gleichzeitig die Rechenzeit. Für jedes Pixel des simulierten Bildes, das eine solche subpixelgenaue Markenbegrenzung berührt, wird der Grauwert linear zwischen GrayMarksGrayMarksGrayMarksGrayMarksgrayMarks und GrayPlateGrayPlateGrayPlateGrayPlategrayPlate anhand des Verhältnisses Innerhalb/Außerhalb gesetzt.

Mit dem Operator sim_caltabsim_caltabSimCaltabSimCaltabSimCaltab lassen sich synthetische Kalibrierbilder (mit bekannten Kameraparametern!) erzeugen, mit denen man die Güte des Kalibrieralgorithmus (vgl. Kalibrierung) testen kann.

Ausführungsinformationen

Parameter

SimImageSimImageSimImageSimImagesimImage (output_object)  image objectHImageHImageHobject * (byte)

Simuliertes Kalibrierbild.

CalPlateDescrCalPlateDescrCalPlateDescrCalPlateDescrcalPlateDescr (input_control)  filename.read HTupleHTupleHtuple (string) (string) (HString) (char*)

Dateiname der Kalibrierkörperbeschreibungsdatei.

Defaultwert: 'calplate_320mm.cpd' "calplate_320mm.cpd" "calplate_320mm.cpd" "calplate_320mm.cpd" "calplate_320mm.cpd"

Werteliste: 'calplate_10mm.cpd'"calplate_10mm.cpd""calplate_10mm.cpd""calplate_10mm.cpd""calplate_10mm.cpd", 'calplate_1200mm.cpd'"calplate_1200mm.cpd""calplate_1200mm.cpd""calplate_1200mm.cpd""calplate_1200mm.cpd", 'calplate_160mm.cpd'"calplate_160mm.cpd""calplate_160mm.cpd""calplate_160mm.cpd""calplate_160mm.cpd", 'calplate_20mm.cpd'"calplate_20mm.cpd""calplate_20mm.cpd""calplate_20mm.cpd""calplate_20mm.cpd", 'calplate_20mm_dark_on_light.cpd'"calplate_20mm_dark_on_light.cpd""calplate_20mm_dark_on_light.cpd""calplate_20mm_dark_on_light.cpd""calplate_20mm_dark_on_light.cpd", 'calplate_320mm.cpd'"calplate_320mm.cpd""calplate_320mm.cpd""calplate_320mm.cpd""calplate_320mm.cpd", 'calplate_40mm.cpd'"calplate_40mm.cpd""calplate_40mm.cpd""calplate_40mm.cpd""calplate_40mm.cpd", 'calplate_40mm_dark_on_light.cpd'"calplate_40mm_dark_on_light.cpd""calplate_40mm_dark_on_light.cpd""calplate_40mm_dark_on_light.cpd""calplate_40mm_dark_on_light.cpd", 'calplate_5mm.cpd'"calplate_5mm.cpd""calplate_5mm.cpd""calplate_5mm.cpd""calplate_5mm.cpd", 'calplate_640mm.cpd'"calplate_640mm.cpd""calplate_640mm.cpd""calplate_640mm.cpd""calplate_640mm.cpd", 'calplate_80mm.cpd'"calplate_80mm.cpd""calplate_80mm.cpd""calplate_80mm.cpd""calplate_80mm.cpd", 'calplate_80mm_dark_on_light.cpd'"calplate_80mm_dark_on_light.cpd""calplate_80mm_dark_on_light.cpd""calplate_80mm_dark_on_light.cpd""calplate_80mm_dark_on_light.cpd", 'caltab_100mm.descr'"caltab_100mm.descr""caltab_100mm.descr""caltab_100mm.descr""caltab_100mm.descr", 'caltab_10mm.descr'"caltab_10mm.descr""caltab_10mm.descr""caltab_10mm.descr""caltab_10mm.descr", 'caltab_200mm.descr'"caltab_200mm.descr""caltab_200mm.descr""caltab_200mm.descr""caltab_200mm.descr", 'caltab_2500um.descr'"caltab_2500um.descr""caltab_2500um.descr""caltab_2500um.descr""caltab_2500um.descr", 'caltab_30mm.descr'"caltab_30mm.descr""caltab_30mm.descr""caltab_30mm.descr""caltab_30mm.descr", 'caltab_650um.descr'"caltab_650um.descr""caltab_650um.descr""caltab_650um.descr""caltab_650um.descr", 'caltab_6mm.descr'"caltab_6mm.descr""caltab_6mm.descr""caltab_6mm.descr""caltab_6mm.descr", 'caltab_800mm.descr'"caltab_800mm.descr""caltab_800mm.descr""caltab_800mm.descr""caltab_800mm.descr", 'caltab_big.descr'"caltab_big.descr""caltab_big.descr""caltab_big.descr""caltab_big.descr", 'caltab_small.descr'"caltab_small.descr""caltab_small.descr""caltab_small.descr""caltab_small.descr"

Dateiendung: .cpd, .descr

CameraParamCameraParamCameraParamCameraParamcameraParam (input_control)  campar HCamPar, HTupleHTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Interne Kameraparameter.

CalPlatePoseCalPlatePoseCalPlatePoseCalPlatePosecalPlatePose (input_control)  pose HPose, HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

externe Kameraparameter (3D-Lage des Kalibrierkörpers in Kamerakoordinaten).

Parameteranzahl: 7

GrayBackgroundGrayBackgroundGrayBackgroundGrayBackgroundgrayBackground (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Hintergrundgrauwert des Bildes.

Defaultwert: 128

Wertevorschläge: 0, 32, 64, 96, 128, 160

Restriktion: 0 <= GrayBackground <= 255

GrayPlateGrayPlateGrayPlateGrayPlategrayPlate (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Grauwert der Kalibrierkörperplatte.

Defaultwert: 80

Wertevorschläge: 144, 160, 176, 192, 208, 224, 240

Restriktion: 0 <= GrayPlate <= 255

GrayMarksGrayMarksGrayMarksGrayMarksgrayMarks (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Grauwert der Kalibrierkörpermarkierungen.

Defaultwert: 224

Wertevorschläge: 16, 32, 48, 64, 80, 96, 112

Restriktion: 0 <= GrayMarks <= 255

ScaleFacScaleFacScaleFacScaleFacscaleFac (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Skalierungsfaktor zum Herabsetzen der Überabtastung.

Defaultwert: 1.0

Wertevorschläge: 1.0, 0.5, 0.25, 0.125

Empfohlene Schrittweite: 0.05

Restriktion: 1.0 >= ScaleFac

Beispiel (HDevelop)

* Read calibration image.
read_image(Image1, 'calib-01')
* Find calibration pattern.
CameraType := 'area_scan_division'
StartCamPar := [CameraType, Focus, Kappa, Sx, Sy, Cx, Cy, \
                ImageWidth, ImageHeight]
create_calib_data ('calibration_object', 1, 1, CalibDataID)
set_calib_data_cam_param (CalibDataID, 0, [], StartCamPar)
set_calib_data_calib_object (CalibDataID, 0, 'calplate.cpd')
find_caltab(Image1, CalPlate1, 'caltab.descr', 3, 112, 5)
* Find calibration marks and initial pose.
find_calib_object (Image1, CalibDataID, 0, 0, 0, [], [])
* Camera calibration.
calibrate_cameras (CalibDataID, Error)
* Simulate calibration image.
get_calib_data (CalibDataID, 'calib_obj_pose', [0, 0], 'pose', FinalPose)
get_calib_data (CalibDataID, 'camera', 0, 'params', CameraParam)
sim_caltab(Image1Sim, 'calplate.cpd', CameraParam, FinalPose, 128, \
           80, 224, 1)

Ergebnis

Sind die Parameterwerte korrekt, dann liefert sim_caltabsim_caltabSimCaltabSimCaltabSimCaltab den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationCameraCalibration, find_marks_and_posefind_marks_and_poseFindMarksAndPoseFindMarksAndPoseFindMarksAndPose, read_poseread_poseReadPoseReadPoseReadPose, read_cam_parread_cam_parReadCamParReadCamParReadCamPar, hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPoseHomMat3dToPose

Nachfolger

find_caltabfind_caltabFindCaltabFindCaltabFindCaltab

Siehe auch

find_caltabfind_caltabFindCaltabFindCaltabFindCaltab, find_marks_and_posefind_marks_and_poseFindMarksAndPoseFindMarksAndPoseFindMarksAndPose, camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationCameraCalibration, disp_caltabdisp_caltabDispCaltabDispCaltabDispCaltab, create_posecreate_poseCreatePoseCreatePoseCreatePose, hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPoseHomMat3dToPose, project_3d_pointproject_3d_pointProject3dPointProject3dPointProject3dPoint, gen_caltabgen_caltabGenCaltabGenCaltabGenCaltab

Modul

Calibration