Point Cloud Library (PCL) 1.12.0
Loading...
Searching...
No Matches
unary_classifier.h
1/*
2 * Software License Agreement (BSD License)
3 *
4 * Point Cloud Library (PCL) - www.pointclouds.org
5 *
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 * * Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * * Redistributions in binary form must reproduce the above
15 * copyright notice, this list of conditions and the following
16 * disclaimer in the documentation and/or other materials provided
17 * with the distribution.
18 * * Neither the name of the copyright holder(s) nor the names of its
19 * contributors may be used to endorse or promote products derived
20 * from this software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 * POSSIBILITY OF SUCH DAMAGE.
34 *
35 * Author : Christian Potthast
36 * Email : potthast@usc.edu
37 *
38 */
39
40#pragma once
41
42#include <pcl/memory.h>
43#include <pcl/pcl_macros.h>
44#include <pcl/point_cloud.h>
45#include <pcl/point_types.h>
46
47#include <pcl/features/fpfh.h>
48#include <pcl/features/normal_3d.h>
49
50#include <pcl/ml/kmeans.h>
51
52namespace pcl
53{
54 /** \brief
55 *
56 */
57 template <typename PointT>
58 class PCL_EXPORTS UnaryClassifier
59 {
60 public:
61
62 /** \brief Constructor that sets default values for member variables. */
64
65 /** \brief This destructor destroys the cloud...
66 *
67 */
69
70 /** \brief This method sets the input cloud.
71 * \param[in] input_cloud input point cloud
72 */
73 void
74 setInputCloud (typename pcl::PointCloud<PointT>::Ptr input_cloud);
75
76 void
78
79 void
80 trainWithLabel (std::vector<pcl::PointCloud<pcl::FPFHSignature33>, Eigen::aligned_allocator<pcl::PointCloud<pcl::FPFHSignature33> > > &output);
81
82 void
84
85 void
86 queryFeatureDistances (std::vector<pcl::PointCloud<pcl::FPFHSignature33>::Ptr> &trained_features,
88 pcl::Indices &indi,
89 std::vector<float> &dist);
90
91 void
92 assignLabels (pcl::Indices &indi,
93 std::vector<float> &dist,
94 int n_feature_means,
95 float feature_threshold,
97
98 void
99 setClusterSize (unsigned int k){cluster_size_ = k;};
100
101 void
102 setNormalRadiusSearch (float param){normal_radius_search_ = param;};
103
104 void
105 setFPFHRadiusSearch (float param){fpfh_radius_search_ = param;};
106
107 void
108 setLabelField (bool l){label_field_ = l;};
109
110 void
111 setTrainedFeatures (std::vector<pcl::PointCloud<pcl::FPFHSignature33>::Ptr> &features){trained_features_ = features;};
112
113 void
114 setFeatureThreshold (float threshold){feature_threshold_ = threshold;};
115
116 protected:
117
118 void
119 convertCloud (typename pcl::PointCloud<PointT>::Ptr in,
121
122 void
123 convertCloud (typename pcl::PointCloud<PointT>::Ptr in,
125
126 void
127 findClusters (typename pcl::PointCloud<PointT>::Ptr in,
128 std::vector<int> &cluster_numbers);
129
130 void
131 getCloudWithLabel (typename pcl::PointCloud<PointT>::Ptr in,
133 int label_num);
134
135 void
138 float normal_radius_search,
139 float fpfh_radius_search);
140
141 void
144 int k);
145
146
147
148 /** \brief Contains the input cloud */
150
152
153 unsigned int cluster_size_;
154
158
159
160 std::vector<pcl::PointCloud<pcl::FPFHSignature33>::Ptr> trained_features_;
161
162 /** \brief Contains normals of the points that will be segmented. */
163 //typename pcl::PointCloud<pcl::Normal>::Ptr normals_;
164
165 /** \brief Stores the cloud that will be segmented. */
166 //typename pcl::PointCloud<PointT>::Ptr cloud_for_segmentation_;
167
168 public:
170 };
171}
172
173#ifdef PCL_NO_PRECOMPILE
174#include <pcl/segmentation/impl/unary_classifier.hpp>
175#endif
PointCloud represents the base class in PCL for storing collections of 3D points.
shared_ptr< PointCloud< PointT > > Ptr
void setFPFHRadiusSearch(float param)
void setTrainedFeatures(std::vector< pcl::PointCloud< pcl::FPFHSignature33 >::Ptr > &features)
void setNormalRadiusSearch(float param)
void setClusterSize(unsigned int k)
pcl::PointCloud< PointT >::Ptr input_cloud_
Contains the input cloud.
void setFeatureThreshold(float threshold)
std::vector< pcl::PointCloud< pcl::FPFHSignature33 >::Ptr > trained_features_
Defines all the PCL implemented PointT point type structures.
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
Definition memory.h:63
Defines functions, macros and traits for allocating and using memory.
IndicesAllocator<> Indices
Type used for indices in PCL.
Definition types.h:133
Defines all the PCL and non-PCL macros used.