主要内容

estimateExtrinsics

计算校准相机的位置

自从R2022b

描述

例子

camExtrinsics= estimateExtrinsics (imagePoints,worldPoints,intrinsic)返回相机外在,3 d刚性变换,使您从世界坐标变换点到摄像机坐标系统。

例子

全部折叠

创建一套校准图片。

图像= imageDatastore (fullfile (toolboxdir (“愿景”),“visiondata”,“校准”,“单反”));

检测图像中的棋盘角。

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

生成的世界坐标棋盘角落pattern-centric坐标系,在左上角(0,0)。广场在毫米大小。

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

校准相机。

I = readimage(图片1);图象尺寸=[(我,1)大小(我,2)];cameraParams = estimateCameraParameters (imagePoints worldPoints,图象尺寸=图象尺寸);intrinsic = cameraParams.Intrinsics;

加载一个图像在一个新的位置。

imOrig = readimage(图片,9);图imshow (imOrig)标题(“输入图像”)

Undistort图像。

[im, newOrigin] = undistortImage (intrinsic imOrig, OutputView =“全部”);

找到引用对象的新形象。

[imagePoints, boardSize] = detectCheckerboardPoints (im);

补偿图像坐标系统的转变。

imagePoints = imagePoints + newOrigin;

计算新的外在。

camExtrinsics = estimateExtrinsics (imagePoints、worldPoints intrinsic);

计算出相机的姿势。

camPose = extr2pose (camExtrinsics);图plotCamera (AbsolutePose = camPose大小= 20);持有pcshow ([worldPoints, 0(大小(worldPoints, 1), 1)),VerticalAxisDir =“向下”,MarkerSize = 40);

输入参数

全部折叠

图像的坐标点,指定为一个2数组。该数组包含的数量(x,y)坐标。的imagePointsworldPoints输入都必须或者两者都是

数据类型:|

世界坐标与图像坐标,作为指定2矩阵。的imagePointsworldPoints输入都必须或者两者都是。函数假设点共面z= 0点的数量,必须至少4。

数据类型:|

相机intrinsic,指定为一个cameraIntrinsics或者一个fisheyeIntrinsics对象。对象存储信息相机的内在校准参数,包括透镜畸变参数。

输出参数

全部折叠

相机外,作为一个返回rigidtform3d对象。的“R”“翻译”对象的属性代表相机的方向和位置。

提示

算法

estimateExtrinsics函数使用了两个不同的算法来计算外在取决于worldPoints被指定为一个2矩阵。使用一个2为共面点矩阵z= 0。

estimateExtrinsics函数计算旋转矩阵和翻译的单个图像向量封闭形式。在校准过程中,外在估计数值减少reprojection错误校正图像。因此,使用estimateExtrinsics函数的标定图像返回矢量旋转矩阵和翻译略有不同的校准期间获得的。

扩展功能

版本历史

介绍了R2022b

全部展开