主要内容

estimateCameraParameters

调整一个或立体相机

描述

例子

(cameraParams,imagesUsed,estimationErrors)= estimateCameraParameters (imagePoints,worldPoints)返回cameraParams,一个cameraParameters对象包含内在和外在的参数估计和一个相机的畸变系数。函数返回图片你用来估计相机参数和标准单一相机校正估计错误。的estimateCameraParameters函数估计这些外在和特性参数。

例子

(stereoParams,pairsUsed,estimationErrors)= estimateCameraParameters (imagePoints,worldPoints)返回stereoParams,一个stereoParameters对象包含立体相机的参数。函数返回图片你用来估计立体声参数和立体相机标定的标准估计错误。

例子

cameraParams= estimateCameraParameters (___,名称,值)配置cameraParams由一个或多个对象属性指定名称,值对参数,使用任何前面的语法。未指定的属性的默认值。

例子

全部折叠

创建一套校准图片。

图像= imageSet (fullfile (toolboxdir (“愿景”),“visiondata”,“校准”,“莫诺”));imageFileNames = images.ImageLocation;

检测校准模式。

[imagePoints, boardSize] = detectCheckerboardPoints (imageFileNames);

生成的角落的世界坐标方格。

squareSizeInMM = 29;worldPoints = generateCheckerboardPoints (boardSize squareSizeInMM);

校准相机。

I = readimage(图片1);图象尺寸=[(我,1),大小(我,2)];params = estimateCameraParameters (imagePoints worldPoints,“图象尺寸”、图象尺寸);

可视化校准精度。

showReprojectionErrors (params);

图包含一个坐标轴对象。坐标轴对象标题均Reprojection误差/图像包含3对象类型的酒吧,线。该对象代表总体平均误差:0.18像素。

可视化相机外在。

图;showExtrinsics (params);

图包含一个坐标轴对象。坐标轴对象标题外在参数可视化包含23块类型的对象,文本行。

drawnow;

情节发现和reprojected点。

图;imshow (imageFileNames {1});持有;情节(imagePoints (:, 1, 1), imagePoints (:, 2, 1),“去”);情节(params.ReprojectedPoints (:, 1, 1), params.ReprojectedPoints (:, 2, 1),' r + ');传奇(“发现点”,“ReprojectedPoints”);持有;

图包含一个坐标轴对象。坐标轴对象包含3图像类型的对象,线。这些对象代表发现点,ReprojectedPoints。

指定图像校准。

leftImages = imageDatastore (fullfile (toolboxdir (“愿景”),“visiondata”,“校准”,“立体”,“左”));rightImages = imageDatastore (fullfile (toolboxdir (“愿景”),“visiondata”,“校准”,“立体”,“正确”));

检测棋盘格。

[imagePoints, boardSize] =detectCheckerboardPoints (leftImages.Files rightImages.Files);

指定棋盘要点的世界坐标。广场在毫米大小。

squareSize = 108;worldPoints = generateCheckerboardPoints (boardSize squareSize);

校准立体相机系统。两款相机都有相同的分辨率。

I = readimage (leftImages, 1);图象尺寸=[(我,1)大小(我,2)];params = estimateCameraParameters (imagePoints worldPoints,“图象尺寸”、图象尺寸);

可视化校准精度。

showReprojectionErrors (params)

图包含一个坐标轴对象。坐标轴对象标题均Reprojection误差/图像包含5个对象类型的酒吧,线。这些对象代表相机1,相机2,整体平均误差:0.06像素。

可视化相机外在。

图showExtrinsics (params)

图包含一个坐标轴对象。坐标轴对象标题外在参数可视化包含28块类型的对象,文本行。

创建一套校准图片。

imd = imageDatastore (fullfile (toolboxdir (“愿景”),“visiondata”,“校准”,“circleGrid”,“莫诺”));calibrationImages = readall (imd);calibrationImages =猫(4,calibrationImages {:});

定义圆网格图形尺寸。

patternDims = 11 [8];

检测校准图像中的模式。

imagePoints = detectCircleGridPoints (calibrationImages patternDims,“PatternType”,“对称”);

指定圆的世界坐标网格要点。中心距是毫米。

centerDistance = 18;worldPoints = generateCircleGridPoints (patternDims centerDistance,“PatternType”,“对称”);

使用校准图像校准相机。

图象尺寸=大小(calibrationImages 1:2);params = estimateCameraParameters (imagePoints worldPoints,“图象尺寸”、图象尺寸);

检测模式网格和reprojected点的阴谋。

图imshow (calibrationImages (:,:,: 1))情节(imagePoints (:, 1, 1), imagePoints (:, 2, 1),“gx”,“MarkerSize”8)情节(params.ReprojectedPoints (:, 1, 1), params.ReprojectedPoints (:, 2, 1),' r + ',“MarkerSize”8)传说(“发现点”,“ReprojectedPoints”)举行

图包含一个坐标轴对象。坐标轴对象包含3图像类型的对象,线。这些对象代表发现点,ReprojectedPoints。

输入参数

全部折叠

校准模式的要点,指定为数组(x,y]内在图像坐标。

校准 输入数组的x,y)要点
单相机

2 -numImages数组的x,y)点。

  • 图像的数量,numImages必须大于或等于2。

  • 关键点坐标的数量在每一个模式,,必须大于3。

部分检测模式只支持单摄像机标定。包括部分发现的模式估计,使用[南南]x- - - - - -y坐标为失踪的要点。

立体相机

2 -numPairs2组(x,y)点。

  • numPairs是立体图像对的数量包含校准模式。

  • 关键点坐标的数量在每一个模式,,必须大于3。

  • imagePoints(::,:1从相机1)点。

  • imagePoints(::,:2)从照相机2分。

数据类型:|

校准模式的关键点在世界坐标,作为指定2组的数量(x,y世界坐标。该模式必须平面;因此,z坐标为零。

数据类型:|

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“WorldUnits”,“毫米”集世界点单位毫米。

世界分单位,指定为一个特征向量或字符串标量。

估计倾斜,指定为一个逻辑标量。当你设定这个属性真正的,函数估计图像轴倾斜。当设置为轴是垂直的形象和功能设置偏差为零。

径向畸变系数的估计,指定为价值23

径向畸变图像的位移点沿径向线扩展的主要点。

  • 形象点远离主点(积极的径向位移),图像放大减少和pincushion-shaped变形发生在形象上。

  • 形象点朝着主点(负径向位移),图像放大增加和筒状的变形发生在图像。

三个网格来表示图像。有枕形失真(积极的径向位移),一个没有失真,和一个与桶形失真(负径向位移)

这种类型的失真的径向畸变系数模型。扭曲的点表示为(x扭曲的,y扭曲的):

x扭曲的=x(1 +k1*r2+k2*r4+k3*r6)

y扭曲的=y(1 +k1*r2+k2*r4+k3*r6)

  • x,y——无畸变的像素位置。xy在归一化图像坐标。归一化图像像素坐标的坐标计算翻译焦距的光学中心和除以像素。因此,xy是无量纲。

  • k1,k2,k3- - - - - -镜头的径向畸变系数。

  • r2=x2+y2

通常,两个系数满足校准。等严重的失真,在广角镜头,你可以选择三个系数包括k3

切向畸变国旗,指定为一个逻辑标量。当你设定这个属性真正的,函数估计,切向畸变。当你设置它切向畸变是微不足道的。

切向畸变发生在镜头和图像平面不平行。这种类型的失真的切向畸变系数模型。

比较零切向畸变和切向畸变

扭曲的点表示为(x扭曲的,y扭曲的):

x扭曲的=x+ (2 *p1*x*y+p2* (r2+ 2 *x2)]

y扭曲的=y+ (p1* (r2+ 2 *y2)+ 2 *p2*x*y]

  • x,y——无畸变的像素位置。xy在归一化图像坐标。归一化图像像素坐标的坐标计算翻译焦距的光学中心和除以像素。因此,xy是无量纲。

  • p1p2-切向畸变系数的镜头。

  • r2=x2+y2

初始猜测相机intrinsic,指定为一个3×3的矩阵。如果你不提供一个初始值,函数使用线性最小二乘法计算初始内在矩阵。

初始猜测径向畸变系数,指定为2 -或转换向量。如果你不提供一个初始值,函数使用0所有的初始值系数。

图像大小由相机,指定为1×2 (mrows,ncols)向量。

输出参数

全部折叠

相机参数,作为一个返回cameraParameters对象。

图像使用估计相机参数,作为一个返回P1逻辑数组。P对应于图像的数量。数组表示图像用来估计摄像机的参数。一个逻辑真正的数组中的值显示图像用来估计摄像机的参数。

函数计算世界点和点之间的单应性检测在每个图像。如果图像的单应性计算失败,一个警告的功能问题。图像的点不是用于估计摄像机的参数。函数还设置相应的元素imagesUsed

标准错误的估计参数,作为一个返回cameraCalibrationErrors对象或一个stereoCalibrationErrors对象。

相机参数立体声系统,作为一个返回stereoParameters对象。对象包含内在、外在和镜头畸变参数的立体相机系统。

图像对用来估计相机参数,作为一个返回P1逻辑数组。P对应于图像对的数量。一个逻辑真正的数组中的值显示图片对你用来估计摄像机的参数。

算法

全部折叠

校准算法

您可以使用相机校准器应用与相机的的视野(FOV) 95度。

校准算法假定一个针孔摄像机模型:

w ( x y 1 ] = ( X Y Z 1 ] ( R t ] K

(X,Y,Z):点的世界坐标
(x,y):对应的像点的坐标
w:任意比例因子
K:相机内在矩阵
R:代表相机的三维旋转矩阵
t:翻译的相机相对于世界坐标系统

相机校正估计固有参数的值,非本征参数,畸变系数。有两个相机校正所涉及的步骤:

  1. 解决intrinsic和外在在封闭形式,假定透镜畸变为零。[1]

  2. 估计所有参数同时包括失真系数使用非线性最小平方最小化(Levenberg-Marquardt算法)。使用前一步的封闭形式的解决方案作为初始估计的intrinsic和外在。然后设置的初始估计失真系数为零。[1][2]

引用

[1],z“灵活的摄像机标定新技术”。IEEE模式分析与机器智能.Vol。22日,11号,2000年,页1330 - 1334。

[2]么,J, o . Silven。“四步相机校正过程隐含的图像校正”,IEEE国际会议在计算机视觉和模式识别,1997年。

[3]Bouguet J.Y.“相机校正为Matlab工具箱”,在加州理工学院的计算机视觉技术。

[4]Bradski G。,A. Kaehler.学习OpenCV: OpenCV的计算机视觉库。塞瓦斯托波尔,CA: O ' reilly, 2008年。

版本历史

介绍了R2014b

Baidu
map