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)
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