sim_caltabT_sim_caltabSimCaltabSimCaltabsim_caltab (Operator)

Name

sim_caltabT_sim_caltabSimCaltabSimCaltabsim_caltab — 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)

def sim_caltab(cal_plate_descr: str, camera_param: Sequence[Union[int, float, str]], cal_plate_pose: Sequence[Union[int, float]], gray_background: int, gray_plate: int, gray_marks: int, scale_fac: float) -> HObject

Beschreibung

sim_caltabsim_caltabSimCaltabSimCaltabsim_caltab dient der Simulation eines Kalibrierbildes. Dazu wird die Kalibrierkörperbeschreibung aus der Datei CalPlateDescrCalPlateDescrCalPlateDescrcalPlateDescrcal_plate_descr eingelesen und die darin enthaltende 3D-Beschreibung mit Hilfe der angegebenen Kameraparameter, d.h., den internen Kameraparametern CameraParamCameraParamCameraParamcameraParamcamera_param und externen Kameraparametern CalPlatePoseCalPlatePoseCalPlatePosecalPlatePosecal_plate_pose, auf die Bildebene projiziert (vgl. project_3d_pointproject_3d_pointProject3dPointProject3dPointproject_3d_point). Die 3D-Lage CalPlatePoseCalPlatePoseCalPlatePosecalPlatePosecal_plate_pose 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 GrayBackgroundGrayBackgroundGrayBackgroundgrayBackgroundgray_background, der Hintergrund des Kalibrierkörpers mit GrayPlateGrayPlateGrayPlategrayPlategray_plate und die Kalibrierkörpermarken werden mit GrayMarksGrayMarksGrayMarksgrayMarksgray_marks belegt. Der Parameter ScaleFacScaleFacScaleFacscaleFacscale_fac beeinflusst die Anzahl der Stützstellen, mit der die ellipsenförmigen Konturen der Kalibrierkörpermarken approximiert werden (vgl. disp_caltabdisp_caltabDispCaltabDispCaltabdisp_caltab). 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 GrayMarksGrayMarksGrayMarksgrayMarksgray_marks und GrayPlateGrayPlateGrayPlategrayPlategray_plate anhand des Verhältnisses Innerhalb/Außerhalb gesetzt.

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

Ausführungsinformationen

Parameter

SimImageSimImageSimImagesimImagesim_image (output_object)  image objectHImageHObjectHObjectHobject * (byte)

Simuliertes Kalibrierbild.

CalPlateDescrCalPlateDescrCalPlateDescrcalPlateDescrcal_plate_descr (input_control)  filename.read HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Dateiname der Kalibrierkörperbeschreibungsdatei.

Default: '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

CameraParamCameraParamCameraParamcameraParamcamera_param (input_control)  campar HCamPar, HTupleSequence[Union[int, float, str]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Interne Kameraparameter.

CalPlatePoseCalPlatePoseCalPlatePosecalPlatePosecal_plate_pose (input_control)  pose HPose, HTupleSequence[Union[int, float]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

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

Parameteranzahl: 7

GrayBackgroundGrayBackgroundGrayBackgroundgrayBackgroundgray_background (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Hintergrundgrauwert des Bildes.

Default: 128

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

Restriktion: 0 <= GrayBackground <= 255

GrayPlateGrayPlateGrayPlategrayPlategray_plate (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Grauwert der Kalibrierkörperplatte.

Default: 80

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

Restriktion: 0 <= GrayPlate <= 255

GrayMarksGrayMarksGrayMarksgrayMarksgray_marks (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Grauwert der Kalibrierkörpermarkierungen.

Default: 224

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

Restriktion: 0 <= GrayMarks <= 255

ScaleFacScaleFacScaleFacscaleFacscale_fac (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Skalierungsfaktor zum Herabsetzen der Überabtastung.

Default: 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_caltabSimCaltabSimCaltabsim_caltab den Wert 2 ( H_MSG_TRUE) . Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationcamera_calibration, find_marks_and_posefind_marks_and_poseFindMarksAndPoseFindMarksAndPosefind_marks_and_pose, read_poseread_poseReadPoseReadPoseread_pose, read_cam_parread_cam_parReadCamParReadCamParread_cam_par, hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPosehom_mat3d_to_pose

Nachfolger

find_caltabfind_caltabFindCaltabFindCaltabfind_caltab

Siehe auch

find_caltabfind_caltabFindCaltabFindCaltabfind_caltab, find_marks_and_posefind_marks_and_poseFindMarksAndPoseFindMarksAndPosefind_marks_and_pose, camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationcamera_calibration, disp_caltabdisp_caltabDispCaltabDispCaltabdisp_caltab, create_posecreate_poseCreatePoseCreatePosecreate_pose, hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPosehom_mat3d_to_pose, project_3d_pointproject_3d_pointProject3dPointProject3dPointproject_3d_point, gen_caltabgen_caltabGenCaltabGenCaltabgen_caltab

Modul

Calibration