使用点云库 ICP 进行 2D 点匹配
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
做什么?
我在这里找到,在第 5 页,
如果误差平方和小于用户定义的阈值,则找到了解决方案。 通过设置设置欧几里得健身Epsilon(距离(
然而,即使在设置::setEuclideanFitnessEpsilon(1)
之后,我也得到了50ish
的getFitnessScore()
,这比根本不设置欧几里得适应度更糟糕。
- 我可以编写一些自定义规则集来拒绝通信吗?我知道
CorrespondenceRejector
存在,但是是否有任何漂亮而简单的教程可用?
- 对应映射不应该是一对一的吗?
您需要设置:setUseReciprocalCorrespondences(true)
在设置 :
- :setEuclideanFitnessEpsilon(1( 之后,我得到了 50 的 getFitnessScore((,这比根本不设置欧几里得健身更糟糕。
有几种可能的停止条件:
setMaximumIterations()
:达到最大迭代次数 迭代次数setTransformationEpsilon()
: 区别 以前的转换和当前估计的转换 小于阈值setEuclideanFitnessEpsilon()
: 总和 欧几里得平方误差小于阈值
- 我可以编写一些自定义规则来拒绝通信吗?我知道通信拒绝器存在,但是有没有可用的漂亮而简单的教程?
我不熟悉这方面的任何教程,但您可以从现有的 CorrespondenceRejector 派生类中学习。例如:correspondence_rejection_median_distance.h correspondence_rejection_median_distance.cpp
相关文章:
- 如何在OpenGL(GLFW,很高兴)中进行2D缩放?
- 通过功能进行2D矢量输入和显示
- 根据组件 1、2(和 3)对空间 (2D/3D) 向量进行排序
- 使用 std::sort 对 C 样式的 2D 数组进行部分排序
- 使用点云库 ICP 进行 2D 点匹配
- 当我在将文件读取到C字符串的2D数组后尝试对任何内容进行定制时,C++分段错误
- Unordered_map使用 2D 点进行查找
- 通过 std::sort 对 C 2D 数组进行排序
- 如何在不通过插入排序更改原始矢量的情况下对 2D 矢量进行排序
- 如何在 2d 矢量上进行内存设置
- 如何解决在使用动态 2D 数组进行矩阵乘法的 MPI 进行并行编程时的问题
- 对通过引用传递的 2d 向量进行排序
- 我们如何在 c++ 中使用 std::sort 对 2D 字符串数组进行排序
- 在C++中使用 2D 数组进行交换
- 使用 2D 阵列进行路径规划
- 按一行对2D数组进行排序
- 如何对主对角线上方的 2D 数组中的元素进行排序
- 仅使用 iostream 按字母顺序对 2d 数组进行气泡排序
- 根据某一行对整个 2D 向量进行排序
- C++:对2D数组进行基于1行的排序