主要内容

findNearestNeighbors

在点云中找到点最近的邻居

描述

例子

指数经销) = findNearestNeighbors (ptCloudK返回指数查找输入点云中查询点的k近邻。ptCloud可以是无组织或有组织的点云。采用基于Kd-tree的搜索算法计算查询点的k近邻。

例子

指数经销) = findNearestNeighbors (ptCloudKcamMatrix返回输入点云中查询点的k近邻。输入点云是由深度相机生成的有组织点云。采用快速近似k近邻搜索算法确定查询点的k近邻。

该函数使用相机投影矩阵camMatrix了解相邻点之间的关系,从而加快最近邻搜索。然而,与基于kd树的方法相比,结果的准确性较低。

请注意

  • 此语法仅支持RGB-D传感器生成的金宝app有组织点云数据。

  • 您可以使用estimateCameraMatrix对给定的点云数据估计相机投影矩阵。

指数经销) = findNearestNeighbors (___名称,值除了前面语法中的输入参数外,还使用一个或多个名称-值参数指定选项。

例子

全部折叠

将一组三维坐标点加载到工作区中。

负载(“xyzPoints.mat”);

创建点云对象。

ptCloud = pointCloud (xyzPoints);

指定要识别的查询点和最近邻居的数量。

点= (0,0,0);K = 220;

求出K个最近邻点的指标和距离。

[指标,经销]= findNearestNeighbors (ptCloud点K);

显示点云。绘制查询点和它们最近的邻居。

图pcshow (ptCloud)plot3(点(1),(2),(3),“* r”) plot3 (ptCloud.Location(指标,1),ptCloud.Location(指标,2),ptCloud.Location(指标,3),‘*’)传说(“点云”“查询点”“最近的邻居的“位置”“southoutside”“颜色”,[1 1 1])保持

图中包含一个轴对象。轴对象包含3个类型为散点和线的对象。这些对象代表点云,查询点,最近的邻居。

利用相机投影矩阵在有组织的点云数据中找到一个查询点的k近邻。从采样点云数据点及其对应的图像点坐标计算相机投影矩阵。

将有组织的点云数据加载到工作区中。点云是使用Kinect深度传感器生成的。

ld =负载(“object3d.mat”);ptCloud = ld.ptCloud;

指定采样点云数据的步长。

stepSize = 100;

对输入点云进行采样,并将采样的三维点坐标存储为点云对象。

指数= 1:stepSize: ptCloud.Count;tempPtCloud =选择(ptCloud、指标);

从采样点云中去除无效点。

[tempPtCloud, validIndices] = removeInvalidPoints (tempPtCloud);

定义输入点云的三维世界点坐标。

worldPoints = tempPtCloud.Location;

求输入点云的三维点坐标对应的二维图像坐标。

[Y、X] = ind2sub([大小(ptCloud.Location, 1),大小(ptCloud.Location, 2)),指数);imagePoints = [X(validIndices)' Y(validIndices)'];

从图像和世界点坐标估计相机投影矩阵。

camMatrix = estimateCameraMatrix (imagePoints worldPoints);

指定要识别的查询点和最近邻居的数量。

Point = [0.4 0.3 0.2];K = 20;

利用摄像机投影矩阵求K个最近邻点的指标和距离。使用点云方法选择获取最近邻的点云数据。

[指标,经销]= findNearestNeighbors (ptCloud,点K camMatrix);ptCloudB =选择(ptCloud、指标);

显示点云和查询点最近的邻居。

图pcshow (ptCloud)pcshow (ptCloudB。的位置,“ob”)传说(“点云”“最近的邻居的“位置”“southoutside”“颜色”,[1 1 1])保持

图中包含一个轴对象。axis对象包含两个散点类型的对象。这些对象代表点云,最近的邻居。

输入参数

全部折叠

点云,指定为pointCloud对象。

请注意

该功能支持仅由RGB-D传金宝app感器生成的有组织点云数据。

查询点,指定为三元素向量的形式xyz

最近的邻居数,指定为正整数。

相机投影矩阵,指定为一个4乘3的矩阵,它将3-D世界点映射到2-D图像点。你可以计算camMatrix通过使用estimateCameraMatrix函数。

名称-值参数

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:findNearestNeighbors (ptCloud点k“排序”,真的)

排序索引,指定为逗号分隔的对“排序”和一个逻辑标量。当您设置排序真正的,返回的索引根据到查询点的距离升序排序。要关闭排序,请设置排序

要检查的叶节点数目,指定为逗号分隔的对,包括“MaxLeafChecks”和一个整数。当您将此值设置为,则搜索整个树。当搜索整个树时,它会生成精确的搜索结果。增加用于检查的叶节点数量可以提高准确性,但会降低效率。

请注意

名称-值参数“MaxLeafChecks”仅对基于kd树的搜索方法有效。

输出参数

全部折叠

存储点的索引,作为列向量返回。向量包含存储在点云中最近邻的K个线性指标。

到查询点的距离,作为列向量返回。向量包含查询点与其最近邻居之间的欧氏距离。

参考文献

Muja M.和David G. Lowe。“具有自动算法配置的快速近似最近邻”。在VISAPP国际计算机视觉理论与应用会议上.2009.331 - 340页。

扩展功能

介绍了R2015a