拍好照片之后,打开Matlab,使用
将app进行下拉 打开
也可以直接在命令行输入stereoCameraCalibrator,也可以打开这个应用。
之后 先添加照片,camera1添加左边的照片,camera2添加右边的照片。
并且将打钩的位置调为如图的样子
-
如果选择2Coefficients的话,结果的径向畸变只有k1,k2,主要用于普通相机;
-
如果选择3Coefficients的话,结果的径向畸变会有三项,主要用于鱼眼摄像机。
接下来就可以交给Matlab进行计算
生成结果如上图所示。
从柱状图中挑出明显不符合的结果,右键点击相对应的照片,将其移出,Matlab会自动重新计算误差。
当误差可以接受的时候导出参数
点击确定即可
导出结果如图
其中:
TranslationOfCamera2:相机2相对于相机1的偏移矩阵,可以直接使用。
RotationOfCamera2:相机2相对于相机1的旋转矩阵,需要转置之后才能使用。
CameraParameters1与CameraParameters2为左右摄像头的单独标定参数。CameraParameters1与CameraParameters2中包含如下文件:
IntrinsicMatrix存放的是摄像头的内参,只与摄像机的内部结构有关,需要先转置再使用。
RadialDistortion:径向畸变,摄像头由于光学透镜的特性使得成像存在着径向畸变,可由K1,K2,K3确定。
TangentialDistortion:切向畸变,由于装配方面的误差,传感器与光学镜头之间并非完全平行,因此成像存在切向畸变,可由两个参数P1,P2确定。
使用时,需要注意参数的排放顺序,即K1,K2,P1,P2,K3。切记不可弄错,否则后续的立体匹配会出现很大的偏差。
由上述方法获得双目的标定参数后,就可以进一步进行双目校正、匹配以及生成深度图了
具体说一下内参,内参是一个3x3的矩阵,双击matlab里面的值,得到的表格是这样的
这个表格里面和代码需要的数据要置换一下
fx | 0 | cx |
0 | fy | cy |
0 | 0 | 1 |