cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
pca_norm.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cpp-toolbox/cpp-toolbox_export.hpp>
7
8namespace toolbox::pcl
9{
10
51template<typename DataType, typename KNN = kdtree_generic_t<point_t<DataType>, toolbox::metrics::L2Metric<DataType>>>
52class CPP_TOOLBOX_EXPORT pca_norm_extractor_t
53 : public base_norm_extractor_t<pca_norm_extractor_t<DataType, KNN>,
54 DataType,
55 KNN>
56{
57public:
58 using base_type =
61 using knn_type = typename base_type::knn_type;
64
70 std::size_t set_input_impl(const point_cloud& cloud);
71
77 std::size_t set_input_impl(const point_cloud_ptr& cloud);
78
84 std::size_t set_knn_impl(const knn_type& knn);
85
95 std::size_t set_num_neighbors_impl(std::size_t num_neighbors);
96
101 point_cloud extract_impl();
102
107 void extract_impl(point_cloud_ptr output);
108
120 void enable_parallel(bool enable) { m_enable_parallel = enable; }
121
122private:
129 void compute_normals_range(point_cloud_ptr output, std::size_t start_idx, std::size_t end_idx);
130
136 point_t<data_type> compute_pca_normal(const std::vector<std::size_t>& indices);
137
138 bool m_enable_parallel = false;
139 std::size_t m_num_neighbors = 0;
140 point_cloud_ptr m_cloud;
141 knn_type* m_knn = nullptr;
142}; // class pca_norm_extractor_t
143
144} // namespace toolbox::pcl
145
法向量提取器的基类(CRTP模式) / Base class for normal extractors (CRTP pattern)
Definition base_norm.hpp:43
KNN knn_type
Definition base_norm.hpp:46
std::shared_ptr< toolbox::types::point_cloud_t< data_type > > point_cloud_ptr
Definition base_norm.hpp:50
DataType data_type
Definition base_norm.hpp:45
基于PCA的法向量提取器 / PCA-based normal extractor
Definition pca_norm.hpp:56
typename base_type::knn_type knn_type
Definition pca_norm.hpp:61
typename base_type::data_type data_type
Definition pca_norm.hpp:60
typename base_type::point_cloud point_cloud
Definition pca_norm.hpp:62
void enable_parallel(bool enable)
启用或禁用并行计算 / Enable or disable parallel computation
Definition pca_norm.hpp:120
typename base_type::point_cloud_ptr point_cloud_ptr
Definition pca_norm.hpp:63
包含点和相关数据的点云类 / A point cloud class containing points and associated data
Definition point.hpp:268
Definition base_correspondence_generator.hpp:18
3D点/向量模板类 / A 3D point/vector template class
Definition point.hpp:48