Point cloud library PCL返回的IterativeClosesPoint类中的“getFitnessScore()”是什么单位?

Point cloud library PCL返回的IterativeClosesPoint类中的“getFitnessScore()”是什么单位?,point-cloud-library,Point Cloud Library,我使用点云库中的pcl::IterativeClosestPoint方法。 到目前为止,它的文档似乎处于脱机状态。 在谷歌这里。而且是一个 可以调用icp.getFitnessScore()获取两个云点之间的均方距离。我就是找不到关于这是什么类型的装置的信息。有人知道我得到的数字是什么意思吗?例如,我的输出是:00003192。这似乎很低,但我不知道它是米、厘米、英尺还是别的什么 多谢各位 icp.getFitnessScore()使用的是什么类型的单位 正如Joy在评论中所说,单位与您的输入数

我使用点云库中的
pcl::IterativeClosestPoint
方法。 到目前为止,它的文档似乎处于脱机状态。 在谷歌这里。而且是一个

可以调用
icp.getFitnessScore()
获取两个云点之间的均方距离。我就是找不到关于这是什么类型的装置的信息。有人知道我得到的数字是什么意思吗?例如,我的输出是:
00003192
。这似乎很低,但我不知道它是米、厘米、英尺还是别的什么

多谢各位

icp.getFitnessScore()使用的是什么类型的单位

正如Joy在评论中所说,单位与您的输入数据相同
例如,您的输入点云可能来自。将存储一个点,如
v9.322-1.0778 0.44997
icp.getFitnessScore()
返回的数字与点坐标的单位相同


有人知道我得到的数字是什么意思吗

您得到的数字表示从源中的每个点到目标中最近点的均方距离

也就是说,如果假设源中的每个点在目标中都有一个对应的点,并且对应集来自最近的点数据关联,那么该数字表示所有对应之间的均方距离。这可以从下面的源代码中看到

为了更好地理解该函数,您可能希望过滤掉它们之间有很大距离的对应关系。(两点云可能仅部分重叠。)该函数实际上有一个可选参数
max_range
,用于执行此操作


方法
getFitnessScore()
pcl::Registration
中定义,pcl::IterativeClosesPoint的基类。可选参数
max\u range
默认为
std::numeric\u limits::max()
,如下所示:

/**\brief获取欧几里德适应度得分(例如,从源到目标的平方距离之和)
*\param[in]max\u range点与其在目标中的对应关系之间的最大允许距离
*(默认值:double::max)
*/
内联双精度
getFitnessScore(双倍最大值范围=标准::数值限制::最大值());

该功能的主要功能是:

模板内联双精度
pcl::注册::getFitnessScore(双倍最大值范围)
{
双倍健康指数=0.0;
//使用最终转换转换输入数据集
点云源输入_转换;
transformPointCloud(*输入,输入,转换,最终转换);
std::向量nn_指数(1);
std::向量nn_区(1);
//对于源数据集中的每个点
int nr=0;
对于(size_t i=0;i近邻搜索(输入转换点[i],1,nn索引,nn距离);
//处理遮挡(不完整目标)
if(nn_dists[0]0)
返回值(健康指数/nr);
其他的
返回(std::numeric_limits::max());
}

刻度取决于您的输入数据。如果以米为单位,则输出以米为单位。