我试图使用迭代最近点云(ICP)算法对齐2组点云,该算法集成在点云库( Point Cloud Library )中。我收到一份错误报告说它找不到足够的通信点。我已经放宽了参数的条件: setEuclideanFitnessEpsilon(-1.797e+5)、setMaximumIterations(40)和setRANSACIterations(2000),但仍然存在相同的问题。(我没有找到很多关于这些条件值应该是什么或如何对齐的信息,所以在这方面对的任何帮助也是非常感谢的)
我怀疑这个问题与我的云中有许多空数据点有关,我用NULL (0)值标记了这个值。在使用PCL时,这样做合适吗?PCL有空标准值吗?我显然不希望算法在试图对齐数据集时考虑这些空点。
谢谢你的帮忙
发布于 2013-06-24 18:56:33
如果您正在使用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可能会很痛苦。根据您的数据,您可能需要做更多的参数调整。
https://stackoverflow.com/questions/17281470
复制相似问题