之前听前辈说matlab标定更稳定,结果更准确,就分别用matlab和opencv标定了相机做一下对比。
matlab标定过程比较麻烦,左右相机各24张图片,提取角点时一张图片点四次,还要比较小心,自己体会。。。
matlab的标定结果如下:
opencv标定先使用cvCalibrateCamera2()函数对左右相机分别进行标定,再使用cvStereoCalibrate()函数进行立体标定。
标定结果如下:
对比发现,两者的标定结果差距并不大,opencv标定的稳定性也可以。
opencv的优势在于多次标定比较快捷,而且标定的结果可以直接用于后续的立体校正、立体匹配中。
matlab的优势在于可以显示重投影误差、3D效果图等,而且可以单张图片单独使用不同的窗口标定等等。
附matlab标定的立体效果图一张。
(ps:可通过平移矩阵的值来判断标定结果的正确性,比如我的相机基线长度150mm,棋盘格尺寸20mm
标定得到的平移矩阵的值为149.36,比较精确,差不多跟基线长度相等了)