cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
registration.hpp File Reference

点云配准算法统一导出文件 / Unified export file for point cloud registration algorithms More...

Include dependency graph for registration.hpp:

Go to the source code of this file.

Namespaces

namespace  toolbox
 
namespace  toolbox::pcl
 

Macros

#define LOG_ERROR_S   toolbox::logger::thread_logger_t::instance().error_s()
 
#define LOG_WARN_S   toolbox::logger::thread_logger_t::instance().warn_s()
 
#define LOG_INFO_S   toolbox::logger::thread_logger_t::instance().info_s()
 

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

点云配准算法统一导出文件 / Unified export file for point cloud registration algorithms

该文件提供了点云配准的统一接口,包括粗配准和细配准算法。 This file provides a unified interface for point cloud registration, including both coarse and fine registration algorithms.

粗配准算法 / Coarse Registration Algorithms:

  • RANSAC: 基于对应关系的随机采样一致性算法 / Correspondence-based random sample consensus
  • PROSAC: 渐进式采样一致性,利用对应关系质量排序 / Progressive sample consensus with quality ordering
  • 4PCS: 4点共面集算法,不需要初始对应关系 / 4-Point Congruent Sets, no initial correspondences needed
  • Super4PCS: 优化的4PCS,适合大规模点云 / Optimized 4PCS for large-scale point clouds

细配准算法 / Fine Registration Algorithms:

  • Point-to-Point ICP: 基础ICP算法 / Basic ICP algorithm
  • Point-to-Plane ICP: 点到平面ICP,需要法线 / Point-to-plane ICP, requires normals
  • Generalized ICP: 平面到平面ICP / Plane-to-plane ICP
  • AA-ICP: Anderson加速的ICP / Anderson Accelerated ICP
  • NDT: 正态分布变换 / Normal Distributions Transform
using namespace toolbox::pcl;
// 粗配准示例 / Coarse registration example
coarse_reg.set_source(source_cloud);
coarse_reg.set_target(target_cloud);
coarse_reg.set_delta(0.01f); // 1cm精度 / 1cm accuracy
coarse_reg.set_overlap(0.5f); // 50%重叠 / 50% overlap
coarse_registration_result_t<float> coarse_result;
if (coarse_reg.align(coarse_result)) {
// 使用粗配准结果作为细配准的初始值
// Use coarse result as initial guess for fine registration
}
// 细配准示例 / Fine registration example
fine_reg.set_source(source_cloud);
fine_reg.set_target(target_cloud);
fine_reg.set_max_iterations(50);
fine_reg.align(coarse_result.transformation, fine_result);
void set_target(const point_cloud_ptr &target)
设置目标点云 / Set target point cloud
Definition base_coarse_registration.hpp:60
void set_source(const point_cloud_ptr &source)
设置源点云 / Set source point cloud
Definition base_coarse_registration.hpp:51
bool align(result_type &result)
执行配准 / Perform registration
Definition base_coarse_registration.hpp:117
void set_target(const point_cloud_ptr &target)
设置目标点云 / Set target point cloud
Definition base_fine_registration.hpp:69
void set_source(const point_cloud_ptr &source)
设置源点云 / Set source point cloud
Definition base_fine_registration.hpp:60
void set_max_iterations(std::size_t max_iterations)
设置最大迭代次数 / Set maximum iterations
Definition base_fine_registration.hpp:78
bool align(const transformation_t &initial_guess, result_type &result)
执行配准 / Perform registration
Definition base_fine_registration.hpp:189
void set_overlap(DataType overlap)
设置重叠率估计 / Set overlap ratio estimate
Definition four_pcs_registration.hpp:99
void set_delta(DataType delta)
设置配准精度delta / Set registration accuracy delta
Definition four_pcs_registration.hpp:87
Point-to-Point ICP 算法实现 / Point-to-Point ICP algorithm implementation.
Definition point_to_point_icp.hpp:42
Super4PCS 粗配准算法 / Super4PCS coarse registration algorithm.
Definition super_four_pcs_registration.hpp:44
Definition base_correspondence_generator.hpp:18
点云配准算法统一导出文件 / Unified export file for point cloud registration algorithms
细配准结果 / Fine registration result
Definition registration_result.hpp:46

Macro Definition Documentation

◆ LOG_ERROR_S

#define LOG_ERROR_S   toolbox::logger::thread_logger_t::instance().error_s()

◆ LOG_INFO_S

#define LOG_INFO_S   toolbox::logger::thread_logger_t::instance().info_s()

◆ LOG_WARN_S

#define LOG_WARN_S   toolbox::logger::thread_logger_t::instance().warn_s()