第一步,打开matlab
输入stereoCameraCalibrator ,进入工具箱
第二步:点击add images
第三步:添加图片路径,并且修改尺寸(根据格子边长)
工具箱会弹窗告诉你一共识别到多少组照片,多少组可以用,多少组被工具箱拒绝了。
我这里一共20张图片,都可以
运行完成之后会在界面下方出现如下窗口:
从图中可以看到,平均的标定误差以及标定过程中误差较大的的图像对,以及图片的位置信息。针对左侧误差比较大的图片,我们可以选择误差大的照片进行删除,删除到误差满足要求为止。左键或右键点击柱状图会跳转到照片,右键remove选中照片即可。
第五步:导出参数
回到命令行窗口:
CameraParameters1 与 CameraParameters2 为左右摄像头的内部参数,RotationOfCamera2 与 TranslationOfCamera2 为两个摄像头的旋转、平移参数。
平移参数可直接使用;但旋转参数需进行转置才能使用。
之后我们点击工作区:
点击stereoParams查看参数,我们以左相机为例,查看所需的相机参数。
点击CameraParameters1,
IntrinsicMatrix 存放的是摄像头的内部参数
RadialDistortion 和 TangentialDistortion 中存放的是畸变参数(径向畸变和切向畸变)
双击IntrinsicMatrix 得到如下参数
RadialDistortion 为 径向畸变,摄像头由于光学透镜的特性使得成像存在着径向畸变,可由 K1、K2、K3 确定。
TangentialDistortion 为 切向畸变,由于装配方面的误差,传感器与光学镜头之间并非完全平行,因此成像存在切向畸变,可由两个参数 P1、P2 确定。
在Opencv的使用中,我们的使用顺序是K1、K2、P1、P2、K3(K3的默认值是0)千万要注意顺序不要弄错!
这是全部参数:
Matlab标定双目相机
stereoParams.CameraParameters1 (左相机)
IntrinsicMatrix(内参矩阵) 要进行转置再用!!!!!!!!
713.287455177324 0 0
0 767.060628932890 0
652.499479466471 308.120284277132 1
TangentialDistortion 切向畸变
p1 p2
0 0
RadialDistortion 径向畸变
k1 k2 k3(默认为0)
0.218399217500876 -0.320624863045497 0
在Opencv的使用中,我们的使用顺序是K1、K2、P1、P2、K3(K3的默认值是0)
0.218399217500876 -0.320624863045497 0 0 0
stereoParams.CameraParameters2(右相机)
IntrinsicMatrix
709.894751213518 0 0
0 766.679151125009 0
601.528476621381 310.526535201931 1
TangentialDistortion 切向畸变
p1 p2 0 0
RadialDistortion 经向畸变
k1 k2 k3 0.164627774965088 -0.235231392507558 0
RotationOfCamera2 (为两个摄像头的旋转参数)
0.999763294754995 -4.98399092969342e-05 -0.0217566536172371
0.000177637159851697 0.999982743613643 0.00587204563770117
0.0217559855137944 -0.00587452048385626 0.999746051306735
TranslationOfCamera2 (平移参数)。需注意!平移参数可以直接在Opencv中使用,而旋转参数需要进行转置之后使用,与上面转置同理。
-59.7275589924576 -0.0352284664835065 -1.03214800789663