Filtering PCL-过滤出密集区域未发现的点

Filtering PCL-过滤出密集区域未发现的点,filtering,point-cloud-library,point-clouds,Filtering,Point Cloud Library,Point Clouds,我有一个物体的点云,然后我从位于特定平面内的所有点构造一个点云。此点云的外观如下所示: 我想过滤掉矩形中没有的所有额外点。当我得到平面的所有点时,有一些不相关的点恰好在同一平面上。我想过滤掉这些,这样我可以专门处理矩形中的点 我对点云和对象建模非常陌生,所以我很难知道我在寻找什么。我尝试过使用,但(并不令人惊讶地)当这些额外的点本身有点密集时,它并不总是得到所有额外的点。如果我将参数更改为在过滤中更具攻击性,它将开始从我感兴趣的矩形中删除点 我知道有一大堆可用的,但我真的不知道它们是如何工作的

我有一个物体的点云,然后我从位于特定平面内的所有点构造一个点云。此点云的外观如下所示:

我想过滤掉矩形中没有的所有额外点。当我得到平面的所有点时,有一些不相关的点恰好在同一平面上。我想过滤掉这些,这样我可以专门处理矩形中的点

我对点云和对象建模非常陌生,所以我很难知道我在寻找什么。我尝试过使用,但(并不令人惊讶地)当这些额外的点本身有点密集时,它并不总是得到所有额外的点。如果我将参数更改为在过滤中更具攻击性,它将开始从我感兴趣的矩形中删除点

我知道有一大堆可用的,但我真的不知道它们是如何工作的,或者哪一个最适合解决这个问题。我可以通过尝试和错误的每一个,但我希望有人能给我指出正确的方向。有什么办法可以得到我想要的最终结果吗?

你可以试试:

  • 根据云的尺寸和密度,将与“r”(
    setRadiusSearch
    )和“k”(
    setMinNeighborsInRadius
    )的值一起使用。按照dumb的规则,这些值越高,过滤您感兴趣的点的机会就越大

  • 如果您知道实际感兴趣的点的坐标,请使用这些坐标构建一个带有
    setFilterLimits
    的“边界框”,这样框外的所有内容都将被过滤

正如您所说,当您尝试更改SOR过滤器的参数时,它开始删除您不希望删除的点,可能直通过滤器是您的最佳选择


希望这能对你有所帮助。

像大卫一样,我会尝试使用Radius。假设您的数据主要是二维的-确定矩形内云的密度(D点/r²)。矩形中最薄弱的一点是只有D/4邻域的角点(最大半径不大于较短的边)。使用安全系数X,您现在可以过滤其附近密度小于D/(X*4)的所有点。从半径r开始,半径r等于矩形的较短边,然后删除邻域小于(D*r²)/(4*X)的点,以获得更大、更远的异常值簇。通过减小半径重复此过程,以捕获离矩形更近的较小簇。

点云是否有组织?如果是,您可以尝试使用中值滤波器?PCL仅为点云的z维提供了它。您可能需要修改点云,以使其沿其他维度(x,y)进行过滤。

我最终使用了区域增长分割(),然后我使用具有最多点的任何群集。这似乎适合我的需要。有什么理由认为这是个坏主意吗?