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> (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 >::iterator
169 {
return v_.begin (); }
171 inline std::vector<Eigen::Vector2f >::iterator
173 {
return v_.end (); }
175 inline std::vector<Eigen::Vector2f >::const_iterator
177 {
return v_.begin (); }
179 inline std::vector<Eigen::Vector2f >::const_iterator
181 {
return v_.end (); }
184 std::vector<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 >::iterator begin()
std::vector< 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.
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 >::const_iterator end() const
std::vector< Eigen::Vector2f >::const_iterator begin() const