多语言展示
当前在线:643今日阅读:39今日分享:10

评估单相机校准的准确性

本示例说明如何评估使用该cameraCalibrator应用或estimateCameraParameters功能估算的相机参数的准确性。
工具/原料
1

matlab软件

2

电脑

方法/步骤
1

总览相机校准是使用特殊校准图案的图像估算相机参数的过程。参数包括相机固有,失真系数和相机外部。校准摄像机后,有几种方法可以评估估计参数的准确性:画出相机的相对位置和校准图案计算重投影误差计算参数估计误差

2

校准相机使用一组棋盘格校正图案的图像估算相机参数。% Create a set of calibration images.images = imageDatastore(fullfile(toolboxdir('vision'), 'visiondata', ...                     'calibration', 'mono')); imageFileNames = images.Files; % Detect calibration pattern.[imagePoints, boardSize] = detectCheckerboardPoints(imageFileNames); % Generate world coordinates of the corners of the squares.squareSize = 29;% millimetersworldPoints = generateCheckerboardPoints(boardSize, squareSize); % Calibrate the camera.I = readimage(images, 1); imageSize = [size(I, 1), size(I, 2)]; [params, ~, estimationErrors] = estimateCameraParameters(imagePoints, worldPoints, ...                               'ImageSize', imageSize);

3

外在  你可以很快发现明显错误校正通过绘制相机的相对位置和校准模式。使用showExtrinsics函数要么情节的位置校准模式在相机的坐标系中,或相机的位置模式的坐标系统。寻找明显的问题,比如模式在相机后面,或相机背后的模式。也检查模式是否太远或太近镜头。

4

figure; showExtrinsics(params, 'CameraCentric');

5

figure; showExtrinsics(params, 'PatternCentric');

6

重新投影错误重投影误差提供了定性的准确性度量。重投影误差是在校准图像中检测到的图案关键点与投影到同一图像中的相应世界点之间的距离。该showReprojectionErrors功能提供了每个校准图像中平均重投影误差的有用可视化。如果总体平均投影误差太大,请考虑排除误差最大的图像并重新校准。figure; showReprojectionErrors(params);

7

估计误差估计误差代表每个估计参数的不确定性。该estimateCameraParameters函数可以选择返回estimationErrors输出,其中包含与每个估计的摄像机参数相对应的标准误差。返回的标准误差σ(以与相应参数相同的单位)可用于计算置信区间。例如+/- 1 。9个6 σ对应于95%置信区间。换句话说,给定参数的实际值在1以内的概率 。96σ其估计为95%。displayErrors(estimationErrors, params);

8

如何提高校准精度是否可以接受特定的重新投影或估计误差取决于特定应用程序的精度要求。但是,如果您确定校准精度不可接受,则有几种方法可以提高校准精度:修改校准设置。尝试使用3个径向变形系数,估计切向变形或偏斜。拍摄更多校准图像。图像中的图案必须采用不同的3D方向,并且其位置应使您在视场的所有部分都具有关键点。尤其重要的是,关键点必须靠近图像的边缘和角落,以便更好地估计失真系数。排除投影误差较大并重新校准的图像。

推荐信息