estimateCameraParameters
校准单个或立体相机
语法
描述
[
返回cameraParams
,imagesUsed
,estimationErrors
= estimatecamerparameters (imagePoints
,worldPoints
)cameraParams
,一个cameraParameters
包含对单个相机的内在和外在参数以及失真系数的估计的对象。该函数还返回用于估计相机参数的图像和单相机校准的标准估计误差。的estimateCameraParameters
函数估计外部参数和内在参数。
[
返回stereoParams
,pairsUsed
,estimationErrors
= estimatecamerparameters (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(images,1);imageSize = [size(I, 1),size(I, 2)];params = estimatecamerparameters (imagePoints,worldPoints,...“图象尺寸”、图象尺寸);
可视化校准精度。
showReprojectionErrors (params);
视觉化相机外观。
图;showExtrinsics (params);
drawnow;
图检测和重投影点。
图;imshow (imageFileNames {1});持有在;情节(imagePoints (:, 1, 1), imagePoints (:, 2, 1),“去”);情节(params.ReprojectedPoints (:, 1, 1), params.ReprojectedPoints (:, 2, 1),' r + ');传奇(“发现点”,“ReprojectedPoints”);持有从;
立体摄像机标定
指定校准图像。
leftImages = imageDatastore(fullfile(toolboxdir(“愿景”),“visiondata”,...“校准”,“立体”,“左”));右timages = imageDatastore(fullfile(toolboxdir(“愿景”),“visiondata”,...“校准”,“立体”,“正确”));
检测棋盘。
[imagePoints, boardSize] =...detectCheckerboardPoints (leftImages.Files rightImages.Files);
指定棋盘键的世界坐标。正方形的大小以毫米为单位。
squareSize = 108;worldPoints = generateCheckerboardPoints(boardSize,squareSize);
校准立体摄像系统。两台相机的分辨率相同。
I = readimage(leftImages,1);imageSize = [size(I,1) size(I,2)];params = estimatecamerparameters (imagePoints,worldPoints,...“图象尺寸”、图象尺寸);
可视化校准精度。
showReprojectionErrors (params)
视觉化相机外观。
图showExtrinsics (params)
使用圆形网格估计相机参数
创建一组校准图像。
imds = imageDatastore(fullfile(toolboxdir(“愿景”),“visiondata”,...“校准”,“circleGrid”,“莫诺”));calibrationImages = readall(imds);calibrationImages = cat(4,calibrationImages{:});
定义圆网格图案尺寸。
patternDims = [8 11];
检测校准图像中的模式。
imagePoints = detectCircleGridPoints(calibrationImages, patternDims,...“PatternType”,“对称”);
为圆形网格关键点指定世界坐标。中心距离单位为毫米。
centerDistance = 18;worldPoints = generateCircleGridPoints(patternDims,centerDistance,...“PatternType”,“对称”);
使用校准图像校准相机。
imageSize = size(calibrationImages,1:2);params = estimatecamerparameters (imagePoints,worldPoints,...“图象尺寸”、图象尺寸);
绘制检测到的模式网格和重投影点。
图imshow(calibrationImages(:,:,:,1))保持在情节(imagePoints (:, 1, 1), imagePoints (:, 2, 1),“gx”,“MarkerSize”8)情节(params.ReprojectedPoints (:, 1, 1), params.ReprojectedPoints (:, 2, 1),' r + ',“MarkerSize”8)传说(“发现点”,“ReprojectedPoints”)举行从
输入参数
imagePoints
- - - - - -校准模式要点
米2 -numImages|米2 -numPairs2数组
校准模式的要点,以[x,y]本征像坐标。
校准 | [的输入数组x,y[商务英语重点 |
---|---|
单相机 | 米2 -numImages[数组]x,y)点。
部分检测模式仅支持单摄像机校准。金宝app要在估计中包括部分检测到的模式,请使用[ |
立体相机 | 米2 -numPairs-by-2数组的[x,y)点。
|
数据类型:单
|双
worldPoints
- - - - - -世界坐标中标定模式的要点
米2数组
世界坐标中校准模式的要点,以米-by-2数组的米[数目]x,y]世界坐标。图案必须是平面的;因此,z-坐标为零。
数据类型:单
|双
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:“WorldUnits”、“毫米”
将世界点单位设置为毫米。
WorldUnits
- - - - - -世界积分单位
“毫米”
(默认)|特征向量|字符串标量
世界点单位,指定为字符向量或字符串标量。
EstimateSkew
- - - - - -估计斜
假
(默认)|真正的
估计倾斜,指定为逻辑标量。当您将此属性设置为真正的
,该函数估计图像轴的倾斜。当设置为假
,图像轴完全垂直,函数将倾斜设置为零。
NumRadialDistortionCoefficients
- - - - - -径向畸变系数数
2
(默认)|3.
要估计的径向畸变系数的数目,指定为数值2
或3.
.
径向畸变是图像点沿从主点延伸的径向线的位移。
当图像点远离主点(正径向位移)时,图像放大率降低,图像上出现针垫形失真。
随着图像点向主点移动(负径向位移),图像放大倍率增大,图像出现桶形畸变。
径向畸变系数模拟这种类型的畸变。扭曲点记为(x扭曲的,y扭曲的):
x扭曲的=x(1 +k1*r2+k2*r4+k3.*r6)
y扭曲的=y(1 +k1*r2+k2*r4+k3.*r6)
x,y-未扭曲的像素位置。x而且y都在归一化图像坐标中。归一化图像坐标由像素坐标平移到光学中心,再除以焦距(以像素为单位)得到。因此,x而且y是无量纲。
k1,k2,k3.-透镜的径向畸变系数。
r2=x2+y2
通常,两个系数就足够校准了。对于严重的失真,例如广角镜头,您可以选择三个系数k3..
EstimateTangentialDistortion
- - - - - -切向失真标志
假
(默认)|真正的
切向失真标志,指定为逻辑标量。当您将此属性设置为真正的
,该函数估计切向失真。当你把它设置为假
时,切向畸变可以忽略不计。
当镜头与像面不平行时,就会发生切向畸变。切向失真系数模拟这种类型的失真。
扭曲点记为(x扭曲的,y扭曲的):
x扭曲的=x+ [2 *p1*x*y+p2* (r2+ 2 *x2)]
y扭曲的=y+ (p1* (r2+ 2 *y2) + 2 *p2*x*y]
x,y-未扭曲的像素位置。x而且y都在归一化图像坐标中。归一化图像坐标由像素坐标平移到光学中心,再除以焦距(以像素为单位)得到。因此,x而且y是无量纲。
p1而且p2-镜头的切向畸变系数。
r2=x2+y2
InitialK
- - - - - -对相机固有特性的初步猜测
[]
(默认)|3×3矩阵
相机固有特性的初始猜测,指定为3 × 3矩阵。矩阵的格式如下:
坐标[cxcy]表示光学中心(主点),单位为像素。当x- - -y-轴完全垂直,即skew参数年代=0
.
fx=F*年代x
fy=F*年代y
F以世界单位表示的焦距,通常以毫米表示。
年代x而且年代y每个世界的像素数是单位吗x- - -y分别方向。
fx而且fy用像素表示。
如果不提供初始值,则该函数使用线性最小二乘计算初始内禀矩阵。
InitialRadialDistortion
- - - - - -径向畸变系数的初始猜测
[]
(默认)|2-element向量|转换向量
径向畸变系数的初始猜测,指定为2或3元矢量。如果不提供初始值,则函数使用0
作为所有系数的初值。
图象尺寸
- - - - - -相机产生的图像大小
1×2 (mrows,ncols)向量|[]
由相机产生的图像大小,指定为1 × 2 [mrows,ncols)向量。
输出参数
cameraParams
-摄像机参数
cameraParameters
对象
摄像机参数,返回为cameraParameters
对象。
imagesUsed
-用于估计相机参数的图像
P-by-1逻辑数组
用于估计相机参数的图像,返回为P-by-1逻辑数组。P对应于图像的数量。数组指示用于估计相机参数的图像。一个逻辑真正的
数组中的值指示用于估计相机参数的图像。
该函数计算世界点和每个图像中检测到的点之间的单应性。如果图像的单应性计算失败,则该函数发出警告。该图像的点不用于估计相机参数。函数还设置相应的元素imagesUsed
来假
.
estimationErrors
-估计参数的标准误差
cameraCalibrationErrors
对象|stereoCalibrationErrors
对象
估计参数的标准误差,作为a返回cameraCalibrationErrors
对象或stereoCalibrationErrors
对象。
stereoParams
-立体声系统相机参数
stereoParameters
对象
立体声系统的相机参数,返回为stereoParameters
对象。该对象包含立体相机系统的内在、外在和镜头畸变参数。
pairsUsed
-用于估计摄像机参数的图像对
P-by-1逻辑数组
用于估计相机参数的图像对,返回为P-by-1逻辑数组。P对应于图像对的数量。一个逻辑真正的
数组中的值指示用于估计相机参数的图像对。
算法
参考文献
[1]张,Z。一种灵活的相机定标新技术模式分析与机器智能汇刊22日,没有。11(十一月2000):1330-34。https://doi.org/10.1109/34.888718。
[2]海克拉,J.和O.西尔文。带有隐式图像校正的四步相机校准程序在IEEE计算机学会计算机视觉与模式识别会议论文集, 1106 - 12所示。圣胡安,波多黎各:IEEE计算。Soc, 1997年。https://doi.org/10.1109/CVPR.1997.609468。
[3] Bouguet, J.Y.“Matlab相机校准工具箱”,加州理工学院计算视觉。
[4]布拉德斯基,G.和A.凯勒。学习OpenCV:使用OpenCV库的计算机视觉.加利福尼亚州塞瓦斯托波尔:奥莱利,2008年。
版本历史
在R2014b中引入R2022b:金宝app支持预乘法几何变换约定
从R2022b开始,大多数计算机视觉工具箱™函数使用预乘法约定创建和执行几何转换。因此,要在前置乘法约定中指定相机intrinsic的初始猜测,请使用newInitialK
名称-值参数。
方法仍然可以指定相机intrinsic的初始猜测InitialIntrinsicMatrix
名称-值参数,不建议使用此参数,因为它使用后乘约定。您可以通过切换到预乘法几何变换约定来简化几何变换工作流程。有关更多信息,请参见将几何变换迁移到前置乘法约定.
另请参阅
应用程序
对象
功能
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。