4

我正在尝试使用集成在点云库(PCL)中的迭代最近点(ICP) 算法来对齐 2 组点云。我收到一个错误报告,说它找不到足够的对应点。我已经放宽了参数的条件:setEuclideanFitnessEpsilon(-1.797e+5)、setMaximumIterations(40) 和 setRANSACIterations(2000) 并且仍然有同样的问题..(我还没有找到很多关于这些条件值应该使用哪些或如何使用的信息是为了适当的对齐,所以在这方面的任何帮助也将不胜感激)

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

谢谢你的帮助

4

1 回答 1

8

如果您使用 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 可能会很痛苦。根据您的数据,您可能需要做更多的参数调整。

于 2013-06-24T18:56:33.493 回答