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>; Filter< PointT >::PointCloud PointCloud
Eigen::Vector2f trilinear_interpolation(const float x, const float y, const float z)
FastBilateralFilter()
Empty constructor.
boost::shared_ptr< const FastBilateralFilter< PointT > > ConstPtr
boost::shared_ptr< FastBilateralFilter< PointT > > Ptr
float getSigmaR() const
Get the standard deviation of the Gaussian for the intensity difference.
virtual void applyFilter(PointCloud &output)
Filter the input data and store the results into output.
std::vector< Eigen::Vector2f, Eigen::aligned_allocator< Eigen::Vector2f > >::iterator end()
Eigen::Vector2f & operator()(const size_t x, const size_t y, const size_t z)
Filter represents the base filter class.
virtual ~FastBilateralFilter()
Empty destructor.
Array3D(const size_t width, const size_t height, const size_t depth)
void setSigmaS(float sigma_s)
Set the standard deviation of the Gaussian used by the bilateral filter for the spatial neighborhood/...
void resize(const size_t width, const size_t height, const size_t depth)
PointCloud represents the base class in PCL for storing collections of 3D points. ...
float getSigmaS() const
Get the size of the Gaussian bilateral filter window as set by the user.
std::vector< Eigen::Vector2f, Eigen::aligned_allocator< Eigen::Vector2f > >::const_iterator end() const
std::vector< Eigen::Vector2f, Eigen::aligned_allocator< Eigen::Vector2f > >::iterator begin()
Implementation of a fast bilateral filter for smoothing depth information in organized point clouds B...
void setSigmaR(float sigma_r)
Set the standard deviation of the Gaussian used to control how much an adjacent pixel is downweighted...
static size_t clamp(const size_t min_value, const size_t max_value, const size_t x)
std::vector< Eigen::Vector2f, Eigen::aligned_allocator< Eigen::Vector2f > >::const_iterator begin() const