第一次写博客,记录一下做双目测距过程
查阅部分资料后,先下载了matlab用来标定,吐槽一下scut的matlab竟然是正版
下载computer vision toolbox,使用stereo camerra calibrator进行标定
点击Add Images 添加图像,选择每个方格边长,我们这里为30mm
点击calibrate 得到矫正效果图,图中标定图片拍摄距离大概为1. 7m,从效果图上Z轴距离相差不多,误差控制在0.35以内,标定效果良好。
Export camera parameters 输出相机参数
从变量中得到相机参数
-
stereoParams.CameraParameters1
K
相机1(左相机)内参矩阵RadialDistortion
相机1径向畸变参数k1,k2,k3
TangentialDistortion
相机1切向畸变参数p1,p2
-
left_distortion = np.array([[k1,k2,p1,p2, k3]])
-
stereoParams.CameraParameters2
K
相机2(右相机)内参矩阵RadialDistortion
相机2径向畸变参数k1,k2,k3
TangentialDistortion
相机2切向畸变参数p1,p2
-
stereoParams.PoseCamera2
R
相机1到相机2的旋转矩阵,也即相机2相对于相机1的旋转矩阵- R2022b版本在OpenCV上使用无需转置
Translation
相机1到相机2的平移矩阵
为方便提取数据,采用小脚本提取数据,
rowName = cell(1,10);
rowName{1,1} = '平移矩阵';
rowName{1,2} = '旋转矩阵';
rowName{1,3} = '相机1内参矩阵';
rowName{1,4} = '相机1径向畸变';
rowName{1,5} = '相机1切向畸变';
rowName{1,6} = '相机2内参矩阵';
rowName{1,7} = '相机2径向畸变';
rowName{1,8} = '相机2切向畸变';
rowName{1,9} = '相机1畸变向量';
rowName{1,10} = '相机2畸变向量';
xlswrite('out.xlsx',rowName(1,1),1,'A1');
xlswrite('out.xlsx',rowName(1,2),1,'A2');
xlswrite('out.xlsx',rowName(1,3),1,'A5');
xlswrite('out.xlsx',rowName(1,4),1,'A8');
xlswrite('out.xlsx',rowName(1,5),1,'A9');
xlswrite('out.xlsx',rowName(1,6),1,'A10');
xlswrite('out.xlsx',rowName(1,7),1,'A13');
xlswrite('out.xlsx',rowName(1,8),1,'A14');
xlswrite('out.xlsx',rowName(1,9),1,'A15');
xlswrite('out.xlsx',rowName(1,10),1,'A16');
xlswrite('out.xlsx',stereoParams.TranslationOfCamera2,1,'B1'); % 平移矩阵
xlswrite('out.xlsx',stereoParams.RotationOfCamera2.',1,'B2'); % 旋转矩阵
xlswrite('out.xlsx',stereoParams.CameraParameters1.IntrinsicMatrix.',1,'B5'); % 相机1内参矩阵
xlswrite('out.xlsx',stereoParams.CameraParameters1.RadialDistortion,1,'B8'); % 相机1径向畸变(1,2,5)
xlswrite('out.xlsx',stereoParams.CameraParameters1.TangentialDistortion,1,'B9'); % 相机1切向畸变(3,4)
xlswrite('out.xlsx',stereoParams.CameraParameters2.IntrinsicMatrix.',1,'B10'); % 相机2内参矩阵
xlswrite('out.xlsx',stereoParams.CameraParameters2.RadialDistortion,1,'B13'); % 相机2径向畸变(1,2,5)
xlswrite('out.xlsx',stereoParams.CameraParameters2.TangentialDistortion,1,'B14'); % 相机2切向畸变(3,4)
xlswrite('out.xlsx',[stereoParams.CameraParameters1.RadialDistortion(1:2), stereoParams.CameraParameters1.TangentialDistortion,...
stereoParams.CameraParameters1.RadialDistortion(3)],1,'B15'); % 相机1畸变向量
xlswrite('out.xlsx',[stereoParams.CameraParameters2.RadialDistortion(1:2), stereoParams.CameraParameters2.TangentialDistortion,...
stereoParams.CameraParameters2.RadialDistortion(3)],1,'B16'); % 相机2畸变向量