其中7,7为生成7*7的阵列,0.00250为阵列间间距为2.5mm,0.4为直径与标记距离的比值。
StartCamPar:= [0.008,0,5.3e-006,5.3e-006,640,512,1280,1024]
0.008:默认焦距,0:径向扭曲系数(K为负则是桶形畸变,为正是枕形畸变),5.3e-006:相机像素尺寸(Pixel Size),640:Weight/2,512:Height/2,1280:相机分辨率的宽,1024相机分辨率的高(此处是只用相机拍图能看到宽高)
架好相机,然后用标定板在相机下拍摄不同位姿图片10~20张,拍摄图片时标定板尽量覆盖整个视场(标定板要根据工作距离、视场大小定制);拍摄图片上的圆直径不得小于10个像素 。
create_calib_data('calibration_object', 1, 1, CalibDataID)
其中 'calibration_object':相机矫正,1:一个相机,1:一个矫正对象,CalibHandle:句柄
set_calib_data_cam_param (CalibDataID, 0, 'area_scan_division', StartCamPar)
其中,0:相机索引为1,'area_scan_division':面扫division模式,StartCamPar:相机初始参数
set_calib_data_calib_object (CalibDataID, 0, CaltabName)
其中,0:校正对象索引,CaltabName:描述文件路径
find_caltab (Image, CalPlate,CaltabName, 3, 112, 5)
其中,3:高斯滤波核,112:标记提取的阈值,5:标定板上圆的最小直径。
find_marks_and_pose (Image, CalPlate, CaltabName, StartCamPar, 128, 10, 18, 0.9, 15, 100, RCoord, CCoord, StartPose)
set_calib_data_observ_points(CalibDataID, 0, 0, i, RCoord, CCoord, 'all', StartPose)
其中,储存标定信息到标定模型,0:相机索引,0:标定对象的索引,‘all’:提取点与观测标定对象的标定标志的所有对应关系。
calibrate_cameras (CalibDataID, Error)
get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam)
其中‘camera’:校准数据的类型,0:相机索引,'params':被检查数据的名称。CamParam:获得的相机内部参数
get_calib_data (CalibDataID, 'calib_obj_pose',[0,1],'pose',PoseCalib)
图1 标定板检测图
图2 标定板中尺寸检测
图3 标定板图校正与旋转转换效果图
图4 世界坐标中5mm直线转图像坐标图
图5 图中直线长度检测效果图