cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
base_feature_extractor.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cpp-toolbox/cpp-toolbox_export.hpp>
6
7namespace toolbox::pcl
8{
9
42template<typename Derived, typename DataType, typename KNN>
43class CPP_TOOLBOX_EXPORT base_keypoint_extractor_t
44{
45public:
46 using data_type = DataType;
47 using knn_type = KNN;
49 using point_cloud_ptr = std::shared_ptr<toolbox::types::point_cloud_t<data_type>>;
50 using indices_vector = std::vector<std::size_t>;
51
54
60 std::size_t set_input(const point_cloud& cloud)
61 {
62 return static_cast<Derived*>(this)->set_input_impl(cloud);
63 }
64
70 std::size_t set_input(const point_cloud_ptr& cloud)
71 {
72 return static_cast<Derived*>(this)->set_input_impl(cloud);
73 }
74
82 std::size_t set_search_radius(data_type radius)
83 {
84 m_search_radius = radius;
85 return static_cast<Derived*>(this)->set_search_radius_impl(radius);
86 }
87
92 [[nodiscard]] data_type get_search_radius() const noexcept
93 {
94 return m_search_radius;
95 }
96
117 std::size_t set_knn(const knn_type& knn)
118 {
119 return static_cast<Derived*>(this)->set_knn_impl(knn);
120 }
121
128 void enable_parallel(bool enable)
129 {
130 static_cast<Derived*>(this)->enable_parallel_impl(enable);
131 }
132
150 {
151 return static_cast<Derived*>(this)->extract_impl();
152 }
153
158 void extract(indices_vector& keypoint_indices)
159 {
160 static_cast<Derived*>(this)->extract_impl(keypoint_indices);
161 }
162
177 {
178 return static_cast<Derived*>(this)->extract_keypoints_impl();
179 }
180
186 {
187 static_cast<Derived*>(this)->extract_keypoints_impl(output);
188 }
189
194
199
204
209
210private:
214 data_type m_search_radius = static_cast<data_type>(1.0);
215}; // class base_keypoint_extractor_t
216
217} // namespace toolbox::pcl
关键点提取器的基类,使用CRTP模式实现静态多态 / Base class for keypoint extractors using CRTP pattern for static polymorph...
Definition base_feature_extractor.hpp:44
DataType data_type
Definition base_feature_extractor.hpp:46
KNN knn_type
Definition base_feature_extractor.hpp:47
std::size_t set_input(const point_cloud &cloud)
设置输入点云(值传递版本) / Set input point cloud (value passing version)
Definition base_feature_extractor.hpp:60
base_keypoint_extractor_t & operator=(const base_keypoint_extractor_t &)=delete
禁用拷贝赋值运算符 / Disable copy assignment operator
base_keypoint_extractor_t & operator=(base_keypoint_extractor_t &&)=delete
禁用移动赋值运算符 / Disable move assignment operator
base_keypoint_extractor_t(const base_keypoint_extractor_t &)=delete
禁用拷贝构造函数 / Disable copy constructor
void extract(indices_vector &keypoint_indices)
提取关键点索引(输出参数版本) / Extract keypoint indices (output parameter version)
Definition base_feature_extractor.hpp:158
std::vector< std::size_t > indices_vector
Definition base_feature_extractor.hpp:50
std::shared_ptr< toolbox::types::point_cloud_t< data_type > > point_cloud_ptr
Definition base_feature_extractor.hpp:49
void extract_keypoints(point_cloud_ptr output)
提取关键点云(输出参数版本) / Extract keypoint cloud (output parameter version)
Definition base_feature_extractor.hpp:185
point_cloud extract_keypoints()
提取关键点云 / Extract keypoint cloud
Definition base_feature_extractor.hpp:176
indices_vector extract()
提取关键点索引 / Extract keypoint indices
Definition base_feature_extractor.hpp:149
std::size_t set_input(const point_cloud_ptr &cloud)
设置输入点云(智能指针版本) / Set input point cloud (smart pointer version)
Definition base_feature_extractor.hpp:70
std::size_t set_search_radius(data_type radius)
设置搜索半径 / Set search radius
Definition base_feature_extractor.hpp:82
std::size_t set_knn(const knn_type &knn)
设置最近邻搜索算法 / Set K-nearest neighbor search algorithm
Definition base_feature_extractor.hpp:117
void enable_parallel(bool enable)
启用或禁用并行处理 / Enable or disable parallel processing
Definition base_feature_extractor.hpp:128
base_keypoint_extractor_t(base_keypoint_extractor_t &&)=delete
禁用移动构造函数 / Disable move constructor
data_type get_search_radius() const noexcept
获取当前搜索半径 / Get current search radius
Definition base_feature_extractor.hpp:92
包含点和相关数据的点云类 / A point cloud class containing points and associated data
Definition point.hpp:268
Definition base_correspondence_generator.hpp:18