C++ 使用点云库ICP进行二维点匹配

C++ 使用点云库ICP进行二维点匹配,c++,computer-vision,point-cloud-library,point-clouds,C++,Computer Vision,Point Cloud Library,Point Clouds,我使用PCL的ICP进行2D点匹配,我使用::对应关系查找源(索引)到目标(索引)的对应关系,并观察到许多源索引指向相同的目标索引,如下所示 SrcIndex: 3 -> TgtIndex: 800 SrcIndex: 4 -> TgtIndex: 800 SrcIndex: 5 -> TgtIndex: 801 SrcIndex: 6 -> TgtIndex: 801 对应映射不应该是一对一吗 seteuclideanfitnesspsilon做什么 我在第5页发现

我使用PCL的ICP进行2D点匹配,我使用
::对应关系
查找源(
索引
)到目标(
索引
)的对应关系,并观察到许多源索引指向相同的目标索引,如下所示

SrcIndex: 3 -> TgtIndex: 800
SrcIndex: 4 -> TgtIndex: 800
SrcIndex: 5 -> TgtIndex: 801
SrcIndex: 6 -> TgtIndex: 801
  • 对应映射不应该是一对一吗
  • seteuclideanfitnesspsilon
    做什么 我在第5页发现

    如果平方误差之和小于用户定义的阈值,则找到解决方案。通过SetEuclideAnFitnessPsilon设置(距离)

    然而,即使在设置了
    ::seteuclideanfitnesspsilon(1)
    ,我还是得到了
    getFitnessScore()
    50ish
    ,这比根本不设置欧几里德适应度更糟糕

  • 我可以编写一些自定义规则集来拒绝通信吗?我知道<代码>存在<代码>但是有没有好的简单的教程
  • 对应映射不应该是一对一吗
  • 您需要设置:

  • 在设置::SetEuclideAnfitnessPsilon(1)之后,我得到的getFitnessScore()为50ish,这比根本不设置euclidean fitness更糟糕
  • 有几种可能的停止标准:

    • setMaximumIterations()
      :迭代次数达到最大次数 迭代次数
    • setTransformationEpsilon()
      :两者之间的差异 先前转换和当前估计转换 小于阈值
    • seteuclideanfitnessipsilon()
      :的和 欧几里得平方误差小于阈值
  • 我可以编写一些自定义规则集来拒绝通信吗?我知道有一些简单的教程,但是有没有好的简单的教程呢
  • 我不熟悉这方面的任何教程,但您可以从现有的派生类中学习。例如: