标定篇:(一)双目标定参数:MATLAB->opencv
第一步:打开MATLAB->APPS->Stereo Camera Calibrator进行双目标定,如图所示:
第二步:添加已双目摄像头拍摄的标定板图片(图片得自己拍,用别人的标定参数去测距肯定是不行的)
第三步:添加完图片(添加10对到20对之间,我添加了17对,但是只接收了10对,可能是拍的不够好)
第四步:导出标定参数
打开CameraParameters1/2
1、左摄像头参数
1)左摄像头内参
646.648769548967 0 0
0 645.928359710778 0
306.373245932490 240.666671300878 1
2)左摄像头畸变参数
里面的RadialDistortion对应k1,k2,k3设置为0了。
TangentialDistortion对应p1,p2。
在OpenCV中的畸变系数的排列为【k1,k2,p1,p2,k3】(这点一定要注意)
2、右摄像头参数
1)右摄像头内参
647.734414032124 0 0
0 649.040024006185 0
294.241207510743 250.718188237874 1
2)右摄像头畸变参数
3、旋转向量
0.999901930405983 0.000449697443772387 -0.0139974048522867
-0.000426576093485018 0.999998539878488 0.00165477301422681
0.0139981285615693 -0.00164863977302830 0.999900662257843
4、平移向量
-60.5516511044111 0.272368320996250 2.35734346394448
将MATLAB里面的参数抄入OpenCV里
注:一定要注意MATLAB是按列存储的,将MATLAB的参数抄入OpenCV里别抄错了,抄错的结果就是,校正后的图片惨不忍睹。
//对应matlab里的左相机标定矩阵
Mat cameraMatrixL = (Mat_<double>(3, 3) << 646.6488, 0.0000, 306.3732, 0.0000,
645.9284, 240.6667, 0.0000, 0.0000, 1.0000);
//对应Matlab所得左i相机畸变参数
Mat distCoeffL = (Mat_<double>(5, 1) << -0.4080, 0.1774,0.,0.0000,0.0000);
//对应matlab里的右相机标定矩阵
Mat cameraMatrixR = (Mat_<double>(3, 3) << 647.7344, 0.0000, 294.2421, 0.0000,
649.0400, 250.7182, 0.0000, 0.0000, 1.0000);
//对应Matlab所得右相机畸变参数
Mat distCoeffR = (Mat_<double>(5 ,1) << -0.3954, 0.0781,0.0000,0.0000,0.0000);
//T平移向量
Mat T = (Mat_<double>(3, 1) << -60.5517, 0.2724,
2.3573);
//R旋转向量
Mat R = (Mat_<double>(3, 3) << 0.9999, -4.2658e-04, 0.0140, 4.4970e-04,
1.0000, -0.0016,-0.0140,
0.0017,0.9999);
本人是一个菜鸟,第一次写博客,如果有错误,请一定指出来,我一定改正。