1.单相机标定的目的:矫正畸变,进行一维和二维的测量。主要消除的是径向畸变(鱼眼镜头畸变特别大)
2.相机畸变是一种像素差
3.标定就是求解相机的内参和外参
4.标定板:有圆形和棋盘格的标定板,主要是金属,陶瓷,玻璃的,精度不一样。
5.标定板本身的物理尺寸,厚度,圆和圆之间的差距是提前已知的。
视野占整个视野的1/3或1/4即可,拍9-16即可。
6.手上标定板7*7阵列,相邻的两个圆之间的距离是4mm,
创建标定板使用算子:gen_caltab()
参数1是每行黑色标志圆点的数量
参数2是每列黑色标志圆点的数量
参数3是两个圆之间的距离(单位m)
参数4是圆直径和 两个圆心之间距离的比值(一般是0.5)
参数5是描述文件(后期需要用到)
参数6是打印文件(可以使用该文件打印一个对应的标定板)
7.标定的时候,最好使用标定助手Calibration
安装界面:
设置描述文件(即上文的文件)
设置单个像元的宽高(采购相机的时候,可以和供应商要,也可以去相机官网上查找)
焦距(采购镜头的时候,自己选的。镜头表面会有25mm,35mm类似这样的描述)
标定界面:
需要在不同的位置进行拍照,数量总数在16-20张左右。
采集完成,在图像上加载,尽量让标定板占视野的2/3,尽量在视野的各个位置都拍到。
一般默认第一个位置是参考位置。
如果有标定失败的,需要移除。
然后点击标定
结果界面:
摄像机参数为外参,点击右边的保存按钮
摄像机位姿为内参,点击右边的保存按钮
代码生成界面:
生成的模式,选择标定数据,然后点击插入代码。
就得到了对应的数据,即相机的内外参数
可以考虑实时采集图像,然后每一帧进行畸变矫正
假设每一帧图像为Image
首先计算出矫正后相机的参数CameraChange
change_radial_distortion_cam_par(‘adaptive’,CameraParameters,0,CameraChange)
接着计算映射矩阵(使用bilinear的插值算法,计算出CameraParameters对应着CamParamChange的矩阵Map)
gen_radial_distortion_map(Map,CameraParameters,CamParamChange,‘bilinear’)
接下来映射图像
map_image(Image,Map,ResultImage)