【发布时间】:2016-09-18 00:11:01
【问题描述】:
我想使用 2D (xy) 标准在我的 3D (xyz) 中搜索点云。
即"查找 x=2 AND y=4 附近的所有点,不管它们的 Z 坐标如何"
从概念上讲,我认为我可以通过创建只考虑 x 和 y 的 KD 树来解决这个问题,但我似乎无论如何都找不到使用 PCL 工具来做到这一点。
有没有好的(已经写好的)方法来做到这一点?还是我必须实现自己的 [可能较慢] Kd 树?
【问题讨论】:
我想使用 2D (xy) 标准在我的 3D (xyz) 中搜索点云。
即"查找 x=2 AND y=4 附近的所有点,不管它们的 Z 坐标如何"
从概念上讲,我认为我可以通过创建只考虑 x 和 y 的 KD 树来解决这个问题,但我似乎无论如何都找不到使用 PCL 工具来做到这一点。
有没有好的(已经写好的)方法来做到这一点?还是我必须实现自己的 [可能较慢] Kd 树?
【问题讨论】:
如果您正在考虑使用 KD 树,那么您对检索到的点的数量或距离都会有一些限制。
在你的情况下,这应该是距离,所以,你得到了(x-dx, x+dx) and (y-dy, y+dy)之间的点。
在 pcl 中做到这一点的一种方法是使用pcl::getPointsInBox()
在给定边界的盒子中获取一组点。
参数
cloud the point cloud data message min_pt the minimum bounds max_pt the maximum bounds indices the resultant set of point indices residing in the box
所以,如果你想得到 x(1.25, 1.75) 和 y(2.25, 2.75) 之间的点,你必须创建两个 MinMax 点,如下所示:
PointMin(1.25, 2.25, min_z)
PointMax(1.75, 2.75, max_z)
min_z & max_z 可以设置为 (-15, 40) 的任意低和高,让您获得指定 (x,y) 范围内的所有点,而不考虑 (z)
【讨论】: