主要内容

undistortPoints

校正镜头失真点坐标

描述

undistortedPoints= undistortPoints (cameraParams返回经过镜头失真校正的点坐标。该函数使用数值非线性最小二乘优化。

例子

undistortedPointsreprojectionErrors= undistortion points (cameraParams另外返回用于评估未失真点的准确性的误差。

例子

全部折叠

创建一个包含校准图像的imageDatastore对象。

图片= imageDatastore(fullfile(toolboxdir(“愿景”),“visiondata”...“校准”“莫诺”));imageFileNames = images.Files;

检测校准模式。

[imagePoints,boardSize] = detectCheckerboardPoints(imageFileNames);

生成正方形角落的世界坐标。正方形的大小以毫米为单位。

squareSize = 29;worldPoints = generateCheckerboardPoints(boardSize,squareSize);

校准相机。

I = readimage(images,10);imageSize = [size(I, 1), size(I, 2)];params = estimatecamerparameters (imagePoints,worldPoints,...“图象尺寸”、图象尺寸);

加载图像并检测棋盘点。

点数= detectCheckerboardPoints(I);

不扭曲这些点

undistortion points = undistortion points (points,params);

还原图像。

[J, newOrigin] = undistortImage(I,params,“OutputView”“全部”);

翻译未扭曲的点

un扭曲点= [un扭曲点(:,1)- newOrigin(1),...undistortion points (:,2) - newOrigin(2)];

显示结果

图;imshow(我);持有;情节(点(:1),点(:,2),“r * - - - - - -”);标题(“发现点”);持有

图中包含一个轴对象。标题为Detected Points的坐标轴对象包含2个图像、直线类型的对象。

图;imshow (J);持有;情节(undistortedPoints (: 1) undistortedPoints (:, 2),“g * - - - - - -”);标题(“不失真点”);持有

图中包含一个轴对象。标题为undistortion Points的坐标轴对象包含两个图像、直线类型的对象。

输入参数

全部折叠

指定的输入点的-by-2矩阵[x y]坐标的个数。

相机参数,指定为cameraParameterscameraIntrinsics对象。您可以返回cameraParameters对象使用estimateCameraParameters函数。的cameraParameters对象包含相机的内在、外在和镜头畸变参数。

输出参数

全部折叠

未扭曲的点,返回为an2矩阵。的undistortedPoints输出包含xy]校正了镜头畸变的点坐标。当你输入点为,函数输出undistortedPoints作为.否则,输出undistortedPoints作为单身。

数据类型:|

重投影错误,返回为1的向量。您可以使用这些误差来评估未失真点的准确性。该函数通过对未失真的点施加失真来计算误差,然后计算结果与相应输入点之间的距离。的reprojectionErrors输出以像素为单位。

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

在R2014b中引入

Baidu
map