使用迭代最近点(ICP)时,如何在点云库(PCL)中标记NULL数据

How to mark NULL data in Point Cloud Library (PCL) when using Iterative Closest Point (ICP)

本文关键字:PCL 数据 NULL 最近 迭代 ICP      更新时间:2023-10-16

我正在尝试使用集成在点云库(PCL)中的迭代最近点算法来对齐两组点云。我收到一份错误报告,说它找不到足够的对应点。我已经放宽了参数的条件:setEuclideanFitnessEpsilon(-1.797e+5)、setMaximumIterations(40)和setRANSACIteratures(2000),但仍然存在相同的问题。。(我还没有找到太多关于这些条件值应该是什么或如何进行正确对齐的信息,所以在这方面的任何帮助也将不胜感激)

我怀疑这个问题与我的云中有许多NULL数据点有关,我用值NULL(0)标记了这些数据点。在使用PCL时,这是否正确?PCL是否有NULL标准值?我显然不希望算法在试图对齐数据集时考虑那些空点。。

感谢您的帮助

如果使用PCL,无效数据的默认值不是NULL,而是NaN。因此,如果要将点标记为无效,则应首先包含<limits>文件,然后将位置设置为"std::numeric_limits::quiet_NaN()"。它通常是这样做的

const float bad_point = std::numeric_limits<float>::quiet_NaN();
if( is_invalid_point )
    p.x = p.y = p.z = bad_point;

但无论如何,配置ICP可能会很痛苦。根据您的数据,您可能需要进行更多的参数调整。