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

描述子提取器的基类(CRTP模式) / Base class for descriptor extractors (CRTP pattern) More...

#include <base_descriptor_extractor.hpp>

Public Member Functions

 base_descriptor_extractor_t ()=default
 
 base_descriptor_extractor_t (const base_descriptor_extractor_t &)=delete
 
 base_descriptor_extractor_t (base_descriptor_extractor_t &&)=default
 
base_descriptor_extractor_toperator= (const base_descriptor_extractor_t &)=delete
 
base_descriptor_extractor_toperator= (base_descriptor_extractor_t &&)=default
 
virtual ~base_descriptor_extractor_t ()=default
 
void enable_parallel (bool enable)
 启用或禁用并行计算 / Enable or disable parallel computation
 
void compute (const toolbox::types::point_cloud_t< DataType > &cloud, const std::vector< std::size_t > &keypoint_indices, std::vector< Signature > &descriptors)
 计算指定关键点的描述子 / Compute descriptors at specified keypoints
 
void compute (const toolbox::types::point_cloud_t< DataType > &cloud, const std::vector< std::size_t > &keypoint_indices, std::unique_ptr< std::vector< Signature > > descriptors)
 计算指定关键点的描述子(智能指针版本) / Compute descriptors at specified keypoints (smart pointer version)
 

Detailed Description

template<class Derived, typename DataType, typename Signature>
class toolbox::pcl::base_descriptor_extractor_t< Derived, DataType, Signature >

描述子提取器的基类(CRTP模式) / Base class for descriptor extractors (CRTP pattern)

该类定义了所有描述子提取算法的通用接口。描述子是用于描述点云局部特征的向量, 常用于物体识别、配准、分类等任务。 This class defines the common interface for all descriptor extraction algorithms. Descriptors are vectors that describe local features of point clouds, commonly used for object recognition, registration, classification, and other tasks.

Template Parameters
Derived派生的提取器类型 / Derived extractor type
DataType数据类型(如float或double) / Data type (e.g., float or double)
Signature描述子签名类型 / Descriptor signature type
// 使用描述子提取器的示例 / Example of using descriptor extractor
extractor.set_search_radius(0.05f);
// 在关键点处计算描述子 / Compute descriptors at keypoints
std::vector<fpfh_signature_t<float>> descriptors;
extractor.compute(cloud, keypoint_indices, descriptors);
// 使用描述子进行匹配 / Use descriptors for matching
for (size_t i = 0; i < descriptors.size(); ++i) {
float min_dist = std::numeric_limits<float>::max();
size_t best_match = 0;
for (size_t j = 0; j < target_descriptors.size(); ++j) {
float dist = descriptors[i].distance(target_descriptors[j]);
if (dist < min_dist) {
min_dist = dist;
best_match = j;
}
}
}
FPFH (Fast Point Feature Histogram) descriptor extractor.
Definition fpfh_extractor.hpp:89
std::size_t set_search_radius(data_type radius)
Set the search radius for neighbor search.
Definition fpfh_extractor_impl.hpp:41

Constructor & Destructor Documentation

◆ base_descriptor_extractor_t() [1/3]

template<class Derived , typename DataType , typename Signature >
toolbox::pcl::base_descriptor_extractor_t< Derived, DataType, Signature >::base_descriptor_extractor_t ( )
default

◆ base_descriptor_extractor_t() [2/3]

template<class Derived , typename DataType , typename Signature >
toolbox::pcl::base_descriptor_extractor_t< Derived, DataType, Signature >::base_descriptor_extractor_t ( const base_descriptor_extractor_t< Derived, DataType, Signature > &  )
delete

◆ base_descriptor_extractor_t() [3/3]

template<class Derived , typename DataType , typename Signature >
toolbox::pcl::base_descriptor_extractor_t< Derived, DataType, Signature >::base_descriptor_extractor_t ( base_descriptor_extractor_t< Derived, DataType, Signature > &&  )
default

◆ ~base_descriptor_extractor_t()

template<class Derived , typename DataType , typename Signature >
virtual toolbox::pcl::base_descriptor_extractor_t< Derived, DataType, Signature >::~base_descriptor_extractor_t ( )
virtualdefault

Member Function Documentation

◆ compute() [1/2]

template<class Derived , typename DataType , typename Signature >
void toolbox::pcl::base_descriptor_extractor_t< Derived, DataType, Signature >::compute ( const toolbox::types::point_cloud_t< DataType > &  cloud,
const std::vector< std::size_t > &  keypoint_indices,
std::unique_ptr< std::vector< Signature > >  descriptors 
)
inline

计算指定关键点的描述子(智能指针版本) / Compute descriptors at specified keypoints (smart pointer version)

Parameters
cloud输入点云 / Input point cloud
keypoint_indices关键点索引列表 / List of keypoint indices
descriptors[out] 输出描述子向量的智能指针 / Smart pointer to output descriptor vector

◆ compute() [2/2]

template<class Derived , typename DataType , typename Signature >
void toolbox::pcl::base_descriptor_extractor_t< Derived, DataType, Signature >::compute ( const toolbox::types::point_cloud_t< DataType > &  cloud,
const std::vector< std::size_t > &  keypoint_indices,
std::vector< Signature > &  descriptors 
)
inline

计算指定关键点的描述子 / Compute descriptors at specified keypoints

Parameters
cloud输入点云 / Input point cloud
keypoint_indices关键点索引列表 / List of keypoint indices
descriptors[out] 输出描述子向量 / Output descriptor vector
// 计算所有关键点的描述子 / Compute descriptors for all keypoints
std::vector<size_t> keypoint_indices = detect_keypoints(cloud);
std::vector<fpfh_signature_t<float>> descriptors;
extractor.compute(cloud, keypoint_indices, descriptors);
std::cout << "计算了 / Computed " << descriptors.size()
<< " 个描述子 / descriptors" << std::endl;

◆ enable_parallel()

template<class Derived , typename DataType , typename Signature >
void toolbox::pcl::base_descriptor_extractor_t< Derived, DataType, Signature >::enable_parallel ( bool  enable)
inline

启用或禁用并行计算 / Enable or disable parallel computation

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

◆ operator=() [1/2]

template<class Derived , typename DataType , typename Signature >
base_descriptor_extractor_t & toolbox::pcl::base_descriptor_extractor_t< Derived, DataType, Signature >::operator= ( base_descriptor_extractor_t< Derived, DataType, Signature > &&  )
default

◆ operator=() [2/2]

template<class Derived , typename DataType , typename Signature >
base_descriptor_extractor_t & toolbox::pcl::base_descriptor_extractor_t< Derived, DataType, Signature >::operator= ( const base_descriptor_extractor_t< Derived, DataType, Signature > &  )
delete

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