cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
harris3d_keypoints.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cpp-toolbox/cpp-toolbox_export.hpp>
8
9namespace toolbox::pcl
10{
11
57template<typename DataType,
58 typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
59class CPP_TOOLBOX_EXPORT harris3d_keypoint_extractor_t
60 : public base_keypoint_extractor_t<harris3d_keypoint_extractor_t<DataType, KNN>,
61 DataType,
62 KNN>
63{
64public:
66 DataType,
67 KNN>;
69 using knn_type = typename base_type::knn_type;
73
75
79 std::size_t set_input_impl(const point_cloud& cloud);
80 std::size_t set_input_impl(const point_cloud_ptr& cloud);
81
85 std::size_t set_knn_impl(const knn_type& knn);
86
90 std::size_t set_search_radius_impl(data_type radius);
91
95 void enable_parallel_impl(bool enable);
96
100 indices_vector extract_impl();
101 void extract_impl(indices_vector& keypoint_indices);
102 point_cloud extract_keypoints_impl();
103 void extract_keypoints_impl(point_cloud_ptr output);
104
111 void set_threshold(data_type threshold) { m_threshold = threshold; }
112
119 void set_harris_k(data_type k) { m_harris_k = k; }
120
127 void set_suppression_radius(data_type radius) { m_suppression_radius = radius; }
128
135 void set_num_neighbors(std::size_t num_neighbors) { m_num_neighbors = num_neighbors; }
136
141 [[nodiscard]] data_type get_threshold() const { return m_threshold; }
142
147 [[nodiscard]] data_type get_harris_k() const { return m_harris_k; }
148
153 [[nodiscard]] data_type get_suppression_radius() const { return m_suppression_radius; }
154
159 [[nodiscard]] std::size_t get_num_neighbors() const { return m_num_neighbors; }
160
161private:
165 struct Harris3DInfo
166 {
167 data_type harris_response;
168 bool is_valid;
169 };
170
176 Harris3DInfo compute_harris3d_response(std::size_t point_idx);
177
182 std::vector<Harris3DInfo> compute_all_harris_responses();
183
189 indices_vector apply_non_maxima_suppression(const std::vector<Harris3DInfo>& harris_responses);
190
197 void compute_harris_range(std::vector<Harris3DInfo>& harris_responses,
198 std::size_t start_idx,
199 std::size_t end_idx);
200
201 // 成员变量 / Member variables
202 bool m_enable_parallel = false;
203 data_type m_threshold = static_cast<data_type>(0.01);
204 data_type m_harris_k = static_cast<data_type>(0.04);
205 data_type m_suppression_radius = static_cast<data_type>(0.1);
206 std::size_t m_num_neighbors = 20;
207
208 point_cloud_ptr m_cloud;
209 knn_type* m_knn = nullptr;
210
214 static constexpr std::size_t k_parallel_threshold = 1000;
215}; // class harris3d_keypoint_extractor_t
216
217} // namespace toolbox::pcl
218
Definition vector_metrics.hpp:18
关键点提取器的基类,使用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::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
Harris 3D 关键点提取器 / Harris 3D keypoint extractor.
Definition harris3d_keypoints.hpp:63
void set_threshold(data_type threshold)
设置Harris响应阈值 / Set Harris response threshold
Definition harris3d_keypoints.hpp:111
typename base_type::data_type data_type
Definition harris3d_keypoints.hpp:68
data_type get_suppression_radius() const
获取非极大值抑制半径 / Get non-maxima suppression radius
Definition harris3d_keypoints.hpp:153
std::size_t get_num_neighbors() const
获取近邻数量 / Get number of neighbors
Definition harris3d_keypoints.hpp:159
data_type get_harris_k() const
获取Harris参数k / Get Harris parameter k
Definition harris3d_keypoints.hpp:147
void set_num_neighbors(std::size_t num_neighbors)
设置近邻数量 / Set number of neighbors
Definition harris3d_keypoints.hpp:135
void set_suppression_radius(data_type radius)
设置非极大值抑制半径 / Set non-maxima suppression radius
Definition harris3d_keypoints.hpp:127
typename base_type::indices_vector indices_vector
Definition harris3d_keypoints.hpp:72
typename base_type::knn_type knn_type
Definition harris3d_keypoints.hpp:69
typename base_type::point_cloud point_cloud
Definition harris3d_keypoints.hpp:70
typename base_type::point_cloud_ptr point_cloud_ptr
Definition harris3d_keypoints.hpp:71
void set_harris_k(data_type k)
设置Harris参数k / Set Harris parameter k
Definition harris3d_keypoints.hpp:119
data_type get_threshold() const
获取Harris响应阈值 / Get Harris response threshold
Definition harris3d_keypoints.hpp:141
包含点和相关数据的点云类 / A point cloud class containing points and associated data
Definition point.hpp:268
Definition base_correspondence_generator.hpp:18