目录
[2.1 使用双目相机对准标定板拍大概20张高质量图片(距离角度尽量丰富些)](#2.1 使用双目相机对准标定板拍大概20张高质量图片(距离角度尽量丰富些))
[2.2 分割成左图和右图](#2.2 分割成左图和右图)
[2.3 使用matlab中APP下的Stereo Camera Calibrator,导入图片](#2.3 使用matlab中APP下的Stereo Camera Calibrator,导入图片)
[2.4 导出所有参数](#2.4 导出所有参数)
[2.5 标定参数解释](#2.5 标定参数解释)
1.环境准备
matlab软件、棋盘格标定板、双目相机、笔记本电脑
2.流程
2.1 使用双目相机对准标定板拍大概20张高质量图片(距离角度尽量丰富些)
原理参考链接:OpenCV:使用 OpenCV 进行相机校准
棋盘格打印:opencv/doc/pattern.png 在 4.x 上 ·opencv/opencv

我的标定板比较业余,整体不是特别平的话会导致误差比较大。
2.2 分割成左图和右图
matlab代码:
Matlab
% 设置图像文件夹路径
inputFolder = 'C:\Users\mqli0\Pictures\Camera Roll'; % 输入你存放双目图像的文件夹路径
outputFolderLeft = 'C:\Users\mqli0\Pictures\tem\left'; % 保存左图像的文件夹路径
outputFolderRight = 'C:\Users\mqli0\Pictures\tem\right'; % 保存右图像的文件夹路径
% 创建输出文件夹(如果文件夹不存在的话)
if ~exist(outputFolderLeft, 'dir')
mkdir(outputFolderLeft);
end
if ~exist(outputFolderRight, 'dir')
mkdir(outputFolderRight);
end
% 使用 imageDatastore 读取文件夹中的所有图像
imageFiles = imageDatastore(inputFolder, 'FileExtensions', {'.jpg', '.png', '.bmp'});
% 循环遍历每一张图像
for i = 1:numel(imageFiles.Files)
% 读取当前图像
stereoImage = imread(imageFiles.Files{i});
% 获取图像的尺寸
[imageHeight, imageWidth, numChannels] = size(stereoImage);
% 假设左右图像宽度相同
halfWidth = imageWidth / 2;
% 分割左图和右图
leftImage = stereoImage(:, 1:halfWidth, :); % 左图是前半部分
rightImage = stereoImage(:, halfWidth+1:end, :); % 右图是后半部分
% 生成文件名并保存左图和右图
[~, name, ext] = fileparts(imageFiles.Files{i}); % 获取文件名和扩展名
leftImageFile = fullfile(outputFolderLeft, [name, '_left', ext]);
rightImageFile = fullfile(outputFolderRight, [name, '_right', ext]);
% 保存分割后的左右图像
imwrite(leftImage, leftImageFile);
imwrite(rightImage, rightImageFile);
fprintf('保存了 %s 和 %s\n', leftImageFile, rightImageFile); % 输出处理信息
end
disp('所有图像已处理完毕!');
2.3 使用matlab中APP下的Stereo Camera Calibrator,导入图片


点开始标定,

2.4 导出所有参数

2.5 标定参数解释
| 参数 | 描述 | 说明 |
|---|---|---|
| CameraParameters1 | 第一台相机的内参 | 包含相机1的焦距、主点、畸变系数等内参。 |
| CameraParameters2 | 第二台相机的内参 | 包含相机2的焦距、主点、畸变系数等内参。 |
| PoseCamera2 | 第二台相机相对于第一台相机的 位置和姿态(外参) | 包含旋转矩阵和位移向量,描述相机2相对于相机1的位置和朝向。 |
| FundamentalMatrix | 基础矩阵 | 3x3 矩阵,描述两个相机之间的几何关系。用于图像匹配和重建。 |
| EssentialMatrix | 本质矩阵 | 3x3 矩阵,描述两个相机的相对姿态(旋转和平移)。需要知道相机内参。 |
| MeanReprojectionError | 平均重投影误差 | 衡量标定精度的指标,表示实际测量点与计算点之间的平均误差,单位是像素。 |
| NumPatterns | 用于标定的标定图案数量 | 例如 21 表示使用了 21 个标定图案(棋盘格图案)。 |
| WorldPoints | 标定图案在世界坐标系中的点的位置 | 例如棋盘格的角点在世界坐标系中的实际坐标,单位通常为毫米。 |
| WorldUnits | 世界坐标系单位 | 标定时使用的单位,通常是 "millimeters"(毫米)。 |
| 参数 | 描述 | 说明 |
|---|---|---|
| Camera1IntrinsicsErrors | 第一台相机的内参估计误差 | 包含相机1的内参(焦距、主点、畸变系数等)的估计误差。 |
| Camera1ExtrinsicsErrors | 第一台相机的外参估计误差 | 包含相机1的旋转矩阵和位移向量的估计误差。 |
| Camera2IntrinsicsErrors | 第二台相机的内参估计误差 | 包含相机2的内参(焦距、主点、畸变系数等)的估计误差。 |
| RotationOfCamera2Error | 第二台相机旋转矩阵的估计误差 | 表示第二台相机的旋转估计误差,单位是弧度。 |
| TranslationOfCamera2Error | 第二台相机位移向量的估计误差 | 表示第二台相机的位移估计误差,单位是毫米(X, Y, Z 三个轴上的误差)。 |