cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
点云配准 / Point Cloud Registration

Typedefs

using toolbox::pcl::ransac_registration = ransac_registration_t< float >
 
using toolbox::pcl::prosac_registration = prosac_registration_t< float >
 
using toolbox::pcl::four_pcs_registration = four_pcs_registration_t< float >
 
using toolbox::pcl::super_four_pcs_registration = super_four_pcs_registration_t< float >
 
using toolbox::pcl::coarse_registration_result = registration_result_t< float >
 
using toolbox::pcl::ransac_registration_d = ransac_registration_t< double >
 
using toolbox::pcl::prosac_registration_d = prosac_registration_t< double >
 
using toolbox::pcl::four_pcs_registration_d = four_pcs_registration_t< double >
 
using toolbox::pcl::super_four_pcs_registration_d = super_four_pcs_registration_t< double >
 
using toolbox::pcl::coarse_registration_result_d = registration_result_t< double >
 
using toolbox::pcl::point_to_point_icp = point_to_point_icp_t< float >
 
using toolbox::pcl::point_to_plane_icp = point_to_plane_icp_t< float >
 
using toolbox::pcl::generalized_icp = generalized_icp_t< float >
 
using toolbox::pcl::aa_icp = aa_icp_t< float >
 
using toolbox::pcl::ndt = ndt_t< float >
 
using toolbox::pcl::fine_registration_result = fine_registration_result_t< float >
 
using toolbox::pcl::point_to_point_icp_d = point_to_point_icp_t< double >
 
using toolbox::pcl::point_to_plane_icp_d = point_to_plane_icp_t< double >
 
using toolbox::pcl::generalized_icp_d = generalized_icp_t< double >
 
using toolbox::pcl::aa_icp_d = aa_icp_t< double >
 
using toolbox::pcl::ndt_d = ndt_t< double >
 
using toolbox::pcl::fine_registration_result_d = fine_registration_result_t< double >
 

Functions

template<typename DataType >
Eigen::Matrix< DataType, 4, 4 > toolbox::pcl::complete_registration (const std::shared_ptr< toolbox::types::point_cloud_t< DataType > > &source, const std::shared_ptr< toolbox::types::point_cloud_t< DataType > > &target, bool use_coarse=true, const std::string &fine_algorithm="p2p")
 配准算法选择指南 / Registration algorithm selection guide
 

Detailed Description

Typedef Documentation

◆ aa_icp

using toolbox::pcl::aa_icp = typedef aa_icp_t<float>

◆ aa_icp_d

using toolbox::pcl::aa_icp_d = typedef aa_icp_t<double>

◆ coarse_registration_result

◆ coarse_registration_result_d

◆ fine_registration_result

◆ fine_registration_result_d

◆ four_pcs_registration

◆ four_pcs_registration_d

◆ generalized_icp

◆ generalized_icp_d

◆ ndt

using toolbox::pcl::ndt = typedef ndt_t<float>

◆ ndt_d

using toolbox::pcl::ndt_d = typedef ndt_t<double>

◆ point_to_plane_icp

◆ point_to_plane_icp_d

◆ point_to_point_icp

◆ point_to_point_icp_d

◆ prosac_registration

◆ prosac_registration_d

◆ ransac_registration

◆ ransac_registration_d

◆ super_four_pcs_registration

◆ super_four_pcs_registration_d

Function Documentation

◆ complete_registration()

template<typename DataType >
Eigen::Matrix< DataType, 4, 4 > toolbox::pcl::complete_registration ( const std::shared_ptr< toolbox::types::point_cloud_t< DataType > > &  source,
const std::shared_ptr< toolbox::types::point_cloud_t< DataType > > &  target,
bool  use_coarse = true,
const std::string &  fine_algorithm = "p2p" 
)

配准算法选择指南 / Registration algorithm selection guide

粗配准算法选择 / Coarse Registration Selection:

  1. 是否有对应关系 / Whether correspondences are available
    • 有对应关系:使用RANSAC或PROSAC / With correspondences: use RANSAC or PROSAC
      • 质量排序可用:使用PROSAC(更快) / Quality ordering available: use PROSAC (faster)
      • 无质量信息:使用RANSAC / No quality info: use RANSAC
    • 无对应关系:使用4PCS或Super4PCS / Without: use 4PCS or Super4PCS
  2. 点云规模 / Point cloud scale
    • 小规模(<10K点):任意算法 / Small (<10K points): any algorithm
    • 中等规模(10K-100K):RANSAC或4PCS / Medium (10K-100K): RANSAC or 4PCS
    • 大规模(>100K):Super4PCS / Large (>100K): Super4PCS

细配准算法选择 / Fine Registration Selection:

  1. 点云特征 / Point cloud features
    • 无法线:Point-to-Point ICP 或 NDT / No normals: Point-to-Point ICP or NDT
    • 有法线:Point-to-Plane ICP 或 Generalized ICP / With normals: Point-to-Plane ICP or Generalized ICP
  2. 收敛速度要求 / Convergence speed requirements
    • 标准速度:Point-to-Point/Plane ICP / Standard: Point-to-Point/Plane ICP
    • 快速收敛:AA-ICP (Anderson加速) / Fast: AA-ICP (Anderson Accelerated)
  3. 鲁棒性需求 / Robustness requirements
    • 标准:Point-to-Point ICP / Standard: Point-to-Point ICP
    • 高鲁棒性:Generalized ICP 或 NDT / High robustness: Generalized ICP or NDT
  4. 大规模点云 / Large-scale clouds
    • NDT:基于体素的方法,适合大规模点云 / NDT: Voxel-based, suitable for large clouds

完整配准流程 / Complete registration pipeline

Template Parameters
DataType数据类型 / Data type
Parameters
source源点云 / Source cloud
target目标点云 / Target cloud
use_coarse是否使用粗配准 / Whether to use coarse registration
fine_algorithm细配准算法 / Fine registration algorithm
Returns
最终变换矩阵 / Final transformation matrix
// 完整配准流程 / Complete registration pipeline
auto transform = complete_registration(source, target, true, "p2p");
// 仅细配准 / Fine registration only
auto transform = complete_registration(source, target, false, "ndt");
Eigen::Matrix< DataType, 4, 4 > complete_registration(const std::shared_ptr< toolbox::types::point_cloud_t< DataType > > &source, const std::shared_ptr< toolbox::types::point_cloud_t< DataType > > &target, bool use_coarse=true, const std::string &fine_algorithm="p2p")
配准算法选择指南 / Registration algorithm selection guide
Definition registration.hpp:171