Point Cloud Library (PCL)
1.15.1
Toggle main menu visibility
Loading...
Searching...
No Matches
pcl
features
esf.h
1
/*
2
* Software License Agreement (BSD License)
3
*
4
* Point Cloud Library (PCL) - www.pointclouds.org
5
* Copyright (c) 2010-2012, Willow Garage, Inc.
6
* Copyright (c) 2012-, Open Perception, Inc.
7
*
8
* All rights reserved.
9
*
10
* Redistribution and use in source and binary forms, with or without
11
* modification, are permitted provided that the following conditions
12
* are met:
13
*
14
* * Redistributions of source code must retain the above copyright
15
* notice, this list of conditions and the following disclaimer.
16
* * Redistributions in binary form must reproduce the above
17
* copyright notice, this list of conditions and the following
18
* disclaimer in the documentation and/or other materials provided
19
* with the distribution.
20
* * Neither the name of the copyright holder(s) nor the names of its
21
* contributors may be used to endorse or promote products derived
22
* from this software without specific prior written permission.
23
*
24
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35
* POSSIBILITY OF SUCH DAMAGE.
36
*
37
* $Id: pfh.hpp 5027 2012-03-12 03:10:45Z rusu $
38
*
39
*/
40
41
#pragma once
42
43
#include <pcl/features/feature.h>
44
#define GRIDSIZE 64
45
#define GRIDSIZE_H (GRIDSIZE/2)
46
#include <vector>
47
48
namespace
pcl
49
{
50
/** \brief @b ESFEstimation estimates the ensemble of shape functions descriptors for a given point cloud
51
* dataset containing points. Shape functions are D2, D3, A3. For more information about the ESF descriptor, see:
52
* Walter Wohlkinger and Markus Vincze, "Ensemble of Shape Functions for 3D Object Classification",
53
* IEEE International Conference on Robotics and Biomimetics (IEEE-ROBIO), 2011
54
* \author Walter Wohlkinger
55
* \ingroup features
56
*/
57
58
template
<
typename
Po
int
InT,
typename
Po
int
OutT = pcl::ESFSignature640>
59
class
ESFEstimation
:
public
Feature
<PointInT, PointOutT>
60
{
61
public
:
62
using
Ptr
= shared_ptr<ESFEstimation<PointInT, PointOutT> >;
63
using
ConstPtr
= shared_ptr<const ESFEstimation<PointInT, PointOutT> >;
64
65
using
Feature
<PointInT, PointOutT>
::feature_name_
;
66
using
Feature
<PointInT, PointOutT>
::getClassName
;
67
using
Feature
<PointInT, PointOutT>
::indices_
;
68
using
Feature
<PointInT, PointOutT>
::k_
;
69
using
Feature
<PointInT, PointOutT>
::search_radius_
;
70
using
Feature
<PointInT, PointOutT>
::input_
;
71
using
Feature
<PointInT, PointOutT>
::surface_
;
72
73
using
PointCloudIn
=
pcl::PointCloud<PointInT>
;
74
using
PointCloudOut
=
typename
Feature<PointInT, PointOutT>::PointCloudOut
;
75
76
/** \brief Empty constructor. */
77
ESFEstimation
() : local_cloud_ ()
78
{
79
feature_name_
=
"ESFEstimation"
;
80
lut_.resize (GRIDSIZE);
81
for
(
int
i = 0; i < GRIDSIZE; ++i)
82
{
83
lut_[i].resize (GRIDSIZE);
84
for
(
int
j = 0; j < GRIDSIZE; ++j)
85
lut_[i][j].resize (GRIDSIZE);
86
}
87
//lut_.resize (boost::extents[GRIDSIZE][GRIDSIZE][GRIDSIZE]);
88
search_radius_
= 0;
89
k_
= 5;
90
}
91
92
/** \brief Overloaded computed method from pcl::Feature.
93
* \param[out] output the resultant point cloud model dataset containing the estimated features
94
*/
95
void
96
compute
(
PointCloudOut
&output);
97
98
protected
:
99
100
/** \brief Estimate the Ensebmel of Shape Function (ESF) descriptors at a set of points given by
101
* <setInputCloud (),
102
* \param output the resultant point cloud model histogram that contains the ESF feature estimates
103
*/
104
void
105
computeFeature
(
PointCloudOut
&output)
override
;
106
107
/** \brief ... */
108
int
109
lci
(
const
int
x1,
const
int
y1,
const
int
z1,
110
const
int
x2,
const
int
y2,
const
int
z2,
111
float
&ratio,
int
&incnt,
int
&pointcount);
112
113
/** \brief ... */
114
void
115
computeESF
(
PointCloudIn
&pc, std::vector<float> &hist);
116
117
/** \brief ... */
118
void
119
voxelize9
(
PointCloudIn
&cluster);
120
121
/** \brief ... */
122
void
123
cleanup9
(
PointCloudIn
&cluster);
124
125
/** \brief ... */
126
void
127
scale_points_unit_sphere
(
const
pcl::PointCloud<PointInT>
&pc,
float
scalefactor, Eigen::Vector4f& centroid);
128
129
private
:
130
131
/** \brief ... */
132
std::vector<std::vector<std::vector<int> > > lut_;
133
134
/** \brief ... */
135
PointCloudIn
local_cloud_;
136
};
137
}
138
139
#ifdef PCL_NO_PRECOMPILE
140
#include <pcl/features/impl/esf.hpp>
141
#endif
pcl::ESFEstimation::ConstPtr
shared_ptr< const ESFEstimation< PointInT, PointOutT > > ConstPtr
Definition
esf.h:63
pcl::ESFEstimation::PointCloudIn
pcl::PointCloud< PointInT > PointCloudIn
Definition
esf.h:73
pcl::ESFEstimation::Ptr
shared_ptr< ESFEstimation< PointInT, PointOutT > > Ptr
Definition
esf.h:62
pcl::ESFEstimation::compute
void compute(PointCloudOut &output)
Overloaded computed method from pcl::Feature.
Definition
esf.hpp:506
pcl::ESFEstimation::computeESF
void computeESF(PointCloudIn &pc, std::vector< float > &hist)
...
Definition
esf.hpp:52
pcl::ESFEstimation::ESFEstimation
ESFEstimation()
Empty constructor.
Definition
esf.h:77
pcl::ESFEstimation::PointCloudOut
typename Feature< PointInT, PointOutT >::PointCloudOut PointCloudOut
Definition
esf.h:74
pcl::ESFEstimation::voxelize9
void voxelize9(PointCloudIn &cluster)
...
Definition
esf.hpp:425
pcl::ESFEstimation::scale_points_unit_sphere
void scale_points_unit_sphere(const pcl::PointCloud< PointInT > &pc, float scalefactor, Eigen::Vector4f ¢roid)
...
Definition
esf.hpp:481
pcl::ESFEstimation::lci
int lci(const int x1, const int y1, const int z1, const int x2, const int y2, const int z2, float &ratio, int &incnt, int &pointcount)
...
Definition
esf.hpp:306
pcl::ESFEstimation::cleanup9
void cleanup9(PointCloudIn &cluster)
...
Definition
esf.hpp:453
pcl::ESFEstimation::computeFeature
void computeFeature(PointCloudOut &output) override
Estimate the Ensebmel of Shape Function (ESF) descriptors at a set of points given by <setInputCloud ...
Definition
esf.hpp:534
pcl::Feature< PointInT, pcl::ESFSignature640 >::getClassName
const std::string & getClassName() const
Definition
feature.h:244
pcl::Feature::PointCloudOut
pcl::PointCloud< PointOutT > PointCloudOut
Definition
feature.h:124
pcl::Feature< PointInT, pcl::ESFSignature640 >::search_radius_
double search_radius_
Definition
feature.h:237
pcl::Feature< PointInT, pcl::ESFSignature640 >::k_
int k_
Definition
feature.h:240
pcl::Feature< PointInT, pcl::ESFSignature640 >::feature_name_
std::string feature_name_
Definition
feature.h:220
pcl::Feature< PointInT, pcl::ESFSignature640 >::Feature
Feature()
Definition
feature.h:131
pcl::Feature< PointInT, pcl::ESFSignature640 >::surface_
PointCloudInConstPtr surface_
Definition
feature.h:228
pcl::PointCloudOut
pcl::PCLBase< PointInT >::input_
PointCloudConstPtr input_
Definition
pcl_base.h:147
pcl::PCLBase< PointInT >::indices_
IndicesPtr indices_
Definition
pcl_base.h:150
pcl::PointCloud
PointCloud represents the base class in PCL for storing collections of 3D points.
Definition
point_cloud.h:174
pcl
Definition
convolution.h:46