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

基于KNN的对应点生成器 / KNN-based correspondence generator More...

#include <knn_correspondence_generator.hpp>

Inheritance diagram for toolbox::pcl::knn_correspondence_generator_t< DataType, Signature, KNN >:

Public Types

using base_type = base_correspondence_generator_t< knn_correspondence_generator_t< DataType, Signature, KNN >, DataType, Signature >
 
- Public Types inherited from toolbox::pcl::base_correspondence_generator_t< knn_correspondence_generator_t< DataType, Signature, KNN >, DataType, Signature >
using point_cloud = toolbox::types::point_cloud_t< DataType >
 
using point_cloud_ptr = std::shared_ptr< point_cloud >
 
using signatures_ptr = std::shared_ptr< std::vector< Signature > >
 
using keypoint_indices_ptr = std::shared_ptr< std::vector< std::size_t > >
 

Public Member Functions

void set_knn (std::shared_ptr< KNN > knn)
 设置KNN搜索算法 / Set KNN search algorithm
 
std::shared_ptr< KNN > get_knn () const
 获取KNN搜索算法 / Get KNN search algorithm
 
void compute_impl (std::vector< correspondence_t > &correspondences)
 计算对应关系的实现 / Implementation of computing correspondences
 
- Public Member Functions inherited from toolbox::pcl::base_correspondence_generator_t< knn_correspondence_generator_t< DataType, Signature, KNN >, DataType, Signature >
 base_correspondence_generator_t ()=default
 
 base_correspondence_generator_t (const base_correspondence_generator_t &)=delete
 
 base_correspondence_generator_t (base_correspondence_generator_t &&)=default
 
virtual ~base_correspondence_generator_t ()=default
 
base_correspondence_generator_toperator= (const base_correspondence_generator_t &)=delete
 
base_correspondence_generator_toperator= (base_correspondence_generator_t &&)=default
 
void set_source (const point_cloud_ptr &src_cloud, const signatures_ptr &src_descriptors, const keypoint_indices_ptr &src_keypoint_indices)
 设置源数据 / Set source data
 
void set_destination (const point_cloud_ptr &dst_cloud, const signatures_ptr &dst_descriptors, const keypoint_indices_ptr &dst_keypoint_indices)
 设置目标数据 / Set destination data
 
void set_ratio (float ratio)
 设置比率测试阈值 / Set ratio test threshold
 
float get_ratio () const
 获取比率测试阈值 / Get ratio test threshold
 
void set_mutual_verification (bool mutual_verification)
 设置是否启用双向验证 / Set whether to enable mutual verification
 
bool get_mutual_verification () const
 获取是否启用双向验证 / Get whether mutual verification is enabled
 
void set_distance_threshold (float distance_threshold)
 设置距离阈值 / Set distance threshold
 
float get_distance_threshold () const
 获取距离阈值 / Get distance threshold
 
void compute (std::vector< correspondence_t > &correspondences)
 计算对应关系 / Compute correspondences
 
std::string get_statistics () const
 获取最后一次计算的统计信息 / Get statistics from last computation
 

Additional Inherited Members

- Protected Member Functions inherited from toolbox::pcl::base_correspondence_generator_t< knn_correspondence_generator_t< DataType, Signature, KNN >, DataType, Signature >
bool validate_input () const
 验证输入数据的有效性 / Validate input data
 
bool apply_ratio_test (const std::vector< correspondence_t > &candidates) const
 应用比率测试 / Apply ratio test
 
void apply_distance_threshold (std::vector< correspondence_t > &correspondences) const
 应用距离阈值过滤 / Apply distance threshold filtering
 
float compute_geometric_consistency (const std::vector< correspondence_t > &correspondences) const
 计算几何一致性分数(简单验证) / Compute geometric consistency score (simple verification)
 
void reset_statistics ()
 重置统计信息 / Reset statistics
 
- Protected Attributes inherited from toolbox::pcl::base_correspondence_generator_t< knn_correspondence_generator_t< DataType, Signature, KNN >, DataType, Signature >
point_cloud_ptr m_src_cloud
 
point_cloud_ptr m_dst_cloud
 
signatures_ptr m_src_descriptors
 
signatures_ptr m_dst_descriptors
 
keypoint_indices_ptr m_src_keypoint_indices
 
keypoint_indices_ptr m_dst_keypoint_indices
 
float m_ratio
 比率测试阈值 / Ratio test threshold
 
float m_distance_threshold
 距离阈值 / Distance threshold
 
bool m_mutual_verification
 是否启用双向验证 / Whether to enable mutual verification
 
std::size_t m_total_candidates
 
std::size_t m_ratio_test_passed
 
std::size_t m_mutual_test_passed
 
std::size_t m_distance_test_passed
 

Detailed Description

template<typename DataType, typename Signature, typename KNN>
class toolbox::pcl::knn_correspondence_generator_t< DataType, Signature, KNN >

基于KNN的对应点生成器 / KNN-based correspondence generator

使用KNN算法在描述子空间中快速查找对应点,支持多种验证策略 Uses KNN algorithm to quickly find correspondences in descriptor space, supporting various verification strategies

Template Parameters
DataType数据类型(如float或double) / Data type (e.g., float or double)
Signature描述子签名类型 / Descriptor signature type
KNNKNN搜索算法类型 / KNN search algorithm type
// 使用示例 / Usage example
FPFHMetric<float>>>;
CorrespondenceGen corr_gen;
// 设置KNN算法 / Set KNN algorithm
auto knn = std::make_shared<bfknn_generic_t<fpfh_signature_t<float>, FPFHMetric<float>>>();
corr_gen.set_knn(knn);
// 设置数据和参数 / Set data and parameters
corr_gen.set_source(src_cloud, src_descriptors, src_keypoints);
corr_gen.set_destination(dst_cloud, dst_descriptors, dst_keypoints);
corr_gen.set_ratio(0.8f);
corr_gen.set_mutual_verification(true);
// 计算对应关系 / Compute correspondences
std::vector<correspondence_t> correspondences;
corr_gen.compute(correspondences);
暴力K近邻搜索算法的通用实现 / Generic brute-force K-nearest neighbors search implementation
Definition bfknn.hpp:45
基于KNN的对应点生成器 / KNN-based correspondence generator
Definition knn_correspondence_generator.hpp:50
void set_knn(std::shared_ptr< KNN > knn)
设置KNN搜索算法 / Set KNN search algorithm
Definition knn_correspondence_generator.hpp:64

Member Typedef Documentation

◆ base_type

template<typename DataType , typename Signature , typename KNN >
using toolbox::pcl::knn_correspondence_generator_t< DataType, Signature, KNN >::base_type = base_correspondence_generator_t< knn_correspondence_generator_t<DataType, Signature, KNN>, DataType, Signature>

Member Function Documentation

◆ compute_impl()

template<typename DataType , typename Signature , typename KNN >
void toolbox::pcl::knn_correspondence_generator_t< DataType, Signature, KNN >::compute_impl ( std::vector< correspondence_t > &  correspondences)

计算对应关系的实现 / Implementation of computing correspondences

Parameters
correspondences[out] 输出的对应关系 / Output correspondences

◆ get_knn()

template<typename DataType , typename Signature , typename KNN >
std::shared_ptr< KNN > toolbox::pcl::knn_correspondence_generator_t< DataType, Signature, KNN >::get_knn ( ) const
inline

获取KNN搜索算法 / Get KNN search algorithm

Returns
KNN算法的共享指针 / Shared pointer to KNN algorithm

◆ set_knn()

template<typename DataType , typename Signature , typename KNN >
void toolbox::pcl::knn_correspondence_generator_t< DataType, Signature, KNN >::set_knn ( std::shared_ptr< KNN >  knn)
inline

设置KNN搜索算法 / Set KNN search algorithm

Parameters
knnKNN算法的共享指针 / Shared pointer to KNN algorithm

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