KlassenKlassenKlassenKlassen | | | | Operatoren

sim_caltabT_sim_caltabSimCaltabsim_caltabSimCaltabSimCaltab (Operator)

Name

sim_caltabT_sim_caltabSimCaltabsim_caltabSimCaltabSimCaltab — Simulieren eines Bildes mit Kalibrierkörper.

Signatur

sim_caltab( : SimImage : CalTabDescrFile, CameraParam, CaltabPose, GrayBackground, GrayCaltab, GrayMarks, ScaleFac : )

Herror T_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)

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)

Beschreibung

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.

Parallelisierung

Parameter

SimImageSimImageSimImageSimImageSimImagesimImage (output_object)  image objectHImageHImageHImageHImageXHobject * (byte)

Simuliertes Kalibrierbild.

CalTabDescrFileCalTabDescrFileCalTabDescrFileCalTabDescrFileCalTabDescrFilecalTabDescrFile (input_control)  filename.read HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

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

CameraParamCameraParamCameraParamCameraParamCameraParamcameraParam (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Interne Kameraparameter.

Parameteranzahl: CameraParam == 8 || CameraParam == 11 || CameraParam == 12

CaltabPoseCaltabPoseCaltabPoseCaltabPoseCaltabPosecaltabPose (input_control)  pose HPose, HTupleHTupleHTupleHPoseX, VARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

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

Parameteranzahl: 7

GrayBackgroundGrayBackgroundGrayBackgroundGrayBackgroundGrayBackgroundgrayBackground (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Hintergrundgrauwert des Bildes.

Defaultwert: 128

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

Restriktion: 0 <= GrayBackground <= 255

GrayCaltabGrayCaltabGrayCaltabGrayCaltabGrayCaltabgrayCaltab (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Grauwert der Kalibrierkörperplatte.

Defaultwert: 224

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

Restriktion: 0 <= GrayCaltab <= 255

GrayMarksGrayMarksGrayMarksGrayMarksGrayMarksgrayMarks (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Grauwert der Kalibrierkörpermarkierungen.

Defaultwert: 80

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

Restriktion: 0 <= GrayMarks <= 255

ScaleFacScaleFacScaleFacScaleFacScaleFacscaleFac (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (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
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)

Beispiel (HDevelop)

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

Beispiel (HDevelop)

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

Beispiel (C++ (HALCON 5.0-10.0))

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

Beispiel (HDevelop)

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

Beispiel (HDevelop)

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

Ergebnis

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

Vorgänger

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

Nachfolger

find_caltabfind_caltabFindCaltabfind_caltabFindCaltabFindCaltab

Siehe auch

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

Modul

Calibration


KlassenKlassenKlassenKlassen | | | | Operatoren