主要内容

triangulateMultiview

在多个图像中匹配的世界点的3-D位置

描述

例子

世界观点= triangulateMultiview (pointTrackscameraPoses内在机构返回3-D世界点的位置,对应于用校准相机拍摄的多个图像中匹配的点。pointTracks指定匹配点数组。cameraPoses内在机构分别指定相机的姿态信息和内在特征。该功能不考虑透镜畸变。

世界观点重新评论错误) = triangulateMultiview (___另外,使用先前语法中的所有输入参数返回每个3-D世界点的平均丢注错误。

世界观点重新评论错误validIndex) = triangulateMultiview (___另外返回有效和无效的世界点的指标。有效点位于摄像机前面。

例子

全部折叠

在工作区中加载图像。

imagedir = fullfile(toolboxdir(“愿景”),“visiondata”“structureFromMotion”);图像= Imageet(imagedir);

加载预计算的摄像机参数。

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

获取相机内在参数。

intrinsic = data.cameraParams.Intrinsics;

计算第一张图像的特征。

i = im2gray(读取(图像,1));我= undostortimage(i,内在的);pointsprev = detectsurffeatures(i);[特征普通,pointsprev] =提取物(i,pointprev);

载入相机位置和方向。

负载(fullfile (imageDir“cameraPoses.mat”));

创建一个imageviewset目的。

vset = imageviewset;vset = addview(vset,1,rigid3d(方向(:,:1),位置(1,:)),...“点”, pointsPrev);

计算特征和匹配的其余图像。

i = 2:images.count i = im2gray(读取(图像,i));我= undostortimage(i,内在的);点=检测(i);[特征,点] =提取物(i,点);vset = addview(vset,i,rigid3d(方向(:,:,i),位置(i,i :)),...“点”分);pairsIdx = matchFeatures (featuresPrev、特性'matchthreshold'5);vset = addConnection(vset,i-1,i,'火柴', pairsIdx);featuresPrev =功能;结束

查找点轨道。

跟踪= findTracks (vSet);

让相机姿势。

Cameraposes =姿势(vset);

找到三维世界点。

[XYZPOINTS,错误] = TRIGULATEMULTIEWIEW(曲目,Camerapose,内在);z = XYZPOINTS(:,3);idx =错误<5&z> 0&z <20;pcshow(xyzpoints(idx,:),'verticalaxis'“y”“VerticalAxisDir”'下''Markersize', 30);持有Plotcamera(Cameraposes,“大小”, 0.2);持有离开

图中包含一个轴对象。axis对象包含51个类型为line, text, patch, scatter的对象。

输入参数

全部折叠

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

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

两列的表

柱子 描述
ViewID 查看标识符Pointtack.对象,指定为整数。
AbsolutePose 视图的绝对姿态,指定为rigid3d目的。你可以获得AbsolutePose来自imageviewset通过使用的对象提出了对象的功能。

三列的表

柱子 描述
ViewID 查看标识符Pointtack.对象,指定为整数。
取向 相机方向,指定为3×3旋转矩阵。
位置 摄像机位置坐标,指定为形式为[xyz]并在父轴的数据单元中表示。

相机内部,指定为摄像机毒品对象或一个-element矢量摄像机毒品对象。是相机姿态的数量。当所有图像都被同一台相机捕获时,指定一个摄像机毒品目的。当图像由不同的摄像机捕获时,请指定向量。

输出参数

全部折叠

三维世界要点,作为一个返回N3矩阵。每一行代表一个三维世界点,其形式为[xyz]。N是三维世界点数。

数据类型:|

重投影错误,返回为N- 再生矢量。为了计算重新注入错误,首先将每个世界投射到每个图像中。然后,在每个图像中,该功能计算检测到的距离和repeteed点之间的距离。每个元素重新评论错误中对应世界点的平均重投影误差世界观点输出。棋盘的部分,显示在图像中检测到的点,从恢复图像的3-D点距离距离很小。它们之间的距离标记为重注错误。

世界点数的有效性,返回为-1-1逻辑向量。有效点,表示为逻辑1真的),位于摄像机前面。无效点,表示为逻辑0),位于摄像机后面。

世界点相对于相机位置的有效性是通过使用相机矩阵和齐次坐标将世界点投影到图像上来确定的。如果得到的比例因子是正的,世界点是有效的。

提示

在检测这些点之前,先利用利用该方法对图像进行透镜畸变校正undistortImage函数。或者,您可以直接使用undistortPoints函数。

参考

哈特利,理查德和安德鲁·齐瑟曼。计算机视觉中的多视图几何。剑桥,英国;纽约;剑桥大学出版社,2003。

介绍了R2016a