主要内容

triangulateMultiview

三维世界的位置点匹配多个图像

描述

例子

worldPoints= triangulateMultiview (pointTracks,cameraPoses,intrinsic)返回3 d世界的位置点,对应点匹配多个与校准相机拍摄的图像。pointTracks指定数组的匹配点。cameraPosesintrinsic分别指定相机姿态信息和intrinsic。函数不占透镜畸变。

(worldPoints,reprojectionErrors)= triangulateMultiview (___)此外为每一个三维世界点返回均值reprojection错误使用所有输入参数在前面的语法。

(worldPoints,reprojectionErrors,validIndex)= triangulateMultiview (___)另外世界点返回有效和无效的指标。有效的点是坐落在镜头前。

例子

全部折叠

在工作区中加载图片。

imageDir = fullfile (toolboxdir (“愿景”),“visiondata”,“structureFromMotion”);imd = imageDatastore (imageDir);

加载预先计算的相机参数。

data =加载(fullfile (imageDir“cameraParams.mat”));

摄像机内参数。

intrinsic = data.cameraParams.Intrinsics;

计算功能的第一形象。

我= im2gray (readimage (imd, 1));我= undistortImage intrinsic);pointsPrev = detectSURFFeatures(我);[featuresPrev, pointsPrev] = extractFeatures(我pointsPrev);

负载相机姿势。

poseData =负载(“sfmCameraPoses.mat”);absPoses = poseData.absPoses;

创建一个imageviewset对象。

vSet = imageviewset;vSet = addView (vSet 1 absPoses(1),点= pointsPrev);

计算特性和匹配的图像。

我= 2:元素个数(imds.Files)我= im2gray (readimage (imd,我));我= undistortImage intrinsic);点= detectSURFFeatures(我);(特性,分)= extractFeatures(我点);vSet = addView (vSet, absPoses(我),点=点);pairsIdx = matchFeatures (featuresPrev、特性MatchThreshold = 5);vSet = addConnection (vSet,张,我、火柴= pairsIdx);featuresPrev =功能;结束

找点痕迹。

跟踪= findTracks (vSet);

相机的姿势。

cameraPoses =姿势(vSet);

找到3 d世界点。

[xyzPoints、错误]= triangulateMultiview(跟踪、cameraPoses intrinsic);z = xyzPoints (:, 3);idx =错误z > < 5 & 0 & z < 20;pcshow (xyzPoints (idx:), AxesVisibility =“上”VerticalAxis =“y”VerticalAxisDir =“向下”,MarkerSize = 30);持有plotCamera (cameraPoses、大小= 0.2);持有

图包含一个坐标轴对象。坐标轴对象包含51行类型的对象,文本,补丁,散射。

输入参数

全部折叠

跨多个图像匹配点,指定为一个N元组pointTrack对象。每个元素包含两个或两个以上的点匹配多个图像。

相机姿态信息,指定为一个两列的表。你可以获得cameraPoses从一个imageviewset通过使用对象提出了对象的功能。

描述
ViewID 视图的标识符pointTrack对象,指定为一个整数。
AbsolutePose 绝对的观点,作为一个指定rigidtform3d对象。

相机intrinsic,指定为一个cameraIntrinsics对象或一个元向量的cameraIntrinsics对象。是相机的数量。所有的图片都是一样被相机时,指定一个cameraIntrinsics对象。当图像被不同的相机,指定一个向量。

输出参数

全部折叠

3 d世界点,作为一个返回N3矩阵。每一行代表一个点和3 d世界的形式x,y,z]。N是三维世界的数量分。

数据类型:|

Reprojection错误,作为一个返回N元向量。计算reprojection错误,第一个功能项目每个世界点回每个图像。然后,在每个图像,函数计算检测和reprojected点之间的距离。每个元素的reprojectionErrors输出的平均reprojection错误对应点的世界worldPoints输出。棋盘显示点的图像中检测到一个小的距离3 d点reprojected形象。它们之间的距离是reprojection标记为错误。

有效性的点,作为一个返回1逻辑向量。有效的点,表示逻辑1(真正的),位于在镜头前。无效的点,表示逻辑0(),位于后面的相机。

世界点的有效性对相机的位置是由世界点情绪投射到图像使用摄像机矩阵和齐次坐标。世界上是有效的,如果由此产生的比例因子是正的。

提示

探测点,之前正确的图像通过使用透镜畸变undistortImage函数。或者,您可以直接undistort点使用undistortPoints函数。

引用

[1]理查德·哈特利,安德鲁Zisserman。计算机视觉中的多视图几何。第二版》。剑桥,英国 ;纽约:剑桥大学出版社,2003年。

版本历史

介绍了R2016a

全部展开