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

PROSAC (渐进式采样一致性) 粗配准算法 / PROSAC (Progressive Sample Consensus) coarse registration algorithm. More...

#include <prosac_registration.hpp>

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

Public Types

using base_type = base_coarse_registration_t< prosac_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 >
 
- Public Types inherited from toolbox::pcl::base_coarse_registration_t< prosac_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

 prosac_registration_t ()=default
 
 ~prosac_registration_t ()=default
 
void set_confidence (DataType confidence)
 设置置信度水平 / Set confidence level
 
DataType get_confidence () const
 获取置信度水平 / Get confidence level
 
void set_sample_size (std::size_t size)
 设置最小样本大小 / Set minimum sample size
 
std::size_t get_sample_size () const
 获取样本大小 / Get sample size
 
void set_refine_result (bool refine)
 设置是否使用所有内点精炼结果 / Set whether to refine result using all inliers
 
bool get_refine_result () const
 获取是否精炼结果 / Get whether to refine result
 
void set_early_stop_ratio (DataType ratio)
 设置早停阈值(内点比例) / Set early stopping threshold (inlier ratio)
 
DataType get_early_stop_ratio () const
 获取早停阈值 / Get early stopping threshold
 
void set_initial_inlier_ratio (DataType ratio)
 设置初始内点率估计 / Set initial inlier ratio estimate
 
DataType get_initial_inlier_ratio () const
 获取初始内点率 / Get initial inlier ratio
 
void set_non_randomness_threshold (DataType threshold)
 设置非随机性阈值 / Set non-randomness threshold
 
DataType get_non_randomness_threshold () const
 获取非随机性阈值 / Get non-randomness threshold
 
void set_sorted_correspondences (const correspondences_ptr &correspondences, const std::vector< std::size_t > &sorted_indices={}, const std::vector< DataType > &quality_scores={})
 设置已排序的对应关系 / Set sorted correspondences
 
const std::vector< std::size_t > & get_sorted_indices () const
 获取排序后的索引 / Get sorted indices
 
- Public Member Functions inherited from toolbox::pcl::base_coarse_registration_t< prosac_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

bool align_impl (result_type &result)
 派生类实现的配准算法 / Registration algorithm implementation by derived class
 
std::string get_algorithm_name_impl () const
 获取算法名称实现 / Get algorithm name implementation
 
bool validate_input_impl () const
 额外的输入验证 / Additional input validation
 
void set_correspondences_impl (const correspondences_ptr &)
 设置对应关系的钩子函数 / Hook function for setting correspondences
 
- Protected Member Functions inherited from toolbox::pcl::base_coarse_registration_t< prosac_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< prosac_registration_t< DataType >, DataType >
 

Detailed Description

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

PROSAC (渐进式采样一致性) 粗配准算法 / PROSAC (Progressive Sample Consensus) coarse registration algorithm.

PROSAC是RANSAC的改进版本,通过利用对应关系的质量排序来实现更快的收敛。 与随机均匀采样不同,PROSAC从逐渐增大的高质量对应关系集合中进行渐进式采样。 PROSAC is an improved version of RANSAC that achieves faster convergence by leveraging quality ordering of correspondences. Unlike random uniform sampling, PROSAC progressively samples from increasingly larger sets of top-ranked correspondences.

Template Parameters
DataType数据类型(如float或double) / Data type (e.g., float or double)
// 使用示例 / Usage example
// 1. 首先使用排序器对对应关系进行排序 / First sort correspondences using a
sorter auto sorter = std::make_shared<descriptor_distance_sorter_t<float>>();
sorter->set_correspondences(correspondences);
std::vector<float> quality_scores;
auto sorted_indices = sorter->compute_sorted_indices(quality_scores);
// 2. 使用PROSAC进行配准 / Use PROSAC for registration
prosac.set_source(source_cloud);
prosac.set_target(target_cloud);
prosac.set_sorted_correspondences(correspondences, sorted_indices);
prosac.set_max_iterations(5000);
prosac.set_inlier_threshold(0.05f);
prosac.set_confidence(0.99f);
if (prosac.align(result)) {
std::cout << "Registration successful with " << result.inliers.size()
<< " inliers" << 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
void set_inlier_threshold(DataType threshold)
设置内点距离阈值 / Set inlier distance threshold
Definition base_coarse_registration.hpp:88
bool align(result_type &result)
执行配准 / Perform registration
Definition base_coarse_registration.hpp:117
void set_max_iterations(std::size_t max_iterations)
设置最大迭代次数 / Set maximum iterations
Definition base_coarse_registration.hpp:79
PROSAC (渐进式采样一致性) 粗配准算法 / PROSAC (Progressive Sample Consensus) coarse registration algorithm.
Definition prosac_registration.hpp:60
void set_sorted_correspondences(const correspondences_ptr &correspondences, const std::vector< std::size_t > &sorted_indices={}, const std::vector< DataType > &quality_scores={})
设置已排序的对应关系 / Set sorted correspondences
Definition prosac_registration.hpp:194
void set_confidence(DataType confidence)
设置置信度水平 / Set confidence level
Definition prosac_registration.hpp:83
配准结果结构体 / Registration result structure
Definition registration_result.hpp:15
std::vector< std::size_t > inliers
内点索引 / Inlier indices
Definition registration_result.hpp:20

Member Typedef Documentation

◆ base_type

template<typename DataType >
using toolbox::pcl::prosac_registration_t< DataType >::base_type = base_coarse_registration_t<prosac_registration_t<DataType>, DataType>

◆ matrix3_t

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

◆ transformation_t

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

◆ vector3_t

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

Constructor & Destructor Documentation

◆ prosac_registration_t()

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

◆ ~prosac_registration_t()

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

Member Function Documentation

◆ align_impl()

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

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

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

◆ get_algorithm_name_impl()

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

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

Returns
算法名称 / Algorithm name

◆ get_confidence()

template<typename DataType >
DataType toolbox::pcl::prosac_registration_t< DataType >::get_confidence ( ) const
inline

获取置信度水平 / Get confidence level

Returns
置信度 / Confidence level

◆ get_early_stop_ratio()

template<typename DataType >
DataType toolbox::pcl::prosac_registration_t< DataType >::get_early_stop_ratio ( ) const
inline

获取早停阈值 / Get early stopping threshold

Returns
早停阈值 / Early stopping threshold

◆ get_initial_inlier_ratio()

template<typename DataType >
DataType toolbox::pcl::prosac_registration_t< DataType >::get_initial_inlier_ratio ( ) const
inline

获取初始内点率 / Get initial inlier ratio

Returns
初始内点率 / Initial inlier ratio

◆ get_non_randomness_threshold()

template<typename DataType >
DataType toolbox::pcl::prosac_registration_t< DataType >::get_non_randomness_threshold ( ) const
inline

获取非随机性阈值 / Get non-randomness threshold

Returns
非随机性阈值 / Non-randomness threshold

◆ get_refine_result()

template<typename DataType >
bool toolbox::pcl::prosac_registration_t< DataType >::get_refine_result ( ) const
inline

获取是否精炼结果 / Get whether to refine result

Returns
是否精炼 / Whether to refine

◆ get_sample_size()

template<typename DataType >
std::size_t toolbox::pcl::prosac_registration_t< DataType >::get_sample_size ( ) const
inline

获取样本大小 / Get sample size

Returns
样本大小 / Sample size

◆ get_sorted_indices()

template<typename DataType >
const std::vector< std::size_t > & toolbox::pcl::prosac_registration_t< DataType >::get_sorted_indices ( ) const
inline

获取排序后的索引 / Get sorted indices

Returns
排序后的索引 / Sorted indices

◆ set_confidence()

template<typename DataType >
void toolbox::pcl::prosac_registration_t< DataType >::set_confidence ( DataType  confidence)
inline

设置置信度水平 / Set confidence level

Parameters
confidence置信度(0到1之间) / Confidence level (between 0 and 1)

◆ set_correspondences_impl()

template<typename DataType >
void toolbox::pcl::prosac_registration_t< DataType >::set_correspondences_impl ( const correspondences_ptr )
inlineprotected

设置对应关系的钩子函数 / Hook function for setting correspondences

◆ set_early_stop_ratio()

template<typename DataType >
void toolbox::pcl::prosac_registration_t< DataType >::set_early_stop_ratio ( DataType  ratio)
inline

设置早停阈值(内点比例) / Set early stopping threshold (inlier ratio)

Parameters
ratio内点比例阈值(0到1之间) / Inlier ratio threshold (between 0 and 1)

◆ set_initial_inlier_ratio()

template<typename DataType >
void toolbox::pcl::prosac_registration_t< DataType >::set_initial_inlier_ratio ( DataType  ratio)
inline

设置初始内点率估计 / Set initial inlier ratio estimate

Parameters
ratio初始内点率(0到1之间) / Initial inlier ratio (between 0 and 1)

◆ set_non_randomness_threshold()

template<typename DataType >
void toolbox::pcl::prosac_registration_t< DataType >::set_non_randomness_threshold ( DataType  threshold)
inline

设置非随机性阈值 / Set non-randomness threshold

Parameters
threshold阈值(通常0.05) / Threshold (typically 0.05)

◆ set_refine_result()

template<typename DataType >
void toolbox::pcl::prosac_registration_t< DataType >::set_refine_result ( bool  refine)
inline

设置是否使用所有内点精炼结果 / Set whether to refine result using all inliers

Parameters
refinetrue启用精炼,false禁用 / true to enable refinement, false to disable

◆ set_sample_size()

template<typename DataType >
void toolbox::pcl::prosac_registration_t< DataType >::set_sample_size ( std::size_t  size)
inline

设置最小样本大小 / Set minimum sample size

Parameters
size样本大小(至少3) / Sample size (at least 3)

◆ set_sorted_correspondences()

template<typename DataType >
void toolbox::pcl::prosac_registration_t< DataType >::set_sorted_correspondences ( const correspondences_ptr correspondences,
const std::vector< std::size_t > &  sorted_indices = {},
const std::vector< DataType > &  quality_scores = {} 
)
inline

设置已排序的对应关系 / Set sorted correspondences

Parameters
correspondences对应关系 / Correspondences
sorted_indices按质量降序排序的索引(可选) / Indices sorted by quality in descending order (optional)
quality_scores质量分数(可选,用于调试) / Quality scores (optional, for debugging)
Note
如果不提供sorted_indices,则假设correspondences已经按质量降序排序 / If sorted_indices is not provided, assumes correspondences are already sorted by quality in descending order

◆ validate_input_impl()

template<typename DataType >
bool toolbox::pcl::prosac_registration_t< DataType >::validate_input_impl ( ) const
protected

额外的输入验证 / Additional input validation

Returns
是否有效 / Whether valid

Friends And Related Symbol Documentation

◆ base_coarse_registration_t< prosac_registration_t< DataType >, DataType >

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

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