主要内容

findNeighborsInRadius

在点云的一个点的半径内找到邻居

描述

例子

指数经销) = findNeighborsInRadius (ptCloud半径返回指数输入点云中查询点半径内邻居的。ptCloud可以是无组织的或有组织的点云。使用基于kd树的搜索算法计算查询点半径内的邻居。

例子

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

函数使用摄像机投影矩阵camMatrix为了知道相邻点之间的关系,从而加快搜索速度。然而,与基于kd树的方法相比,结果有较低的准确性。

请注意

  • 此语法只支持RGB-D传感器产生的有组织的点云数据。

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

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

例子

全部折叠

将一组3-D坐标点加载到工作区中。

负载(“xyzPoints.mat”);

创建一个点云对象。

ptCloud = pointCloud (xyzPoints);

指定一个查询点和识别邻居的半径。

点= (0,0,3);半径= 0.5;

获取位于指定半径内的点的索引和距离。

[指标,经销]= findNeighborsInRadius (ptCloud,点,半径);

获取径向近邻点云数据。

ptCloudB =选择(ptCloud、指标);

显示点云。绘制查询点和相应的径向邻居。

图pcshow (ptCloud)plot3(点(1),(2),(3),‘*’) pcshow (ptCloudB。的位置,“r”)传说(“点云”“查询点”“径向邻居”“位置”“southoutside”“颜色”,[1 1 1])保持

利用摄像机投影矩阵在组织好的点云数据中找到查询点的径向邻域。从采样的点云数据点及其对应的图像点坐标计算摄像机投影矩阵。

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

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

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

stepSize = 100;

采样输入点云并将采样的3-D点坐标存储为点云对象。

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

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

[tempPtCloud, validIndices] = removeInvalidPoints (tempPtCloud);

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

worldPoints = tempPtCloud.Location;

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

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

根据图像和世界点坐标估计摄像机投影矩阵。

camMatrix = estimateCameraMatrix (imagePoints worldPoints);

指定一个查询点和识别邻居的半径。

点= [0.4 0.3 0.2];半径= 0.05;

得到径向近邻的指数和距离。使用点云方法选择获取相邻点的点云数据。

[指标,经销]= findNeighborsInRadius (ptCloud、点半径,camMatrix);ptCloudB =选择(ptCloud、指标);

显示在查询点周围找到的点云和径向邻居。

图pcshow (ptCloud);持有;pcshow (ptCloudB。的位置,“b”);传奇(“点云”“径向邻居”“位置”“southoutside”“颜色”,[1 1 1])保持

输入参数

全部折叠

点云,指定为pointCloud对象。

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

搜索半径,指定为一个标量。函数在指定的半径在输入点云中的查询点周围。

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

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:findNeighborsInRadius (ptCloud点,半径,“排序”,真的)

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

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

输出参数

全部折叠

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

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

参考文献

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

扩展功能

版本历史

介绍了R2015a

Baidu
map