主要内容

findNearestNeighbors

在点云找到最近的邻居的一个点

描述

例子

(指数,经销)= findNearestNeighbors (ptCloud,,K)返回指数再对邻居查询的点在输入点云。ptCloud可以是一个组织或组织点云。再邻居查询的点计算通过使用基于kd tree的搜索算法。

例子

(指数,经销)= findNearestNeighbors (ptCloud,,K,camMatrix)再返回查询的邻居点在输入点云。输入点云是一个有组织的深度相机生成的点云。查询的邻居再点确定使用快速近似再搜索算法。

函数使用摄像机投影矩阵camMatrix知道相邻点之间的关系,因此,加速了最近邻搜索。然而,结果精度较低相比基于kd tree的方式。

请注意

  • 这个语法只支持组织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散射类型的对象。这些对象代表点云、查询点最近的邻居。

再找到邻居组织查询点的点云数据通过使用摄像机投影矩阵。计算摄像机投影矩阵从采样点云数据点及其对应的像点坐标。

一个有组织的点云数据装载到工作区。生成的点云是通过使用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);

指定一个查询点最近的邻居的数量。

点= (0.4 0.3 0.2);K = 20;

发现K的指数和距离最近的相邻点通过摄像机投影矩阵。使用点云的方法选择得到的点云数据最近的邻居。

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

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

图pcshow (ptCloud)pcshow (ptCloudB.Location“ob”)传说(“点云”,“最近的邻居的,“位置”,“southoutside”,“颜色”(1 1 1))

图包含一个坐标轴对象。坐标轴对象包含2散射类型的对象。这些对象代表点云,最近的邻居。

输入参数

全部折叠

点云,指定为一个pointCloud对象。

请注意

函数支持组织的点云数据生成金宝app只从RGB-D传感器。

查询点,指定为一个三元素向量的形式(x,y,z]

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

相机的投影矩阵,指定为一个4-by-3矩阵映射点二维图像点3 d世界。你可以计算camMatrix通过使用estimateCameraMatrix函数。

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

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

排序指标,指定为逗号分隔条“排序”和一个逻辑标量。当您设置排序真正的,返回的指标是升序排序基于距离查询点。关掉排序、设置排序

叶节点检查数量,指定为逗号分隔两人组成的“MaxLeafChecks”和一个整数。当你将这个值设置为,整个树搜索。当搜索整个树时,它产生精确的搜索结果。增加叶节点检查增加的数量的准确性,但会降低效率。

请注意

名称-值参数“MaxLeafChecks”只与基于kd tree的搜索方法是有效的。

输出参数

全部折叠

指数的储存点,作为一个列向量返回。向量包含线性指数K最近的邻居存储在点云。

距离查询点,作为一个列向量返回。向量包含之间的欧几里得距离查询点最近的邻国。

引用

[1]Muja、m和大卫·g·劳。最近的邻居“快速近似算法自动配置”。VISAPP国际会议在计算机视觉理论和应用程序。2009年。331 - 340页。

扩展功能

版本历史

介绍了R2015a