Point Cloud Library (PCL)  1.6.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vtk_mesh_smoothing_windowed_sinc.h
Go to the documentation of this file.
1 /*
2  * Software License Agreement (BSD License)
3  *
4  * Point Cloud Library (PCL) - www.pointclouds.org
5  * Copyright (c) 2011, 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: vtk_mesh_smoothing_windowed_sinc.h 5066 2012-03-14 06:42:21Z rusu $
36  *
37  */
38 
39 #ifndef VTK_MESH_SMOOTHING_WINDOWED_SINC_H_
40 #define VTK_MESH_SMOOTHING_WINDOWED_SINC_H_
41 
42 #include <pcl/surface/processing.h>
44 
45 namespace pcl
46 {
53  {
54  public:
57  : MeshProcessing (),
58  num_iter_ (20),
59  pass_band_ (0.1f),
60  feature_edge_smoothing_ (false),
61  feature_angle_ (45.f),
62  edge_angle_ (15.f),
63  boundary_smoothing_ (true),
64  normalize_coordinates_ (false)
65  {};
66 
70  inline void
71  setNumIter (int num_iter)
72  {
73  num_iter_ = num_iter;
74  };
75 
77  inline int
79  {
80  return num_iter_;
81  };
82 
86  inline void
87  setPassBand (float pass_band)
88  {
89  pass_band_ = pass_band;
90  };
91 
93  inline float
95  {
96  return pass_band_;
97  };
98 
105  inline void
106  setNormalizeCoordinates (bool normalize_coordinates)
107  {
108  normalize_coordinates_ = normalize_coordinates;
109  }
110 
112  inline bool
114  {
115  return normalize_coordinates_;
116  }
117 
121  inline void
122  setFeatureEdgeSmoothing (bool feature_edge_smoothing)
123  {
124  feature_edge_smoothing_ = feature_edge_smoothing;
125  };
126 
128  inline bool
130  {
131  return feature_edge_smoothing_;
132  };
133 
137  inline void
138  setFeatureAngle (float feature_angle)
139  {
140  feature_angle_ = feature_angle;
141  };
142 
144  inline float
146  {
147  return feature_angle_;
148  };
149 
153  inline void
154  setEdgeAngle (float edge_angle)
155  {
156  edge_angle_ = edge_angle;
157  };
158 
160  inline float
162  {
163  return edge_angle_;
164  };
165 
166 
170  inline void
171  setBoundarySmoothing (bool boundary_smoothing)
172  {
173  boundary_smoothing_ = boundary_smoothing;
174  };
175 
177  inline bool
179  {
180  return boundary_smoothing_;
181  }
182 
183 
184  protected:
185  void
186  performProcessing (pcl::PolygonMesh &output);
187 
188  private:
189  vtkSmartPointer<vtkPolyData> vtk_polygons_;
190  int num_iter_;
191  float pass_band_;
192  bool feature_edge_smoothing_;
193  float feature_angle_;
194  float edge_angle_;
195  bool boundary_smoothing_;
196  bool normalize_coordinates_;
197  };
198 }
199 #endif /* VTK_MESH_SMOOTHING_WINDOWED_SINC_H_ */