MatLab和OpenCV共同实现单目相机标定实验--附标定图片

今天分享一下用matlab和opencv c++两种方式进行相机标定实验的结果和区别

打开matlab,找到APP下的camera calibrator

MatLab和OpenCV共同实现单目相机标定实验--附标定图片_第1张图片

MatLab和OpenCV共同实现单目相机标定实验--附标定图片_第2张图片

点击 Add Images 添加相机采集到的不同位姿的图片,10-20张最好

MatLab和OpenCV共同实现单目相机标定实验--附标定图片_第3张图片

上图是设置一个黑白格实际的尺寸大小,我制作的标定板都是25mm的所以就输入25,再附一张游标卡尺的测量图吧。其实自己用打印机打印出来的标定板进行相机标定,做做实验玩一玩还可以,要是真的工业生产和高精度的研究,还是推荐去买玻璃/亚克力之类的标定板,精度高还防反光,某宝,300左右吧。

MatLab和OpenCV共同实现单目相机标定实验--附标定图片_第4张图片

 MatLab和OpenCV共同实现单目相机标定实验--附标定图片_第5张图片

 上图是matlab对输入图片进行分析,角点过少或位姿过于扭曲会剔除

 

上图是导入之后的结果,图中以左上角角点作为原点,右边作为X轴,下方作为Y轴 。我的标定板角点个数为9*6比较特殊,是我自己制作的。一般情况下8*6角点个数多一些。

 然后点击calibrate进行标定,结果如下图

可以看出来,mean error in pixel  0.59还是挺大的误差的。(这是我做对比试验故意调的误差较大=.=)

推荐几种降低误差的方法,1.剔除高误差的标定图片2标定板拍照时位姿应该空间均匀分配3保证光源(根据相机光谱相应曲线选择光源类型450-600波段更容易被相机光电芯片接受和响应)和其他设备的辅助作用(相机支架保持稳定不震动,保持相机光轴垂直等)

MatLab和OpenCV共同实现单目相机标定实验--附标定图片_第6张图片

4.黑白的图比彩色的更好。要是误差还是很高的话,建议查看相机芯片参数和镜头畸变率,有论文说CCD比CMOS更好,也只是相对来说。

MatLab和OpenCV共同实现单目相机标定实验--附标定图片_第7张图片

单击export camera parameters就是输出相机内外参数

MatLab和OpenCV共同实现单目相机标定实验--附标定图片_第8张图片

 MatLab和OpenCV共同实现单目相机标定实验--附标定图片_第9张图片

 选中cameraParams.IntrinsicMatrix查看内参矩阵的数值,我的相机是2000w的,拍摄距离500mm左右

MatLab和OpenCV共同实现单目相机标定实验--附标定图片_第10张图片

 根据内参矩阵的计算公式来看,效果还是不错的。关于OPENCV用C++做相机标定的代码和实现方法下次再说吧,先把标定图片传一下(免费哦)

你可能感兴趣的:(camera,calibration,reprojection,error,matlab)