因爱智能

摄像机标定

摄像机标定

标定要是有问题会提示警告,如果没有问题,标定板在每个位置每个标定孔都能识别出来。标定需要转化十几副图片来准确确定内参和外参。查看结果

摄像机标定

相机外参显示在这块

相机内参会显示在这块

点击保存可以把内参和外参保存成文件。

接着可以入下图插入代码。

摄像机标定

插入代码,插入整个标定过程

第四步:使用程序实现相机标定

create_calib_data ('calibration_object', 1, 1, CalibModelID)

set_calib_data_cam_param (CalibModelID, 0, 'area_scan_division', StartCamPar)

set_calib_data_calib_object (CalibModelID, 0, 'caltab_100mm.descr')

先定义一个标定模版句柄。接着打开相机取图或者直接读文件里的图,开始标定。

通过find_caltab找到标定板位置,然后通过find_marks_and_pose确定标定点坐标和相机外参RCoord, CCoord, StartPose。

通过set_calib_data_observ_points把读取的标定点坐标与描述文件比较结合相机外参,不断修正相机标定模版CalibModelID。

calibrate_cameras (CalibModelID, ErrorsDiv)

    get_calib_data (CalibModelID, 'camera', 0, 'params', CamParam)

标定相机,读取相机的参数给CamParam(内参)。

第五步:转化成世界坐标

image_points_to_world_plane (CamParam, StartPose, Row, Col, 'mm', X1, Y1)

把图片中的Row, Col点们转化到世界坐标值X1, Y1

通过下面计算两点距离

distance_pp (X1[0:4], Y1[0:4], X1[1:5], Y1[1:5], Distance)

可以通过image_to_world_plane来转化图片

第六步:确定原点(没有实验,待验证)

标定时换很多位置放置标定板其实是为了内参标定的更准确,外参只要一张标定板图就可以确定了。因此,换各个角度标定内参,最后一个位置把标定板放在自己想要的坐标原点位置再标定一次,那么转换成世界坐标后,坐标原点就是标定板中心点,标定板上的小黑角在第三象限,依次右手为Y轴,X轴。(注:标定板防止的平面Z最好与使用的平面平行。Z轴正方向为垂直平面向下。

  摄像机标定

然后,考虑标定板的厚度0.75mm,重新设置原点,光Z改变了(下面函数单位为m)。

set_origin_pose (Pose, 0, 0, 0.00075, NewPose)

第七步完成:

完成。

评论