主要内容

worldpointset

管理3-D到2-D的点对应

描述

worldpointset对象存储了三维世界点和二维图像点之间的对应关系。你可以使用worldpointset对象的imageviewset对象来管理图像和地图数据,用于运动结构、视觉里程测量和视觉同步定位和测绘(SLAM)。

创建

描述

例子

wpSet= worldpointset创建具有默认属性的worldpointset对象。使用对象函数执行诸如添加、修改或删除通信、查找视图中的点以及查找点的视图等操作。

属性

全部展开

此属性是只读的。

三维世界点,指定为-by-3矩阵,行包含[xyz世界分。为3d世界点数。

此属性是只读的。

与世界点关联的视图的标识符,指定为N-element整数的行向量。

此属性是只读的。

3-D到2-D点对应关系,指定为三列表。

描述
PointIndex 每一行包含一个世界点的线性索引。
ViewId 每一行都包含一个1 × -N向量指定与相应世界点相关联的视图的id。N是与世界点相关的视图数。
FeatureIndex 每一行都包含一个1 × -N向量,指定与世界点对应的特征点的指标。的对应元素指定的视图中特征点的索引ViewID细胞。

此属性是只读的。

每个世界点的平均观看方向,指定为-by-3矩阵,其中是点数。观察方向提供了一个可以观察到三维点的视角的估计值。平均观看方向是所有从世界点指向相关视图的摄像机中心的单位向量的平均值。当在系统中引入一个新的摄像头视图时,可以根据距离限制设置的范围和DistanceLimits

一个立方体对象和三个视图(表示view1、view2和viewwn)用一个从对象的角点到三个视图中的每个视图的向量来描述。第四个不指向视图的向量被标记为“视图方向”。在视图附近画两条弧,标记为“距离范围”。

此属性是只读的。

表示观察到每个世界点的最小和最大距离。

三维点观测的距离限制,指定为-by-2向量,表示最小和最大距离是点数。这个范围表示可以观察到的3-D点的距离。当在系统中引入一个新的摄像头视图时,可以根据距离限制设置的范围和ViewingDirection

一个立方体对象和三个视图(表示view1、view2和viewwn)用一个从对象的角点到三个视图中的每个视图的向量来描述。第四个不指向视图的向量被标记为“视图方向”。在视图附近画两条弧,标记为“距离范围”。

此属性是只读的。

代表视图的View id,用-元素列向量,其中是点数。代表视图对应于每个世界点的代表视图中包含代表特征的视图。一个代表性的特征是与世界点相关的所有特征描述符的中位数。

此属性是只读的。

代表性特征描述符索引,指定为-元素列向量,其中是点数。索引值对应于包含每个世界点的代表性特征描述符的视图。

此属性是只读的。

三维世界点的数量,指定为一个标量。

对象的功能

addWorldPoints 将世界点添加到世界点集
removeWorldPoints 从世界点集中移除世界点
updateWorldPoints 更新世界点集中的世界点
addCorrespondences 更新世界点集中的世界点
removeCorrespondences 从世界点集中删除3-D到2-D的对应关系
updateCorrespondences 更新世界点集中的3-D到2-D对应关系
updateLimitsAndDirection 更新距离限制和观看方向
updateRepresentativeView 更新代表视图ID和对应的特征索引
findViewsOfWorldPoint 找到观察一个世界观的观点
findWorldPointsInTracks 找到对应于点轨迹的世界点
findWorldPointsInView 找到观察到的世界观点

例子

全部折叠

加载一个垫,将包含立体声参数的文件导入到工作区中。

负载(“webcamsSceneReconstruction.mat”);

将一对立体图像读入工作区。

I1 = imread(“sceneReconstructionLeft.jpg”);I2 = imread(“sceneReconstructionRight.jpg”);

不扭曲图像。

I1 = undistortion timage (I1, stereooparams . cameraparameters1);I2 = undistortion timage (I2,stereo oparams . cameraparameters2);

定义感兴趣的矩形区域(ROI),格式为[X y宽度高度]。

roi = [30 30 size(i1,2)-30 size(i1,1)-30];

利用ROI从两个图像中检测和提取加速鲁棒特征(SURF)。

imagePoints1 = detectSURFFeatures(im2gray(I1),“投资回报”roi);imagePoints2 = detectSURFFeatures(im2gray(I2),“投资回报”roi);[feature1,validPoints1] = extractFeatures(im2gray(I1),imagePoints1,“正直”,真正的);[feature2,validPoints2] = extractFeatures(im2gray(I2),imagePoints2,“正直”,真正的);

将提取的特征相互匹配。

indexPairs = matchFeatures(feature1,feature2);

计算3d世界的点数。

matchedPoints1 = validPoints1(indexPairs(:,1));matchedPoints2 = validPoints2(indexPairs(:,2));worldPoints = triangulate(matchedPoints1,matchedPoints2, stereooparams);

创建一个worldpointset对象来管理通信。

wpSet = worldpointset;

把世界点数加到worldpointset

[wpSet,newPointIndices] = addWorldPoints(wpSet,worldPoints);

将3-D到2-D点对应到worldpointset

wpSet = addmappings (wpSet,1,newPointIndices,indexPairs(:,1));wpSet = addmappings (wpSet,2,newPointIndices,indexPairs(:,2));

显示世界点。

pcshow (wpSet。WorldPoints,“VerticalAxis”“y”“VerticalAxisDir”“下来”“MarkerSize”, 45岁)

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

在R2020b中引入

全部展开

另请参阅

功能

对象

Baidu
map