单相机标定

标定

標定的流程

image-20210105102310680

  • 生成标定板的描述文件

    标定前需要生成一个.descr的描述文件

1
gen_caltab(: : XNum, YNum, MarkDist, DiameterRatio, CalPlateDescr, CalPlatePSFile : )

XNum, YNum为X和Y方向标记圆的数量,MarkDist 为标记的距离(以米为单位),即两圆中心点之间的距离,

CalPlateDesc r 为标记直径(圆的直径)与标记距离之比。

开始标定

使用测量助手标定

  1. 打开测量助手,加载.descr标定文件,设定标定板的厚度,相机类型,焦距等参数。

    image-20210105103007123

  2. 加载采集的标定图片,加载完后设定一张图像为参考位姿, 期间可观看品质问题,标定

    image-20210105103409733

    1. 在结果处得到标定的相机内参和外参

手写标定

  1. 设定相机参数*

*创建标定数据(标定类型,相机数量,标定板数量,标定板模型句柄)

1
create_calib_data ('calibration_object', 1, 1, CalibDataID)

*相机初始参数

1
gen_cam_par_area_scan_division (0.0125, 0, 0.0000075, 0.0000075, 325.5, 246.5, 652, 494, StartCamPar)

*设定相机参数 

1
set_calib_data_cam_param (CalibDataID, 0, [], StartCamPar)

*指定标定描述文件

1
set_calib_data_calib_object (CalibDataID, 0, 'caltab_800mm.descr')
  1. *读取含标定板的图像
1
2
3
4
5
6
7
8
9
for I := 1 to 10 by 1
read_image (Image, 'self_calib/calib_' + I$'02d')

find_calib_object (Image, CalibDataID, 0, 0, I, [], [])
get_calib_data_observ_contours (Caltab, CalibDataID, 'caltab', 0, 0, I)
get_calib_data_observ_points (CalibDataID, 0, 0, I, Row, Column, Index, Pose)
gen_circle (Circles, Row, Column, gen_tuple_const(|Row|,2.0))

endfor
  1. 标定相机****** 

    *标定相机,注意calibrate_cameras与camera_calibration的区别

    1
    calibrate_cameras(CalibDataID, Error)

    **取相机内外参数   

    1
    2
    3
    get_calib_data(CalibDataID, 'camera', 0, 'params', CamParam)   

    get_calib_data (CalibDataID, 'calib_obj_pose', [0,1], 'pose', PoseCalib)

畸变矫正

代码

1
2
3
change_radial_distortion_cam_par()
gen_radial_distortion_map()
map_image()

change_radial_distortion_cam_par

根据指定的径向畸变确定新的摄像机参数

change_radial_distortion_cam_par( : : Mode, CamParamIn, DistortionCoeffs : CamParamOut)

参数

​ ** Mode **: 模式

​ ** CamParamIn**: 内部摄像机参数

​ **DistortionCoeffs**:期望径向畸变

​ **CamParamOut**: 内部摄像机参数(修改)

gen_radial_distortion_map

-生成一个投影地图,该映射描述与不断变化的径向失真对应的图像的映射。

gen_radial_distortion_map( : Map : CamParamIn, CamParamOut, MapType : )

参数

​ **CamParamIn**: 旧相机参数。

​ **CamParamOut**: 新的摄像机参数。