更简单的路径立即开始,在输入云 (IC) 上应用迭代最近点算法,通过始终使用最近点方法,使用固定参考云 (RC) 对其进行数学计算。 ICP 乐观地假设两个点云足够接近(旋转 R 和平移 T 的先验良好)并且配准将收敛,无需进一步初始对齐。
为了克服这个问题,人们致力于开发各种方法和想法来克服表现不佳的注册。与单纯的迭代配准算法相比,基于特征的配准首先致力于寻找两个点云之间更高级别的对应关系,以加快处理速度并提高准确性。这些方法被封装起来,然后嵌入到配准管道中,形成完整的配准模型。
-
数据采集:输入云和参考云被输入到算法中。
-
估计关键点:一个关键点(兴趣点 https://en.wikipedia.org/wiki/Interest_point_detection) 是点云中的一个点,具有以下特征:
- 它有一个清晰的、最好是数学上有充分根据的定义,
- 它在图像空间中有明确的位置,
- 兴趣点周围的局部图像结构局部信息内容丰富
点云中的这些显着点非常有用,因为它们的总和表征了点云,并有助于区分点云的不同部分。
pcl::NarfKeypoint
pcl::ISSKeypoint3D< PointInT, PointOutT, NormalT >
pcl::HarrisKeypoint3D< PointInT, PointOutT, NormalT >
pcl::HarrisKeypoint6D< PointInT, PointOutT, NormalT >
pcl::SIFTKeypoint< PointInT, PointOutT >
pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >
详细资料:PCL 关键点 - 文档 https://pointclouds.org/documentation/group__keypoints.html
-
描述关键点 - 特征描述符:检测到关键点后,我们继续为每个关键点计算一个描述符。 “局部描述符是点的局部邻域的紧凑表示。与描述完整对象或点云的全局描述符相反,局部描述符尝试仅在点周围的局部邻域中相似形状和外观,因此非常适合表示它从匹配上来说。”(德克·霍尔兹等人) https://www.ais.uni-bonn.de/papers/RAM_2015_Holz_PCL_Registration_Tutorial.pdf
pcl::FPFHEstimation< PointInT, PointNT, PointOutT >
pcl::NormalEstimation< PointInT, PointOutT >
pcl::NormalEstimationOMP< PointInT, PointOutT >
pcl::OURCVFHEstimation< PointInT, PointNT, PointOutT >
pcl::PrincipalCurvaturesEstimation< PointInT, PointNT, PointOutT >
pcl::IntensitySpinEstimation< PointInT, PointOutT >
详细资料:PCL 功能 - 文档 https://pointclouds.org/documentation/group__features.html
-
对应估计:下一个任务是找到点云中找到的关键点之间的对应关系。通常,人们会利用计算出的局部特征描述符,并将它们中的每一个与另一点云中相应的对应部分进行匹配。然而,由于来自相似场景的两次扫描不一定具有相同数量的特征描述符,因为一个云可以比另一个云拥有更多的数据,因此我们需要运行单独的对应拒绝过程。
pcl::registration::CorrespondenceEstimation< PointSource, PointTarget, Scalar >
pcl::registration::CorrespondenceEstimationBackProjection< PointSource, PointTarget, NormalT, Scalar >
pcl::registration::CorrespondenceEstimationNormalShooting< PointSource, PointTarget, NormalT, Scalar >
-
信件拒绝:执行信件拒绝的最常见方法之一是使用RANSAC https://en.wikipedia.org/wiki/RANSAC(随机样本共识)。但 PCL 附带了更多拒绝算法,值得仔细研究一下:
pcl::registration::CorrespondenceRejectorSampleConsensus< PointT >
pcl::registration::CorrespondenceRejectorDistance
pcl::registration::CorrespondenceRejectorFeatures::FeatureContainer< FeatureT >
pcl::registration::CorrespondenceRejectorPoly< SourceT, TargetT >
详细资料:PCL 模块注册 - 文档 https://pointclouds.org/documentation/group__registration.html
-
变换估计:计算两个点云之间的鲁棒对应关系后,使用绝对方向算法来计算 6DOF(6 个自由度)变换,该变换应用于输入云以匹配参考点云。有许多不同的算法方法可以做到这一点,但是 PCL 包括基于奇异值分解 https://en.wikipedia.org/wiki/Singular_value_decomposition(奇异值分解)。计算 4x4 矩阵来描述匹配点云所需的旋转和平移。
pcl::registration::TransformationEstimationSVD< PointSource, PointTarget, Scalar >
详细资料:PCL 模块注册 - 文档 https://pointclouds.org/documentation/group__registration.html