cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
toolbox::pcl::super_four_pcs_registration_t< DataType > Class Template Reference

Super4PCS 粗配准算法 / Super4PCS coarse registration algorithm. More...

#include <super_four_pcs_registration.hpp>

Inheritance diagram for toolbox::pcl::super_four_pcs_registration_t< DataType >:

Classes

struct  grid_cell_t
 3D网格单元 / 3D grid cell More...
 
struct  point_pair_t
 点对结构 / Point pair structure More...
 
class  smart_index_t
 智能索引结构 / Smart index structure More...
 

Public Types

using base_type = four_pcs_registration_t< DataType >
 
using transformation_t = Eigen::Matrix< DataType, 4, 4 >
 
using vector3_t = Eigen::Matrix< DataType, 3, 1 >
 
using matrix3_t = Eigen::Matrix< DataType, 3, 3 >
 
- Public Types inherited from toolbox::pcl::four_pcs_registration_t< DataType >
using base_type = base_coarse_registration_t< four_pcs_registration_t< DataType >, DataType >
 
using transformation_t = Eigen::Matrix< DataType, 4, 4 >
 
using vector3_t = Eigen::Matrix< DataType, 3, 1 >
 
using matrix3_t = Eigen::Matrix< DataType, 3, 3 >
 
using kdtree_t = toolbox::pcl::kdtree_t< DataType >
 
- Public Types inherited from toolbox::pcl::base_coarse_registration_t< four_pcs_registration_t< DataType >, DataType >
using point_cloud = toolbox::types::point_cloud_t< DataType >
 
using point_cloud_ptr = std::shared_ptr< point_cloud >
 
using correspondences_ptr = std::shared_ptr< std::vector< correspondence_t > >
 
using result_type = registration_result_t< DataType >
 

Public Member Functions

 super_four_pcs_registration_t ()=default
 
 ~super_four_pcs_registration_t ()=default
 
void set_grid_resolution (DataType resolution)
 设置网格分辨率 / Set grid resolution
 
DataType get_grid_resolution () const
 获取网格分辨率 / Get grid resolution
 
void enable_smart_indexing (bool enable)
 启用/禁用智能索引 / Enable/disable smart indexing
 
bool is_smart_indexing_enabled () const
 获取是否使用智能索引 / Get whether using smart indexing
 
void set_pair_distance_epsilon (DataType epsilon)
 设置点对距离容差 / Set pair distance tolerance
 
DataType get_pair_distance_epsilon () const
 获取点对距离容差 / Get pair distance tolerance
 
- Public Member Functions inherited from toolbox::pcl::four_pcs_registration_t< DataType >
 four_pcs_registration_t ()=default
 
 ~four_pcs_registration_t ()=default
 
void set_delta (DataType delta)
 设置配准精度delta / Set registration accuracy delta
 
DataType get_delta () const
 获取配准精度 / Get registration accuracy
 
void set_overlap (DataType overlap)
 设置重叠率估计 / Set overlap ratio estimate
 
DataType get_overlap () const
 获取重叠率 / Get overlap ratio
 
void set_sample_size (std::size_t size)
 设置采样点数 / Set number of points to sample
 
std::size_t get_sample_size () const
 获取采样点数 / Get sample size
 
void set_use_normals (bool use_normals)
 设置是否使用法向量信息 / Set whether to use normal information
 
bool get_use_normals () const
 获取是否使用法向量 / Get whether using normals
 
void set_max_normal_angle (DataType angle)
 设置最大法向量偏差角度 / Set maximum normal deviation angle
 
DataType get_max_normal_angle () const
 获取最大法向量偏差角度 / Get maximum normal deviation angle
 
void set_num_bases (std::size_t num_bases)
 设置基的数量 / Set number of bases to try
 
std::size_t get_num_bases () const
 获取基的数量 / Get number of bases
 
- Public Member Functions inherited from toolbox::pcl::base_coarse_registration_t< four_pcs_registration_t< DataType >, DataType >
 base_coarse_registration_t ()=default
 
 base_coarse_registration_t (const base_coarse_registration_t &)=delete
 
 base_coarse_registration_t (base_coarse_registration_t &&)=default
 
virtual ~base_coarse_registration_t ()=default
 
base_coarse_registration_toperator= (const base_coarse_registration_t &)=delete
 
base_coarse_registration_toperator= (base_coarse_registration_t &&)=default
 
void set_source (const point_cloud_ptr &source)
 设置源点云 / Set source point cloud
 
void set_target (const point_cloud_ptr &target)
 设置目标点云 / Set target point cloud
 
void set_correspondences (const correspondences_ptr &correspondences)
 设置初始对应关系(可选,主要用于RANSAC类算法) / Set initial correspondences (optional, mainly for RANSAC-like algorithms)
 
void set_max_iterations (std::size_t max_iterations)
 设置最大迭代次数 / Set maximum iterations
 
void set_inlier_threshold (DataType threshold)
 设置内点距离阈值 / Set inlier distance threshold
 
void set_convergence_threshold (DataType threshold)
 设置收敛阈值 / Set convergence threshold
 
void set_min_inliers (std::size_t min_inliers)
 设置最小内点数量 / Set minimum number of inliers
 
bool align (result_type &result)
 执行配准 / Perform registration
 
std::string get_algorithm_name () const
 获取算法名称 / Get algorithm name
 
void enable_parallel (bool enable=true)
 启用/禁用并行计算 / Enable/disable parallel computation
 
bool is_parallel_enabled () const
 获取并行计算状态 / Get parallel computation status
 
void set_random_seed (unsigned int seed)
 设置随机种子 / Set random seed
 

Protected Member Functions

std::string get_algorithm_name_impl () const
 获取算法名称实现 / Get algorithm name implementation
 
bool align_impl (result_type &result)
 派生类实现的配准算法 / Registration algorithm implementation
 
std::vector< base_4pcs_tfind_congruent_sets_optimized (const base_4pcs_t &source_base) const
 寻找匹配的4点集(优化版本) / Find congruent sets (optimized version)
 
- Protected Member Functions inherited from toolbox::pcl::four_pcs_registration_t< DataType >
bool align_impl (result_type &result)
 派生类实现的配准算法 / Registration algorithm implementation
 
std::string get_algorithm_name_impl () const
 获取算法名称实现 / Get algorithm name implementation
 
bool validate_input_impl () const
 额外的输入验证 / Additional input validation
 
void set_source_impl (const point_cloud_ptr &source)
 钩子函数:设置源点云时的处理 / Hook: processing when setting source cloud
 
void set_target_impl (const point_cloud_ptr &target)
 钩子函数:设置目标点云时的处理 / Hook: processing when setting target cloud
 
const std::shared_ptr< kdtree_t > & get_target_kdtree () const
 获取受保护的成员 / Get protected members
 
const std::vector< std::size_t > & get_source_samples () const
 
const std::vector< std::size_t > & get_target_samples () const
 
void sample_points (const point_cloud_ptr &cloud, std::size_t num_samples, std::vector< std::size_t > &indices)
 采样点云 / Sample point cloud
 
bool are_coplanar (const std::array< vector3_t, 4 > &points, DataType tolerance) const
 检查4个点是否共面 / Check if 4 points are coplanar
 
void compute_invariants (base_4pcs_t &base) const
 计算4点基的仿射不变量 / Compute affine invariants for 4-point base
 
transformation_t estimate_transformation (const base_4pcs_t &source_base, const base_4pcs_t &target_base) const
 估计两个4点基之间的变换 / Estimate transformation between two 4-point bases
 
DataType compute_lcp_score (const transformation_t &transform, std::vector< std::size_t > &inliers) const
 计算LCP(最大公共点集)评分 / Compute LCP (Largest Common Pointset) score
 
void refine_candidate (candidate_t &candidate) const
 精炼候选变换 / Refine candidate transformation
 
std::vector< base_4pcs_textract_coplanar_bases (const std::vector< std::size_t > &indices, const point_cloud_ptr &cloud, std::size_t num_bases) const
 提取共面4点基 / Extract coplanar 4-point bases
 
std::vector< base_4pcs_tfind_congruent_sets (const base_4pcs_t &source_base, const std::vector< std::size_t > &target_indices, const point_cloud_ptr &target_cloud) const
 寻找匹配的4点集 / Find congruent 4-point sets
 
bool is_valid_transformation (const transformation_t &transform) const
 验证变换的有效性 / Verify transformation validity
 
- Protected Member Functions inherited from toolbox::pcl::base_coarse_registration_t< four_pcs_registration_t< DataType >, DataType >
void set_source_impl (const point_cloud_ptr &)
 派生类可选实现的钩子函数 / Optional hook functions for derived classes
 
void set_target_impl (const point_cloud_ptr &)
 
void set_correspondences_impl (const correspondences_ptr &)
 
void set_max_iterations_impl (std::size_t)
 
void set_inlier_threshold_impl (DataType)
 
void set_convergence_threshold_impl (DataType)
 
void set_min_inliers_impl (std::size_t)
 
bool validate_input () const
 验证输入数据 / Validate input data
 
bool validate_input_impl () const
 派生类的额外输入验证(可选) / Additional input validation for derived class (optional)
 
DataType compute_fitness_score (const Eigen::Matrix< DataType, 4, 4 > &transformation, const std::vector< std::size_t > &inliers) const
 计算配准质量评分 / Compute registration fitness score
 
const point_cloud_ptrget_source_cloud () const
 获取受保护的成员变量访问 / Get access to protected members
 
const point_cloud_ptrget_target_cloud () const
 
const correspondences_ptrget_correspondences () const
 
std::size_t get_max_iterations () const
 
DataType get_inlier_threshold () const
 
DataType get_convergence_threshold () const
 
std::size_t get_min_inliers () const
 
unsigned int get_random_seed () const
 

Friends

class base_coarse_registration_t< super_four_pcs_registration_t< DataType >, DataType >
 
class four_pcs_registration_t< DataType >
 

Detailed Description

template<typename DataType>
class toolbox::pcl::super_four_pcs_registration_t< DataType >

Super4PCS 粗配准算法 / Super4PCS coarse registration algorithm.

Super4PCS是4PCS的改进版本,通过智能索引技术将时间复杂度从O(n²)降低到O(n)。 主要改进包括:

  • 基于网格的空间索引,实现快速点对查找
  • 优化的匹配策略,减少不必要的计算
  • 更好的可扩展性,能处理百万级点云

Super4PCS is an improved version of 4PCS that reduces time complexity from O(n²) to O(n) through smart indexing. Key improvements include:

  • Grid-based spatial indexing for fast pair extraction
  • Optimized matching strategy to reduce unnecessary computations
  • Better scalability for million-point clouds
Template Parameters
DataType数据类型(如float或double) / Data type (e.g., float or double)
// 使用示例 / Usage example
super4pcs.set_source(source_cloud);
super4pcs.set_target(target_cloud);
super4pcs.set_delta(0.01f); // 1cm精度
super4pcs.set_overlap(0.3f); // 30%重叠(Super4PCS可处理更低重叠)
super4pcs.enable_smart_indexing(true); // 启用智能索引
if (super4pcs.align(result)) {
std::cout << "Super4PCS registration successful!" << std::endl;
}
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_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
Super4PCS 粗配准算法 / Super4PCS coarse registration algorithm.
Definition super_four_pcs_registration.hpp:44
void enable_smart_indexing(bool enable)
启用/禁用智能索引 / Enable/disable smart indexing
Definition super_four_pcs_registration.hpp:151
配准结果结构体 / Registration result structure
Definition registration_result.hpp:15

Member Typedef Documentation

◆ base_type

template<typename DataType >
using toolbox::pcl::super_four_pcs_registration_t< DataType >::base_type = four_pcs_registration_t<DataType>

◆ matrix3_t

template<typename DataType >
using toolbox::pcl::four_pcs_registration_t< DataType >::matrix3_t = Eigen::Matrix<DataType, 3, 3>

◆ transformation_t

template<typename DataType >
using toolbox::pcl::four_pcs_registration_t< DataType >::transformation_t = Eigen::Matrix<DataType, 4, 4>

◆ vector3_t

template<typename DataType >
using toolbox::pcl::four_pcs_registration_t< DataType >::vector3_t = Eigen::Matrix<DataType, 3, 1>

Constructor & Destructor Documentation

◆ super_four_pcs_registration_t()

template<typename DataType >
toolbox::pcl::super_four_pcs_registration_t< DataType >::super_four_pcs_registration_t ( )
default

◆ ~super_four_pcs_registration_t()

template<typename DataType >
toolbox::pcl::super_four_pcs_registration_t< DataType >::~super_four_pcs_registration_t ( )
default

Member Function Documentation

◆ align_impl()

template<typename DataType >
bool toolbox::pcl::super_four_pcs_registration_t< DataType >::align_impl ( result_type result)
protected

派生类实现的配准算法 / Registration algorithm implementation

Parameters
result[out] 配准结果 / Registration result
Returns
是否成功 / Whether successful

◆ enable_smart_indexing()

template<typename DataType >
void toolbox::pcl::super_four_pcs_registration_t< DataType >::enable_smart_indexing ( bool  enable)
inline

启用/禁用智能索引 / Enable/disable smart indexing

Parameters
enabletrue启用,false禁用 / true to enable, false to disable

◆ find_congruent_sets_optimized()

template<typename DataType >
std::vector< typename super_four_pcs_registration_t< DataType >::base_4pcs_t > toolbox::pcl::super_four_pcs_registration_t< DataType >::find_congruent_sets_optimized ( const base_4pcs_t source_base) const
protected

寻找匹配的4点集(优化版本) / Find congruent sets (optimized version)

Parameters
source_base源基 / Source base
Returns
匹配的基列表 / List of congruent bases

◆ get_algorithm_name_impl()

template<typename DataType >
std::string toolbox::pcl::super_four_pcs_registration_t< DataType >::get_algorithm_name_impl ( ) const
inlineprotected

获取算法名称实现 / Get algorithm name implementation

Returns
算法名称 / Algorithm name

◆ get_grid_resolution()

template<typename DataType >
DataType toolbox::pcl::super_four_pcs_registration_t< DataType >::get_grid_resolution ( ) const
inline

获取网格分辨率 / Get grid resolution

Returns
网格分辨率 / Grid resolution

◆ get_pair_distance_epsilon()

template<typename DataType >
DataType toolbox::pcl::super_four_pcs_registration_t< DataType >::get_pair_distance_epsilon ( ) const
inline

获取点对距离容差 / Get pair distance tolerance

Returns
距离容差 / Distance tolerance

◆ is_smart_indexing_enabled()

template<typename DataType >
bool toolbox::pcl::super_four_pcs_registration_t< DataType >::is_smart_indexing_enabled ( ) const
inline

获取是否使用智能索引 / Get whether using smart indexing

Returns
是否使用智能索引 / Whether using smart indexing

◆ set_grid_resolution()

template<typename DataType >
void toolbox::pcl::super_four_pcs_registration_t< DataType >::set_grid_resolution ( DataType  resolution)
inline

设置网格分辨率 / Set grid resolution

Parameters
resolution网格单元大小(0表示自动计算) / Grid cell size (0 for auto)

◆ set_pair_distance_epsilon()

template<typename DataType >
void toolbox::pcl::super_four_pcs_registration_t< DataType >::set_pair_distance_epsilon ( DataType  epsilon)
inline

设置点对距离容差 / Set pair distance tolerance

Parameters
epsilon距离容差 / Distance tolerance

Friends And Related Symbol Documentation

◆ base_coarse_registration_t< super_four_pcs_registration_t< DataType >, DataType >

template<typename DataType >
friend class base_coarse_registration_t< super_four_pcs_registration_t< DataType >, DataType >
friend

◆ four_pcs_registration_t< DataType >

template<typename DataType >
friend class four_pcs_registration_t< DataType >
friend

The documentation for this class was generated from the following files: