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

关键点提取器的基类,使用CRTP模式实现静态多态 / Base class for keypoint extractors using CRTP pattern for static polymorphism More...

#include <base_feature_extractor.hpp>

Public Types

using data_type = DataType
 
using knn_type = KNN
 
using point_cloud = toolbox::types::point_cloud_t< data_type >
 
using point_cloud_ptr = std::shared_ptr< toolbox::types::point_cloud_t< data_type > >
 
using indices_vector = std::vector< std::size_t >
 

Public Member Functions

 base_keypoint_extractor_t ()=default
 
 ~base_keypoint_extractor_t ()=default
 
std::size_t set_input (const point_cloud &cloud)
 设置输入点云(值传递版本) / Set input point cloud (value passing version)
 
std::size_t set_input (const point_cloud_ptr &cloud)
 设置输入点云(智能指针版本) / Set input point cloud (smart pointer version)
 
std::size_t set_search_radius (data_type radius)
 设置搜索半径 / Set search radius
 
data_type get_search_radius () const noexcept
 获取当前搜索半径 / Get current search radius
 
std::size_t set_knn (const knn_type &knn)
 设置最近邻搜索算法 / Set K-nearest neighbor search algorithm
 
void enable_parallel (bool enable)
 启用或禁用并行处理 / Enable or disable parallel processing
 
indices_vector extract ()
 提取关键点索引 / Extract keypoint indices
 
void extract (indices_vector &keypoint_indices)
 提取关键点索引(输出参数版本) / Extract keypoint indices (output parameter version)
 
point_cloud extract_keypoints ()
 提取关键点云 / Extract keypoint cloud
 
void extract_keypoints (point_cloud_ptr output)
 提取关键点云(输出参数版本) / Extract keypoint cloud (output parameter version)
 
 base_keypoint_extractor_t (const base_keypoint_extractor_t &)=delete
 禁用拷贝构造函数 / Disable copy constructor
 
base_keypoint_extractor_toperator= (const base_keypoint_extractor_t &)=delete
 禁用拷贝赋值运算符 / Disable copy assignment operator
 
 base_keypoint_extractor_t (base_keypoint_extractor_t &&)=delete
 禁用移动构造函数 / Disable move constructor
 
base_keypoint_extractor_toperator= (base_keypoint_extractor_t &&)=delete
 禁用移动赋值运算符 / Disable move assignment operator
 

Detailed Description

template<typename Derived, typename DataType, typename KNN>
class toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >

关键点提取器的基类,使用CRTP模式实现静态多态 / Base class for keypoint extractors using CRTP pattern for static polymorphism

Template Parameters
Derived派生类类型 / Derived class type
DataType数据类型(通常为float或double) / Data type (usually float or double)
KNN最近邻搜索算法类型 / K-nearest neighbor search algorithm type

该类为所有关键点提取器提供统一接口,派生类需要实现具体的提取算法 / This class provides a unified interface for all keypoint extractors, derived classes need to implement specific extraction algorithms

// 使用示例 / Usage example
using data_type = float;
// 创建具体的关键点提取器 / Create specific keypoint extractor
// 设置输入点云 / Set input point cloud
point_cloud_t<data_type> cloud = load_point_cloud();
extractor.set_input(cloud);
// 设置KNN算法 / Set KNN algorithm
extractor.set_knn(knn);
// 设置搜索半径 / Set search radius
extractor.set_search_radius(0.5f);
// 提取关键点 / Extract keypoints
auto keypoint_indices = extractor.extract();
DataType data_type
Definition base_feature_extractor.hpp:46
KNN knn_type
Definition base_feature_extractor.hpp:47
基于曲率的关键点提取器 / Curvature-based keypoint extractor
Definition curvature_keypoints.hpp:61
Definition kdtree.hpp:14

Member Typedef Documentation

◆ data_type

template<typename Derived , typename DataType , typename KNN >
using toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::data_type = DataType

◆ indices_vector

template<typename Derived , typename DataType , typename KNN >
using toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::indices_vector = std::vector<std::size_t>

◆ knn_type

template<typename Derived , typename DataType , typename KNN >
using toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::knn_type = KNN

◆ point_cloud

template<typename Derived , typename DataType , typename KNN >
using toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::point_cloud = toolbox::types::point_cloud_t<data_type>

◆ point_cloud_ptr

template<typename Derived , typename DataType , typename KNN >
using toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::point_cloud_ptr = std::shared_ptr<toolbox::types::point_cloud_t<data_type> >

Constructor & Destructor Documentation

◆ base_keypoint_extractor_t() [1/3]

template<typename Derived , typename DataType , typename KNN >
toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::base_keypoint_extractor_t ( )
default

◆ ~base_keypoint_extractor_t()

template<typename Derived , typename DataType , typename KNN >
toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::~base_keypoint_extractor_t ( )
default

◆ base_keypoint_extractor_t() [2/3]

template<typename Derived , typename DataType , typename KNN >
toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::base_keypoint_extractor_t ( const base_keypoint_extractor_t< Derived, DataType, KNN > &  )
delete

禁用拷贝构造函数 / Disable copy constructor

◆ base_keypoint_extractor_t() [3/3]

template<typename Derived , typename DataType , typename KNN >
toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::base_keypoint_extractor_t ( base_keypoint_extractor_t< Derived, DataType, KNN > &&  )
delete

禁用移动构造函数 / Disable move constructor

Member Function Documentation

◆ enable_parallel()

template<typename Derived , typename DataType , typename KNN >
void toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::enable_parallel ( bool  enable)
inline

启用或禁用并行处理 / Enable or disable parallel processing

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

并行处理可以加速关键点提取,但可能会增加内存使用 / Parallel processing can speed up keypoint extraction but may increase memory usage

◆ extract() [1/2]

template<typename Derived , typename DataType , typename KNN >
indices_vector toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::extract ( )
inline

提取关键点索引 / Extract keypoint indices

Returns
关键点在原始点云中的索引 / Indices of keypoints in the original point cloud
// 提取关键点索引示例 / Extract keypoint indices example
auto indices = extractor.extract();
std::cout << "找到 " << indices.size() << " 个关键点 / Found " << indices.size() << " keypoints" << std::endl;
// 访问关键点 / Access keypoints
for (auto idx : indices) {
const auto& keypoint = cloud.points[idx];
// 处理关键点 / Process keypoint
}

◆ extract() [2/2]

template<typename Derived , typename DataType , typename KNN >
void toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::extract ( indices_vector keypoint_indices)
inline

提取关键点索引(输出参数版本) / Extract keypoint indices (output parameter version)

Parameters
[out]keypoint_indices存储关键点索引的向量 / Vector to store keypoint indices

◆ extract_keypoints() [1/2]

template<typename Derived , typename DataType , typename KNN >
point_cloud toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::extract_keypoints ( )
inline

提取关键点云 / Extract keypoint cloud

Returns
包含所有关键点的新点云 / New point cloud containing all keypoints
// 直接获取关键点云示例 / Direct keypoint cloud extraction example
auto keypoint_cloud = extractor.extract_keypoints();
std::cout << "关键点云包含 " << keypoint_cloud.size() << " 个点 / Keypoint cloud contains " << keypoint_cloud.size() << " points" << std::endl;
// 保存关键点云 / Save keypoint cloud
save_point_cloud(keypoint_cloud, "keypoints.pcd");

◆ extract_keypoints() [2/2]

template<typename Derived , typename DataType , typename KNN >
void toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::extract_keypoints ( point_cloud_ptr  output)
inline

提取关键点云(输出参数版本) / Extract keypoint cloud (output parameter version)

Parameters
[out]output存储关键点的点云指针 / Point cloud pointer to store keypoints

◆ get_search_radius()

template<typename Derived , typename DataType , typename KNN >
data_type toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::get_search_radius ( ) const
inlinenoexcept

获取当前搜索半径 / Get current search radius

Returns
搜索半径 / Search radius

◆ operator=() [1/2]

template<typename Derived , typename DataType , typename KNN >
base_keypoint_extractor_t & toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::operator= ( base_keypoint_extractor_t< Derived, DataType, KNN > &&  )
delete

禁用移动赋值运算符 / Disable move assignment operator

◆ operator=() [2/2]

template<typename Derived , typename DataType , typename KNN >
base_keypoint_extractor_t & toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::operator= ( const base_keypoint_extractor_t< Derived, DataType, KNN > &  )
delete

禁用拷贝赋值运算符 / Disable copy assignment operator

◆ set_input() [1/2]

template<typename Derived , typename DataType , typename KNN >
std::size_t toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::set_input ( const point_cloud cloud)
inline

设置输入点云(值传递版本) / Set input point cloud (value passing version)

Parameters
cloud输入点云 / Input point cloud
Returns
成功设置的点数 / Number of successfully set points

◆ set_input() [2/2]

template<typename Derived , typename DataType , typename KNN >
std::size_t toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::set_input ( const point_cloud_ptr cloud)
inline

设置输入点云(智能指针版本) / Set input point cloud (smart pointer version)

Parameters
cloud输入点云的智能指针 / Smart pointer to input point cloud
Returns
成功设置的点数 / Number of successfully set points

◆ set_knn()

template<typename Derived , typename DataType , typename KNN >
std::size_t toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::set_knn ( const knn_type knn)
inline

设置最近邻搜索算法 / Set K-nearest neighbor search algorithm

Parameters
knnKNN算法实例 / KNN algorithm instance
Returns
成功建立索引的点数 / Number of successfully indexed points
// KNN算法选择示例 / KNN algorithm selection example
// 使用KD树(适合低维数据) / Use KD-tree (suitable for low-dimensional data)
extractor.set_knn(kdtree);
// 使用暴力搜索(适合小数据集) / Use brute force (suitable for small datasets)
extractor.set_knn(bfknn);
// 使用并行暴力搜索(适合多核CPU) / Use parallel brute force (suitable for multi-core CPU)
bfknn_parallel_t<float> bfknn_parallel;
extractor.set_knn(bfknn_parallel);
暴力K近邻搜索算法的通用实现 / Generic brute-force K-nearest neighbors search implementation
Definition bfknn.hpp:45
Definition bfknn_parallel.hpp:14

◆ set_search_radius()

template<typename Derived , typename DataType , typename KNN >
std::size_t toolbox::pcl::base_keypoint_extractor_t< Derived, DataType, KNN >::set_search_radius ( data_type  radius)
inline

设置搜索半径 / Set search radius

Parameters
radius搜索半径,用于邻域搜索 / Search radius for neighborhood search
Returns
受影响的点数 / Number of affected points

搜索半径决定了邻域的大小,影响关键点检测的尺度 / Search radius determines the neighborhood size and affects the scale of keypoint detection


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