Point Cloud Library (PCL)
1.15.1
Toggle main menu visibility
Loading...
Searching...
No Matches
pcl
surface
surfel_smoothing.h
1
/*
2
* Software License Agreement (BSD License)
3
*
4
* Copyright (c) 2011, Alexandru-Eugen Ichim
5
* Willow Garage, Inc
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 Willow Garage, Inc. 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
* $Id$
36
*/
37
38
#pragma once
39
40
#include <pcl/pcl_base.h>
41
#include <pcl/search/search.h>
// for Search
42
43
namespace
pcl
44
{
45
template
<
typename
Po
int
T,
typename
Po
int
NT>
46
class
SurfelSmoothing
:
public
PCLBase
<PointT>
47
{
48
using
PCLBase
<PointT>
::input_
;
49
using
PCLBase
<PointT>
::initCompute
;
50
51
public
:
52
using
Ptr
= shared_ptr<SurfelSmoothing<PointT, PointNT> >;
53
using
ConstPtr
= shared_ptr<const SurfelSmoothing<PointT, PointNT> >;
54
55
using
PointCloudIn
=
pcl::PointCloud<PointT>
;
56
using
PointCloudInPtr
=
typename
pcl::PointCloud<PointT>::Ptr
;
57
using
NormalCloud
=
pcl::PointCloud<PointNT>
;
58
using
NormalCloudPtr
=
typename
pcl::PointCloud<PointNT>::Ptr
;
59
using
CloudKdTree
=
pcl::search::Search<PointT>
;
60
using
CloudKdTreePtr
=
typename
pcl::search::Search<PointT>::Ptr
;
61
62
SurfelSmoothing
(
float
a_scale = 0.01)
63
:
PCLBase
<PointT> ()
64
, scale_ (a_scale)
65
, scale_squared_ (a_scale * a_scale)
66
, normals_ ()
67
, interm_cloud_ ()
68
, interm_normals_ ()
69
, tree_ ()
70
{
71
}
72
73
void
74
setInputNormals
(
NormalCloudPtr
&a_normals) { normals_ = a_normals; };
75
76
void
77
setSearchMethod
(
const
CloudKdTreePtr
&a_tree) { tree_ = a_tree; };
78
79
bool
80
initCompute
();
81
82
float
83
smoothCloudIteration
(
PointCloudInPtr
&output_positions,
84
NormalCloudPtr
&output_normals);
85
86
void
87
computeSmoothedCloud
(
PointCloudInPtr
&output_positions,
88
NormalCloudPtr
&output_normals);
89
90
91
void
92
smoothPoint
(std::size_t &point_index,
93
PointT &output_point,
94
PointNT &output_normal);
95
96
void
97
extractSalientFeaturesBetweenScales
(
PointCloudInPtr
&cloud2,
98
NormalCloudPtr
&cloud2_normals,
99
pcl::IndicesPtr
&output_features);
100
101
private
:
102
float
scale_, scale_squared_;
103
NormalCloudPtr
normals_;
104
105
PointCloudInPtr
interm_cloud_;
106
NormalCloudPtr
interm_normals_;
107
108
CloudKdTreePtr
tree_;
109
110
};
111
}
112
113
#ifdef PCL_NO_PRECOMPILE
114
#include <pcl/surface/impl/surfel_smoothing.hpp>
115
#endif
pcl::PCLBase::input_
PointCloudConstPtr input_
The input point cloud dataset.
Definition
pcl_base.h:147
pcl::PCLBase::PCLBase
PCLBase()
Empty constructor.
Definition
pcl_base.hpp:46
pcl::PointCloud
PointCloud represents the base class in PCL for storing collections of 3D points.
Definition
point_cloud.h:174
pcl::PointCloud::Ptr
shared_ptr< PointCloud< PointT > > Ptr
Definition
point_cloud.h:414
pcl::SurfelSmoothing::NormalCloudPtr
typename pcl::PointCloud< PointNT >::Ptr NormalCloudPtr
Definition
surfel_smoothing.h:58
pcl::SurfelSmoothing::PointCloudIn
pcl::PointCloud< PointT > PointCloudIn
Definition
surfel_smoothing.h:55
pcl::SurfelSmoothing::extractSalientFeaturesBetweenScales
void extractSalientFeaturesBetweenScales(PointCloudInPtr &cloud2, NormalCloudPtr &cloud2_normals, pcl::IndicesPtr &output_features)
Definition
surfel_smoothing.hpp:276
pcl::SurfelSmoothing::initCompute
bool initCompute()
Definition
surfel_smoothing.hpp:49
pcl::SurfelSmoothing::smoothCloudIteration
float smoothCloudIteration(PointCloudInPtr &output_positions, NormalCloudPtr &output_normals)
Definition
surfel_smoothing.hpp:85
pcl::SurfelSmoothing::setInputNormals
void setInputNormals(NormalCloudPtr &a_normals)
Definition
surfel_smoothing.h:74
pcl::SurfelSmoothing::ConstPtr
shared_ptr< const SurfelSmoothing< PointT, PointNT > > ConstPtr
Definition
surfel_smoothing.h:53
pcl::SurfelSmoothing::SurfelSmoothing
SurfelSmoothing(float a_scale=0.01)
Definition
surfel_smoothing.h:62
pcl::SurfelSmoothing::smoothPoint
void smoothPoint(std::size_t &point_index, PointT &output_point, PointNT &output_normal)
Definition
surfel_smoothing.hpp:161
pcl::SurfelSmoothing::computeSmoothedCloud
void computeSmoothedCloud(PointCloudInPtr &output_positions, NormalCloudPtr &output_normals)
Definition
surfel_smoothing.hpp:247
pcl::SurfelSmoothing::CloudKdTree
pcl::search::Search< PointT > CloudKdTree
Definition
surfel_smoothing.h:59
pcl::SurfelSmoothing::setSearchMethod
void setSearchMethod(const CloudKdTreePtr &a_tree)
Definition
surfel_smoothing.h:77
pcl::SurfelSmoothing::Ptr
shared_ptr< SurfelSmoothing< PointT, PointNT > > Ptr
Definition
surfel_smoothing.h:52
pcl::SurfelSmoothing::NormalCloud
pcl::PointCloud< PointNT > NormalCloud
Definition
surfel_smoothing.h:57
pcl::SurfelSmoothing::CloudKdTreePtr
typename pcl::search::Search< PointT >::Ptr CloudKdTreePtr
Definition
surfel_smoothing.h:60
pcl::SurfelSmoothing::PointCloudInPtr
typename pcl::PointCloud< PointT >::Ptr PointCloudInPtr
Definition
surfel_smoothing.h:56
pcl::search::Search
Generic search class.
Definition
search.h:75
pcl::search::Search::Ptr
shared_ptr< pcl::search::Search< PointT > > Ptr
Definition
search.h:81
pcl
Definition
convolution.h:46
pcl::IndicesPtr
shared_ptr< Indices > IndicesPtr
Definition
pcl_base.h:58