42 #include <pcl/common/eigen.h>
43 #include <pcl/point_cloud.h>
60 static const unsigned MAX_KERNEL_WIDTH = 71;
71 unsigned kernel_width = MAX_KERNEL_WIDTH)
const;
84 Eigen::VectorXf &derivative,
85 unsigned kernel_width = MAX_KERNEL_WIDTH)
const;
96 const Eigen::VectorXf &
kernel,
107 template <
typename Po
intT>
void
109 std::function <
float (
const PointT& p)> field_accessor,
110 const Eigen::VectorXf &
kernel,
122 const Eigen::VectorXf &
kernel,
133 template <
typename Po
intT>
void
135 std::function <
float (
const PointT& p)> field_accessor,
136 const Eigen::VectorXf &
kernel,
149 const Eigen::VectorXf &horiz_kernel,
150 const Eigen::VectorXf &vert_kernel,
153 std::cout <<
">>> convolve cpp" << std::endl;
155 convolveRows (input, horiz_kernel, tmp);
156 convolveCols (tmp, vert_kernel, output);
157 std::cout <<
"<<< convolve cpp" << std::endl;
169 template <
typename Po
intT>
inline void
171 std::function <
float (
const PointT& p)> field_accessor,
172 const Eigen::VectorXf &horiz_kernel,
173 const Eigen::VectorXf &vert_kernel,
176 std::cout <<
">>> convolve hpp" << std::endl;
178 convolveRows<PointT>(input, field_accessor, horiz_kernel, tmp);
179 convolveCols(tmp, vert_kernel, output);
180 std::cout <<
"<<< convolve hpp" << std::endl;
195 const Eigen::VectorXf &gaussian_kernel,
196 const Eigen::VectorXf &gaussian_kernel_derivative,
200 convolve (input, gaussian_kernel_derivative, gaussian_kernel, grad_x);
201 convolve (input, gaussian_kernel, gaussian_kernel_derivative, grad_y);
215 template <
typename Po
intT>
inline void
217 std::function <
float (
const PointT& p)> field_accessor,
218 const Eigen::VectorXf &gaussian_kernel,
219 const Eigen::VectorXf &gaussian_kernel_derivative,
223 convolve<PointT> (input, field_accessor, gaussian_kernel_derivative, gaussian_kernel, grad_x);
224 convolve<PointT> (input, field_accessor, gaussian_kernel, gaussian_kernel_derivative, grad_y);
236 const Eigen::VectorXf &gaussian_kernel,
239 convolve (input, gaussian_kernel, gaussian_kernel, output);
250 template <
typename Po
intT>
inline void
252 std::function <
float (
const PointT& p)> field_accessor,
253 const Eigen::VectorXf &gaussian_kernel,
256 convolve<PointT> (input, field_accessor, gaussian_kernel, gaussian_kernel, output);
261 #include <pcl/common/impl/gaussian.hpp>
Class GaussianKernel assembles all the method for computing, convolving, smoothing,...
void computeGradients(const pcl::PointCloud< PointT > &input, std::function< float(const PointT &p)> field_accessor, const Eigen::VectorXf &gaussian_kernel, const Eigen::VectorXf &gaussian_kernel_derivative, pcl::PointCloud< float > &grad_x, pcl::PointCloud< float > &grad_y) const
Computes float image gradients using a gaussian kernel and gaussian kernel derivative.
void convolveCols(const pcl::PointCloud< float > &input, const Eigen::VectorXf &kernel, pcl::PointCloud< float > &output) const
Convolve a float image columns by a given kernel.
void compute(float sigma, Eigen::VectorXf &kernel, unsigned kernel_width=MAX_KERNEL_WIDTH) const
Computes the gaussian kernel and dervative assiociated to sigma.
void smooth(const pcl::PointCloud< PointT > &input, std::function< float(const PointT &p)> field_accessor, const Eigen::VectorXf &gaussian_kernel, pcl::PointCloud< float > &output) const
Smooth image using a gaussian kernel.
void convolve(const pcl::PointCloud< float > &input, const Eigen::VectorXf &horiz_kernel, const Eigen::VectorXf &vert_kernel, pcl::PointCloud< float > &output) const
Convolve a float image in the 2 directions.
void compute(float sigma, Eigen::VectorXf &kernel, Eigen::VectorXf &derivative, unsigned kernel_width=MAX_KERNEL_WIDTH) const
Computes the gaussian kernel and dervative assiociated to sigma.
void convolve(const pcl::PointCloud< PointT > &input, std::function< float(const PointT &p)> field_accessor, const Eigen::VectorXf &horiz_kernel, const Eigen::VectorXf &vert_kernel, pcl::PointCloud< float > &output) const
Convolve a float image in the 2 directions.
void smooth(const pcl::PointCloud< float > &input, const Eigen::VectorXf &gaussian_kernel, pcl::PointCloud< float > &output) const
Smooth image using a gaussian kernel.
void convolveRows(const pcl::PointCloud< float > &input, const Eigen::VectorXf &kernel, pcl::PointCloud< float > &output) const
Convolve a float image rows by a given kernel.
void computeGradients(const pcl::PointCloud< float > &input, const Eigen::VectorXf &gaussian_kernel, const Eigen::VectorXf &gaussian_kernel_derivative, pcl::PointCloud< float > &grad_x, pcl::PointCloud< float > &grad_y) const
Computes float image gradients using a gaussian kernel and gaussian kernel derivative.
std::uint32_t width
The point cloud width (if organized as an image-structure).
std::uint32_t height
The point cloud height (if organized as an image-structure).
A point structure representing Euclidean xyz coordinates, and the RGB color.