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

ISS (Intrinsic Shape Signatures) 关键点提取器 / ISS (Intrinsic Shape Signatures) keypoint extractor. More...

#include <iss_keypoints.hpp>

Inheritance diagram for toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >:

Public Types

using base_type = base_keypoint_extractor_t< iss_keypoint_extractor_t< DataType, KNN >, DataType, KNN >
 
using data_type = typename base_type::data_type
 
using knn_type = typename base_type::knn_type
 
using point_cloud = typename base_type::point_cloud
 
using point_cloud_ptr = typename base_type::point_cloud_ptr
 
using indices_vector = typename base_type::indices_vector
 

Public Member Functions

 iss_keypoint_extractor_t ()=default
 
std::size_t set_input_impl (const point_cloud &cloud)
 CRTP实现方法 - 设置输入点云 / CRTP implementation - set input point cloud.
 
std::size_t set_input_impl (const point_cloud_ptr &cloud)
 
std::size_t set_knn_impl (const knn_type &knn)
 CRTP实现方法 - 设置KNN算法 / CRTP implementation - set KNN algorithm.
 
std::size_t set_search_radius_impl (data_type radius)
 CRTP实现方法 - 设置搜索半径 / CRTP implementation - set search radius.
 
void enable_parallel_impl (bool enable)
 CRTP实现方法 - 启用并行处理 / CRTP implementation - enable parallel processing.
 
indices_vector extract_impl ()
 CRTP实现方法 - 提取关键点 / CRTP implementation - extract keypoints.
 
void extract_impl (indices_vector &keypoint_indices)
 
point_cloud extract_keypoints_impl ()
 
void extract_keypoints_impl (point_cloud_ptr output)
 
void set_salient_radius (data_type radius)
 设置显著性半径 / Set saliency radius
 
void set_non_maxima_radius (data_type radius)
 设置非极大值抑制半径 / Set non-maxima suppression radius
 
void set_threshold21 (data_type threshold)
 设置λ2/λ1阈值 / Set λ2/λ1 threshold
 
void set_threshold32 (data_type threshold)
 设置λ3/λ2阈值 / Set λ3/λ2 threshold
 
void set_min_neighbors (std::size_t min_neighbors)
 设置最小邻居数量 / Set minimum number of neighbors
 
data_type get_salient_radius () const
 获取显著性半径 / Get saliency radius
 
data_type get_non_maxima_radius () const
 获取非极大值抑制半径 / Get non-maxima suppression radius
 
data_type get_threshold21 () const
 获取λ2/λ1阈值 / Get λ2/λ1 threshold
 
data_type get_threshold32 () const
 获取λ3/λ2阈值 / Get λ3/λ2 threshold
 
std::size_t get_min_neighbors () const
 获取最小邻居数量 / Get minimum number of neighbors
 

Detailed Description

template<typename DataType, typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
class toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >

ISS (Intrinsic Shape Signatures) 关键点提取器 / ISS (Intrinsic Shape Signatures) keypoint extractor.

Template Parameters
DataType数据类型(float或double) / Data type (float or double)
KNN最近邻搜索算法类型,默认使用 kdtree_generic_t / K-nearest neighbor search algorithm type, defaults to kdtree_generic_t

ISS算法通过计算点云局部区域的特征值比率来检测显著的几何特征点。该算法对噪声鲁棒,能够提取稳定的关键点 / The ISS algorithm detects salient geometric feature points by computing eigenvalue ratios in local regions. It is robust to noise and can extract stable keypoints

// 基本使用示例 / Basic usage example
using data_type = float;
point_cloud_t<data_type> cloud = load_point_cloud();
// 创建ISS关键点提取器 / Create ISS keypoint extractor
// 设置参数 / Set parameters
extractor.set_input(cloud);
extractor.set_salient_radius(1.0f); // 显著性计算半径 / Saliency computation radius
extractor.set_non_maxima_radius(0.5f); // 非极大值抑制半径 / Non-maxima suppression radius
extractor.set_threshold21(0.975f); // λ2/λ1 阈值 / λ2/λ1 threshold
extractor.set_threshold32(0.975f); // λ3/λ2 阈值 / λ3/λ2 threshold
extractor.set_min_neighbors(5);
// 设置KNN算法 / Set KNN algorithm
extractor.set_knn(kdtree);
// 提取关键点 / Extract keypoints
auto keypoints = extractor.extract();
std::cout << "找到 " << keypoints.size() << " 个ISS关键点 / Found " << keypoints.size() << " ISS keypoints" << std::endl;
ISS (Intrinsic Shape Signatures) 关键点提取器 / ISS (Intrinsic Shape Signatures) keypoint extractor.
Definition iss_keypoints.hpp:61
void set_salient_radius(data_type radius)
设置显著性半径 / Set saliency radius
Definition iss_keypoints.hpp:109
void set_threshold21(data_type threshold)
设置λ2/λ1阈值 / Set λ2/λ1 threshold
Definition iss_keypoints.hpp:125
void set_min_neighbors(std::size_t min_neighbors)
设置最小邻居数量 / Set minimum number of neighbors
Definition iss_keypoints.hpp:139
typename base_type::data_type data_type
Definition iss_keypoints.hpp:66
void set_non_maxima_radius(data_type radius)
设置非极大值抑制半径 / Set non-maxima suppression radius
Definition iss_keypoints.hpp:117
void set_threshold32(data_type threshold)
设置λ3/λ2阈值 / Set λ3/λ2 threshold
Definition iss_keypoints.hpp:133
Definition kdtree.hpp:14
// 参数调优示例 / Parameter tuning example
// 更严格的阈值以获得更少但更显著的关键点 / Stricter thresholds for fewer but more salient keypoints
extractor.set_threshold21(0.99f); // 要求更高的特征值比率 / Require higher eigenvalue ratio
extractor.set_threshold32(0.99f);
// 更大的半径以捕获更大尺度的特征 / Larger radius to capture larger scale features
extractor.set_salient_radius(2.0f);
extractor.set_non_maxima_radius(1.0f);

Member Typedef Documentation

◆ base_type

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
using toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::base_type = base_keypoint_extractor_t<iss_keypoint_extractor_t<DataType, KNN>, DataType, KNN>

◆ data_type

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
using toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::data_type = typename base_type::data_type

◆ indices_vector

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
using toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::indices_vector = typename base_type::indices_vector

◆ knn_type

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
using toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::knn_type = typename base_type::knn_type

◆ point_cloud

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
using toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::point_cloud = typename base_type::point_cloud

◆ point_cloud_ptr

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
using toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::point_cloud_ptr = typename base_type::point_cloud_ptr

Constructor & Destructor Documentation

◆ iss_keypoint_extractor_t()

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::iss_keypoint_extractor_t ( )
default

Member Function Documentation

◆ enable_parallel_impl()

template<typename DataType , typename KNN >
void toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::enable_parallel_impl ( bool  enable)

CRTP实现方法 - 启用并行处理 / CRTP implementation - enable parallel processing.

◆ extract_impl() [1/2]

template<typename DataType , typename KNN >
iss_keypoint_extractor_t< DataType, KNN >::indices_vector toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::extract_impl ( )

CRTP实现方法 - 提取关键点 / CRTP implementation - extract keypoints.

◆ extract_impl() [2/2]

template<typename DataType , typename KNN >
void toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::extract_impl ( indices_vector keypoint_indices)

◆ extract_keypoints_impl() [1/2]

template<typename DataType , typename KNN >
iss_keypoint_extractor_t< DataType, KNN >::point_cloud toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::extract_keypoints_impl ( )

◆ extract_keypoints_impl() [2/2]

template<typename DataType , typename KNN >
void toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::extract_keypoints_impl ( point_cloud_ptr  output)

◆ get_min_neighbors()

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
std::size_t toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::get_min_neighbors ( ) const
inline

获取最小邻居数量 / Get minimum number of neighbors

Returns
当前的最小邻居数量 / Current minimum number of neighbors

◆ get_non_maxima_radius()

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
data_type toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::get_non_maxima_radius ( ) const
inline

获取非极大值抑制半径 / Get non-maxima suppression radius

Returns
当前的非极大值抑制半径 / Current non-maxima suppression radius

◆ get_salient_radius()

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
data_type toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::get_salient_radius ( ) const
inline

获取显著性半径 / Get saliency radius

Returns
当前的显著性半径 / Current saliency radius

◆ get_threshold21()

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
data_type toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::get_threshold21 ( ) const
inline

获取λ2/λ1阈值 / Get λ2/λ1 threshold

Returns
当前的λ2/λ1阈值 / Current λ2/λ1 threshold

◆ get_threshold32()

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
data_type toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::get_threshold32 ( ) const
inline

获取λ3/λ2阈值 / Get λ3/λ2 threshold

Returns
当前的λ3/λ2阈值 / Current λ3/λ2 threshold

◆ set_input_impl() [1/2]

template<typename DataType , typename KNN >
std::size_t toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::set_input_impl ( const point_cloud cloud)

CRTP实现方法 - 设置输入点云 / CRTP implementation - set input point cloud.

◆ set_input_impl() [2/2]

template<typename DataType , typename KNN >
std::size_t toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::set_input_impl ( const point_cloud_ptr cloud)

◆ set_knn_impl()

template<typename DataType , typename KNN >
std::size_t toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::set_knn_impl ( const knn_type knn)

CRTP实现方法 - 设置KNN算法 / CRTP implementation - set KNN algorithm.

◆ set_min_neighbors()

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
void toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::set_min_neighbors ( std::size_t  min_neighbors)
inline

设置最小邻居数量 / Set minimum number of neighbors

Parameters
min_neighbors有效计算所需的最小邻居数 / Minimum neighbors required for valid computation

◆ set_non_maxima_radius()

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
void toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::set_non_maxima_radius ( data_type  radius)
inline

设置非极大值抑制半径 / Set non-maxima suppression radius

Parameters
radius非极大值抑制的半径 / Radius for non-maxima suppression

在此半径内只保留显著性最高的点 / Only the point with highest saliency within this radius is kept

◆ set_salient_radius()

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
void toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::set_salient_radius ( data_type  radius)
inline

设置显著性半径 / Set saliency radius

Parameters
radius用于计算显著性的邻域半径 / Neighborhood radius for saliency computation

较大的半径会考虑更大的局部区域,适合检测大尺度特征 / Larger radius considers larger local regions, suitable for detecting large-scale features

◆ set_search_radius_impl()

template<typename DataType , typename KNN >
std::size_t toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::set_search_radius_impl ( data_type  radius)

CRTP实现方法 - 设置搜索半径 / CRTP implementation - set search radius.

◆ set_threshold21()

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
void toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::set_threshold21 ( data_type  threshold)
inline

设置λ2/λ1阈值 / Set λ2/λ1 threshold

Parameters
threshold第二特征值与第一特征值的比率阈值 / Ratio threshold for second to first eigenvalue

较高的阈值(接近1)要求更均匀的特征值分布,产生更少的关键点 / Higher threshold (close to 1) requires more uniform eigenvalue distribution, producing fewer keypoints

◆ set_threshold32()

template<typename DataType , typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
void toolbox::pcl::iss_keypoint_extractor_t< DataType, KNN >::set_threshold32 ( data_type  threshold)
inline

设置λ3/λ2阈值 / Set λ3/λ2 threshold

Parameters
threshold第三特征值与第二特征值的比率阈值 / Ratio threshold for third to second eigenvalue

较高的阈值(接近1)要求更均匀的特征值分布,产生更少的关键点 / Higher threshold (close to 1) requires more uniform eigenvalue distribution, producing fewer keypoints


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