Name
sim_caltabT_sim_caltabSimCaltabsim_caltabSimCaltabSimCaltab — Simulieren eines Bildes mit Kalibrierkörper.
Herror sim_caltab(Hobject* SimImage, const HTuple& CalTabDescrFile, const HTuple& CameraParam, const HTuple& CaltabPose, const HTuple& GrayBackground, const HTuple& GrayCaltab, const HTuple& GrayMarks, const HTuple& ScaleFac)
HImage HImage::SimCaltab(const HTuple& CalTabDescrFile, const HTuple& CameraParam, const HTuple& CaltabPose, const HTuple& GrayBackground, const HTuple& GrayCaltab, const HTuple& GrayMarks, const HTuple& ScaleFac)
void SimCaltab(HObject* SimImage, const HTuple& CalTabDescrFile, const HTuple& CameraParam, const HTuple& CaltabPose, const HTuple& GrayBackground, const HTuple& GrayCaltab, const HTuple& GrayMarks, const HTuple& ScaleFac)
void HImage::SimCaltab(const HString& CalTabDescrFile, const HTuple& CameraParam, const HPose& CaltabPose, Hlong GrayBackground, Hlong GrayCaltab, Hlong GrayMarks, double ScaleFac)
void HImage::SimCaltab(const char* CalTabDescrFile, const HTuple& CameraParam, const HPose& CaltabPose, Hlong GrayBackground, Hlong GrayCaltab, Hlong GrayMarks, double ScaleFac)
void HOperatorSetX.SimCaltab(
[out] IHUntypedObjectX** SimImage, [in] VARIANT CalTabDescrFile, [in] VARIANT CameraParam, [in] VARIANT CaltabPose, [in] VARIANT GrayBackground, [in] VARIANT GrayCaltab, [in] VARIANT GrayMarks, [in] VARIANT ScaleFac)
void HImageX.SimCaltab(
[in] BSTR CalTabDescrFile, [in] VARIANT CameraParam, [in] VARIANT CaltabPose, [in] Hlong GrayBackground, [in] Hlong GrayCaltab, [in] Hlong GrayMarks, [in] double ScaleFac)
static void HOperatorSet.SimCaltab(out HObject simImage, HTuple calTabDescrFile, HTuple cameraParam, HTuple caltabPose, HTuple grayBackground, HTuple grayCaltab, HTuple grayMarks, HTuple scaleFac)
void HImage.SimCaltab(string calTabDescrFile, HTuple cameraParam, HPose caltabPose, int grayBackground, int grayCaltab, int grayMarks, double scaleFac)
sim_caltabsim_caltabSimCaltabsim_caltabSimCaltabSimCaltab dient der Simulation eines Kalibrierungsbildes.
Dazu wird die Kalibrierkörperbeschreibung aus der Datei
CalTabDescrFileCalTabDescrFileCalTabDescrFileCalTabDescrFileCalTabDescrFilecalTabDescrFile eingelesen und die darin enthaltende
3D-Beschreibung mit Hilfe der angegebenen Kameraparameter (interne
Kameraparameter CameraParamCameraParamCameraParamCameraParamCameraParamcameraParam, externe Kameraparameter
CaltabPoseCaltabPoseCaltabPoseCaltabPoseCaltabPosecaltabPose) auf die Bildebene projiziert (vgl.
project_3d_pointproject_3d_pointProject3dPointproject_3d_pointProject3dPointProject3dPoint).
In dem simulierten Bild ist nur der Kalibrierkörper abgebildet. Der
Bildhintergrund wird mit dem Grauwert GrayBackgroundGrayBackgroundGrayBackgroundGrayBackgroundGrayBackgroundgrayBackground, der
Hintergrund des Kalibrierkörpers mit GrayCaltabGrayCaltabGrayCaltabGrayCaltabGrayCaltabgrayCaltab und die
Kalibrierkörpermarken werden mit GrayMarksGrayMarksGrayMarksGrayMarksGrayMarksgrayMarks belegt. Der
Parameter ScaleFacScaleFacScaleFacScaleFacScaleFacscaleFac beeinflusst die Anzahl der Stützstellen,
mit der die ellipsenförmigen Konturen der Kalibrierkörpermarken
approximiert werden (vgl. disp_caltabdisp_caltabDispCaltabdisp_caltabDispCaltabDispCaltab). 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
GrayMarksGrayMarksGrayMarksGrayMarksGrayMarksgrayMarks und GrayCaltabGrayCaltabGrayCaltabGrayCaltabGrayCaltabgrayCaltab anhand des Verhältnisses
Innerhalb/Außerhalb gesetzt.
Mit dem Operator sim_caltabsim_caltabSimCaltabsim_caltabSimCaltabSimCaltab lassen sich synthetische
Kalibrierbilder (mit bekannten Kameraparametern!) erzeugen, mit
denen man die Güte des Kalibrieralgorithmus (vgl.
calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras oder camera_calibrationcamera_calibrationCameraCalibrationcamera_calibrationCameraCalibrationCameraCalibration) testen kann.
- Multithreading-Typ: mutually exclusive (läuft parallel zu anderen nicht-exklusiven Operatoren mit Ausnahme von sich selbst).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Simuliertes Kalibrierbild.
Dateiname der Kalibrierkörperbeschreibungsdatei.
Defaultwert:
'caltab.descr'
"caltab.descr"
"caltab.descr"
"caltab.descr"
"caltab.descr"
"caltab.descr"
Werteliste: 'caltab.descr'"caltab.descr""caltab.descr""caltab.descr""caltab.descr""caltab.descr", 'caltab_100mm.descr'"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_10mm.descr", 'caltab_200mm.descr'"caltab_200mm.descr""caltab_200mm.descr""caltab_200mm.descr""caltab_200mm.descr""caltab_200mm.descr", 'caltab_30mm.descr'"caltab_30mm.descr""caltab_30mm.descr""caltab_30mm.descr""caltab_30mm.descr""caltab_30mm.descr"
Dateiendung: .descr
Interne Kameraparameter.
Parameteranzahl: CameraParam == 8 || CameraParam == 11 || CameraParam == 12
externe Kameraparameter (3D-Lage des Kalibrierkörpers in
Kamerakoordinaten).
Parameteranzahl: 7
Hintergrundgrauwert des Bildes.
Defaultwert: 128
Wertevorschläge: 0, 32, 64, 96, 128, 160
Restriktion: 0 <= GrayBackground <= 255
Grauwert der Kalibrierkörperplatte.
Defaultwert: 224
Wertevorschläge: 144, 160, 176, 192, 208, 224, 240
Restriktion: 0 <= GrayCaltab <= 255
Grauwert der Kalibrierkörpermarkierungen.
Defaultwert: 80
Wertevorschläge: 16, 32, 48, 64, 80, 96, 112
Restriktion: 0 <= GrayMarks <= 255
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
* read calibration image
read_image(Image1, 'calib-01')
* find calibration pattern
find_caltab(Image1, Caltab1, 'caltab.descr', 3, 112, 5)
* find calibration marks and initial pose
StartCamPar := [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
find_marks_and_pose(Image1, Caltab1, 'caltab.descr', StartCamPar, \
128 ,10, 18, 0.9, 15.0, 100.0, RCoord1, CCoord1, \
StartPose1)
* read 3D positions of calibration marks
caltab_points('caltab.descr', NX, NY, NZ)
* camera calibration
camera_calibration(NX, NY, NZ, RCoord1, CCoord1, StartCamPar, \
StartPose1, 11, CameraParam, FinalPose, Errors)
* simulate calibration image
sim_caltab(Image1Sim, 'caltab.descr', CameraParam, FinalPose, 128, \
224, 80, 1)
* read calibration image
read_image(Image1, 'calib-01')
* find calibration pattern
find_caltab(Image1, Caltab1, 'caltab.descr', 3, 112, 5)
* find calibration marks and initial pose
StartCamPar := [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
find_marks_and_pose(Image1, Caltab1, 'caltab.descr', StartCamPar, \
128 ,10, 18, 0.9, 15.0, 100.0, RCoord1, CCoord1, \
StartPose1)
* read 3D positions of calibration marks
caltab_points('caltab.descr', NX, NY, NZ)
* camera calibration
camera_calibration(NX, NY, NZ, RCoord1, CCoord1, StartCamPar, \
StartPose1, 11, CameraParam, FinalPose, Errors)
* simulate calibration image
sim_caltab(Image1Sim, 'caltab.descr', CameraParam, FinalPose, 128, \
224, 80, 1)
* read calibration image
read_image(Image1, 'calib-01')
* find calibration pattern
find_caltab(Image1, Caltab1, 'caltab.descr', 3, 112, 5)
* find calibration marks and initial pose
StartCamPar := [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
find_marks_and_pose(Image1, Caltab1, 'caltab.descr', StartCamPar, \
128 ,10, 18, 0.9, 15.0, 100.0, RCoord1, CCoord1, \
StartPose1)
* read 3D positions of calibration marks
caltab_points('caltab.descr', NX, NY, NZ)
* camera calibration
camera_calibration(NX, NY, NZ, RCoord1, CCoord1, StartCamPar, \
StartPose1, 11, CameraParam, FinalPose, Errors)
* simulate calibration image
sim_caltab(Image1Sim, 'caltab.descr', CameraParam, FinalPose, 128, \
224, 80, 1)
HTuple StartCamPar, NX, NY, NZ;
HTuple RCoord1, CCoord1, StartPose1;
HTuple StartPose, RCoords, CCoords;
HTuple CameraParam, FinalPose, Errors;
// read calibration image
HImage Image1("calib-01");
// find calibration pattern
HRegion Caltab1 = Image1.FindCaltab("caltab.descr", 3, 112, 5);
// find calibration marks and initial pose
StartCamPar[7] = 576; // ImageHeight
StartCamPar[6] = 768; // ImageWidth
StartCamPar[5] = 288; // Cy
StartCamPar[4] = 384; // Cx
StartCamPar[3] = 0.000011; // Sy
StartCamPar[2] = 0.000011; // Sx
StartCamPar[1] = 0.0; // Kappa
StartCamPar[0] = 0.008; // Focus
RCoord1 = Image1.FindMarksAndPose(Caltab1, "caltab.descr", StartCamPar,
128, 10, &CCoord1, &StartPose);
// read 3D positions of calibration marks
caltab_points("caltab.descr", &NX, &NY, &NZ);
// camera calibration
camera_calibration(NX, NY, NZ, RCoord1, CCoord1, StartCamPar, StartPose,
11, &CameraParam, &FinalPose, &Errors);
HImage Image1Sim = HImage::SimCaltab("caltab.descr", CameraParam, FinalPose,
128, 224, 80, 1.0);
* read calibration image
read_image(Image1, 'calib-01')
* find calibration pattern
find_caltab(Image1, Caltab1, 'caltab.descr', 3, 112, 5)
* find calibration marks and initial pose
StartCamPar := [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
find_marks_and_pose(Image1, Caltab1, 'caltab.descr', StartCamPar, \
128 ,10, 18, 0.9, 15.0, 100.0, RCoord1, CCoord1, \
StartPose1)
* read 3D positions of calibration marks
caltab_points('caltab.descr', NX, NY, NZ)
* camera calibration
camera_calibration(NX, NY, NZ, RCoord1, CCoord1, StartCamPar, \
StartPose1, 11, CameraParam, FinalPose, Errors)
* simulate calibration image
sim_caltab(Image1Sim, 'caltab.descr', CameraParam, FinalPose, 128, \
224, 80, 1)
* read calibration image
read_image(Image1, 'calib-01')
* find calibration pattern
find_caltab(Image1, Caltab1, 'caltab.descr', 3, 112, 5)
* find calibration marks and initial pose
StartCamPar := [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
find_marks_and_pose(Image1, Caltab1, 'caltab.descr', StartCamPar, \
128 ,10, 18, 0.9, 15.0, 100.0, RCoord1, CCoord1, \
StartPose1)
* read 3D positions of calibration marks
caltab_points('caltab.descr', NX, NY, NZ)
* camera calibration
camera_calibration(NX, NY, NZ, RCoord1, CCoord1, StartCamPar, \
StartPose1, 11, CameraParam, FinalPose, Errors)
* simulate calibration image
sim_caltab(Image1Sim, 'caltab.descr', CameraParam, FinalPose, 128, \
224, 80, 1)
Sind die Parameterwerte korrekt, dann liefert sim_caltabsim_caltabSimCaltabsim_caltabSimCaltabSimCaltab
den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
camera_calibrationcamera_calibrationCameraCalibrationcamera_calibrationCameraCalibrationCameraCalibration,
find_marks_and_posefind_marks_and_poseFindMarksAndPosefind_marks_and_poseFindMarksAndPoseFindMarksAndPose,
read_poseread_poseReadPoseread_poseReadPoseReadPose,
read_cam_parread_cam_parReadCamParread_cam_parReadCamParReadCamPar,
hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPosehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPose
find_caltabfind_caltabFindCaltabfind_caltabFindCaltabFindCaltab
find_caltabfind_caltabFindCaltabfind_caltabFindCaltabFindCaltab,
find_marks_and_posefind_marks_and_poseFindMarksAndPosefind_marks_and_poseFindMarksAndPoseFindMarksAndPose,
camera_calibrationcamera_calibrationCameraCalibrationcamera_calibrationCameraCalibrationCameraCalibration,
disp_caltabdisp_caltabDispCaltabdisp_caltabDispCaltabDispCaltab,
create_posecreate_poseCreatePosecreate_poseCreatePoseCreatePose,
hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPosehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPose,
project_3d_pointproject_3d_pointProject3dPointproject_3d_pointProject3dPointProject3dPoint,
gen_caltabgen_caltabGenCaltabgen_caltabGenCaltabGenCaltab
Calibration