Point Cloud Library (PCL)
1.9.1
|
42 #ifndef PCL_FILTERS_FAST_BILATERAL_H_
43 #define PCL_FILTERS_FAST_BILATERAL_H_
45 #include <pcl/filters/filter.h>
57 template<
typename Po
intT>
66 typedef boost::shared_ptr< FastBilateralFilter<PointT> >
Ptr;
67 typedef boost::shared_ptr< const FastBilateralFilter<PointT> >
ConstPtr;
120 Array3D (
const size_t width,
const size_t height,
const size_t depth)
125 v_ = std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > (width*height*depth, Eigen::Vector2f (0.0f, 0.0f));
128 inline Eigen::Vector2f&
130 {
return v_[(x * y_dim_ + y) * z_dim_ + z]; }
132 inline const Eigen::Vector2f&
133 operator () (
const size_t x,
const size_t y,
const size_t z)
const
134 {
return v_[(x * y_dim_ + y) * z_dim_ + z]; }
137 resize (
const size_t width,
const size_t height,
const size_t depth)
142 v_.resize (x_dim_ * y_dim_ * z_dim_);
151 clamp (
const size_t min_value,
152 const size_t max_value,
167 inline std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> >::iterator
169 {
return v_.begin (); }
171 inline std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> >::iterator
173 {
return v_.end (); }
175 inline std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> >::const_iterator
177 {
return v_.begin (); }
179 inline std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> >::const_iterator
181 {
return v_.end (); }
184 std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > v_;
185 size_t x_dim_, y_dim_, z_dim_;
192 #ifdef PCL_NO_PRECOMPILE
193 #include <pcl/filters/impl/fast_bilateral.hpp>
195 #define PCL_INSTANTIATE_FastBilateralFilter(T) template class PCL_EXPORTS pcl::FastBilateralFilter<T>;
Implementation of a fast bilateral filter for smoothing depth information in organized point clouds B...
This file defines compatibility wrappers for low level I/O functions.
Eigen::Vector2f & operator()(const size_t x, const size_t y, const size_t z)
Array3D(const size_t width, const size_t height, const size_t depth)
Eigen::Vector2f trilinear_interpolation(const float x, const float y, const float z)
FastBilateralFilter()
Empty constructor.
std::vector< Eigen::Vector2f, Eigen::aligned_allocator< Eigen::Vector2f > >::const_iterator end() const
Filter< PointT >::PointCloud PointCloud
float getSigmaS() const
Get the size of the Gaussian bilateral filter window as set by the user.
virtual ~FastBilateralFilter()
Empty destructor.
PointCloud represents the base class in PCL for storing collections of 3D points.
std::vector< Eigen::Vector2f, Eigen::aligned_allocator< Eigen::Vector2f > >::iterator end()
virtual void applyFilter(PointCloud &output)
Filter the input data and store the results into output.
void setSigmaS(float sigma_s)
Set the standard deviation of the Gaussian used by the bilateral filter for the spatial neighborhood/...
std::vector< Eigen::Vector2f, Eigen::aligned_allocator< Eigen::Vector2f > >::const_iterator begin() const
void setSigmaR(float sigma_r)
Set the standard deviation of the Gaussian used to control how much an adjacent pixel is downweighted...
float getSigmaR() const
Get the standard deviation of the Gaussian for the intensity difference.
Filter represents the base filter class.
void resize(const size_t width, const size_t height, const size_t depth)
std::vector< Eigen::Vector2f, Eigen::aligned_allocator< Eigen::Vector2f > >::iterator begin()
boost::shared_ptr< const FastBilateralFilter< PointT > > ConstPtr
boost::shared_ptr< FastBilateralFilter< PointT > > Ptr
static size_t clamp(const size_t min_value, const size_t max_value, const size_t x)