使用点云库 ICP 进行二维点匹配
Using Point Cloud Library ICP for 2D point matching
我正在使用 PCL 的 ICP 进行 2D 点匹配,我使用 ::correspondences_
找到源 (index_query
) 到目标 (index_match
) 的对应关系和观察到许多源索引指向相同的目标索引,如下所示。
SrcIndex: 3 -> TgtIndex: 800
SrcIndex: 4 -> TgtIndex: 800
SrcIndex: 5 -> TgtIndex: 801
SrcIndex: 6 -> TgtIndex: 801
- 对应映射不应该是一一对应吗?
setEuclideanFitnessEpsilon
是做什么的?
我发现 here 在第 5 页
A solution was found if the sum of squared errors is smaller than a user-defined threshold. set via setEuclideanFitnessEpsilon(distance)
然而,即使在设置 ::setEuclideanFitnessEpsilon(1)
之后,我得到 getFitnessScore()
的 50ish
,这比根本不设置欧几里得健身更糟糕。
- 我可以写一些自定义规则来拒绝信件吗?我知道
CorrespondenceRejector
存在,但是否有可用的简单教程?
- Shouldn't the correspondence mapping be one to one?
您需要设置:
setUseReciprocalCorrespondences(true)
- after setting ::setEuclideanFitnessEpsilon(1), I got a getFitnessScore() of 50ish which is worse than not setting euclidean fitness at all.
有几种可能的停止条件:
setMaximumIterations()
:迭代次数达到最大值
迭代次数
setTransformationEpsilon()
:两者的区别
先前的转换和当前估计的转换
小于阈值
setEuclideanFitnessEpsilon()
:总和
欧氏平方误差小于阈值
- Can I write some custom set of rules to reject correspondences? I know CorrespondenceRejector exists but is there any nice and simple tutorial available?
我不熟悉这方面的任何教程,但您可以从现有的 CorrespondenceRejector 派生中学习 类。例如:correspondence_rejection_median_distance.h correspondence_rejection_median_distance.cpp
我正在使用 PCL 的 ICP 进行 2D 点匹配,我使用 ::correspondences_
找到源 (index_query
) 到目标 (index_match
) 的对应关系和观察到许多源索引指向相同的目标索引,如下所示。
SrcIndex: 3 -> TgtIndex: 800
SrcIndex: 4 -> TgtIndex: 800
SrcIndex: 5 -> TgtIndex: 801
SrcIndex: 6 -> TgtIndex: 801
- 对应映射不应该是一一对应吗?
setEuclideanFitnessEpsilon
是做什么的?
我发现 here 在第 5 页
A solution was found if the sum of squared errors is smaller than a user-defined threshold. set via setEuclideanFitnessEpsilon(distance)
然而,即使在设置 ::setEuclideanFitnessEpsilon(1)
之后,我得到 getFitnessScore()
的 50ish
,这比根本不设置欧几里得健身更糟糕。
- 我可以写一些自定义规则来拒绝信件吗?我知道
CorrespondenceRejector
存在,但是否有可用的简单教程?
- Shouldn't the correspondence mapping be one to one?
您需要设置:
setUseReciprocalCorrespondences(true)
- after setting ::setEuclideanFitnessEpsilon(1), I got a getFitnessScore() of 50ish which is worse than not setting euclidean fitness at all.
有几种可能的停止条件:
setMaximumIterations()
:迭代次数达到最大值 迭代次数setTransformationEpsilon()
:两者的区别 先前的转换和当前估计的转换 小于阈值setEuclideanFitnessEpsilon()
:总和 欧氏平方误差小于阈值
- Can I write some custom set of rules to reject correspondences? I know CorrespondenceRejector exists but is there any nice and simple tutorial available?
我不熟悉这方面的任何教程,但您可以从现有的 CorrespondenceRejector 派生中学习 类。例如:correspondence_rejection_median_distance.h correspondence_rejection_median_distance.cpp