pcl::GaussianKernel Class Reference
[Module common]

Class GaussianKernel assembles all the method for computing, convolving, smoothing, gradients computing an image using a gaussian kernel. More...

#include <pcl/common/gaussian.h>

List of all members.

Public Member Functions

 GaussianKernel ()
void compute (float sigma, Eigen::VectorXf &kernel, unsigned kernel_width=MAX_KERNEL_WIDTH) const
 Computes the gaussian kernel and dervative assiociated to sigma.
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 convolveRows (const pcl::PointCloud< float > &input, const Eigen::VectorXf &kernel, pcl::PointCloud< float > &output) const
 Convolve a float image rows by a given kernel.
template<typename PointT >
void convolveRows (const pcl::PointCloud< PointT > &input, boost::function< float(const PointT &p)> field_accessor, const Eigen::VectorXf &kernel, pcl::PointCloud< float > &output) const
 Convolve a float image rows by a given kernel.
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.
template<typename PointT >
void convolveCols (const pcl::PointCloud< PointT > &input, boost::function< float(const PointT &p)> field_accessor, const Eigen::VectorXf &kernel, pcl::PointCloud< float > &output) const
 Convolve a float image columns by a given 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.
template<typename PointT >
void convolve (const pcl::PointCloud< PointT > &input, boost::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 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.
template<typename PointT >
void computeGradients (const pcl::PointCloud< PointT > &input, boost::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 smooth (const pcl::PointCloud< float > &input, const Eigen::VectorXf &gaussian_kernel, pcl::PointCloud< float > &output) const
 Smooth image using a gaussian kernel.
template<typename PointT >
void smooth (const pcl::PointCloud< PointT > &input, boost::function< float(const PointT &p)> field_accessor, const Eigen::VectorXf &gaussian_kernel, pcl::PointCloud< float > &output) const
 Smooth image using a gaussian kernel.

Static Public Attributes

static const unsigned MAX_KERNEL_WIDTH = 71

Detailed Description

Class GaussianKernel assembles all the method for computing, convolving, smoothing, gradients computing an image using a gaussian kernel.

The image is stored in point cloud elements intensity member or rgb or...

Author:
Nizar Sallem

Definition at line 57 of file gaussian.h.


Constructor & Destructor Documentation

pcl::GaussianKernel::GaussianKernel (  )  [inline]

Definition at line 61 of file gaussian.h.


Member Function Documentation

void pcl::GaussianKernel::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.

The kernel and derivative width are adjusted according.

Parameters:
[in] sigma 
[out] kernel the computed gaussian kernel
[out] derivative the computed kernel derivative
[in] kernel_width the desired kernel width upper bond
Exceptions:
pcl::KernelWidthTooSmallException 
void pcl::GaussianKernel::compute ( float  sigma,
Eigen::VectorXf &  kernel,
unsigned  kernel_width = MAX_KERNEL_WIDTH 
) const

Computes the gaussian kernel and dervative assiociated to sigma.

The kernel and derivative width are adjusted according.

Parameters:
[in] sigma 
[out] kernel the computed gaussian kernel
[in] kernel_width the desired kernel width upper bond
Exceptions:
pcl::KernelWidthTooSmallException 
template<typename PointT >
void pcl::GaussianKernel::computeGradients ( const pcl::PointCloud< PointT > &  input,
boost::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 [inline]

Computes float image gradients using a gaussian kernel and gaussian kernel derivative.

Parameters:
[in] input image to compute gardients for
[in] field_accessor a field accessor
[in] gaussian_kernel the gaussian kernel to be used
[in] gaussian_kernel_derivative the associated derivative
[out] grad_x gradient along X direction
[out] grad_y gradient along Y direction
Note:
if output doesn't fit in input i.e. output.rows () < input.rows () or output.cols () < input.cols () then output is resized to input sizes.

Definition at line 219 of file gaussian.h.

void pcl::GaussianKernel::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 [inline]

Computes float image gradients using a gaussian kernel and gaussian kernel derivative.

Parameters:
[in] input image to compute gardients for
[in] gaussian_kernel the gaussian kernel to be used
[in] gaussian_kernel_derivative the associated derivative
[out] grad_x gradient along X direction
[out] grad_y gradient along Y direction
Note:
if output doesn't fit in input i.e. output.rows () < input.rows () or output.cols () < input.cols () then output is resized to input sizes.

Definition at line 197 of file gaussian.h.

template<typename PointT >
void pcl::GaussianKernel::convolve ( const pcl::PointCloud< PointT > &  input,
boost::function< float(const PointT &p)>  field_accessor,
const Eigen::VectorXf &  horiz_kernel,
const Eigen::VectorXf &  vert_kernel,
pcl::PointCloud< float > &  output 
) const [inline]

Convolve a float image in the 2 directions.

Parameters:
[in] input image to convolve
[in] field_accessor a field accessor
[in] horiz_kernel kernel for convolving rows
[in] vert_kernel kernel for convolving columns
[out] output the convolved image
Note:
if output doesn't fit in input i.e. output.rows () < input.rows () or output.cols () < input.cols () then output is resized to input sizes.

Definition at line 173 of file gaussian.h.

References pcl::PointCloud< PointT >::height, and pcl::PointCloud< PointT >::width.

void pcl::GaussianKernel::convolve ( const pcl::PointCloud< float > &  input,
const Eigen::VectorXf &  horiz_kernel,
const Eigen::VectorXf &  vert_kernel,
pcl::PointCloud< float > &  output 
) const [inline]

Convolve a float image in the 2 directions.

Parameters:
[in] horiz_kernel kernel for convolving rows
[in] vert_kernel kernel for convolving columns
[in] input image to convolve
[out] output the convolved image
Note:
if output doesn't fit in input i.e. output.rows () < input.rows () or output.cols () < input.cols () then output is resized to input sizes.

Definition at line 151 of file gaussian.h.

References pcl::PointCloud< PointT >::height, and pcl::PointCloud< PointT >::width.

template<typename PointT >
void pcl::GaussianKernel::convolveCols ( const pcl::PointCloud< PointT > &  input,
boost::function< float(const PointT &p)>  field_accessor,
const Eigen::VectorXf &  kernel,
pcl::PointCloud< float > &  output 
) const [inline]

Convolve a float image columns by a given kernel.

Parameters:
[in] input the image to convolve
[in] field_accessor a field accessor
[in] kernel convolution kernel
[out] output the convolved image
Note:
if output doesn't fit in input i.e. output.rows () < input.rows () or output.cols () < input.cols () then output is resized to input sizes.

Definition at line 79 of file gaussian.hpp.

References pcl::PointCloud< PointT >::height, pcl::PointCloud< PointT >::points, and pcl::PointCloud< PointT >::width.

void pcl::GaussianKernel::convolveCols ( const pcl::PointCloud< float > &  input,
const Eigen::VectorXf &  kernel,
pcl::PointCloud< float > &  output 
) const

Convolve a float image columns by a given kernel.

Parameters:
[in] input the image to convolve
[in] kernel convolution kernel
[out] output the convolved image
Note:
if output doesn't fit in input i.e. output.rows () < input.rows () or output.cols () < input.cols () then output is resized to input sizes.
template<typename PointT >
void pcl::GaussianKernel::convolveRows ( const pcl::PointCloud< PointT > &  input,
boost::function< float(const PointT &p)>  field_accessor,
const Eigen::VectorXf &  kernel,
pcl::PointCloud< float > &  output 
) const [inline]

Convolve a float image rows by a given kernel.

Parameters:
[in] input the image to convolve
[in] field_accessor a field accessor
[in] kernel convolution kernel
[out] output the convolved image
Note:
if output doesn't fit in input i.e. output.rows () < input.rows () or output.cols () < input.cols () then output is resized to input sizes.

Definition at line 46 of file gaussian.hpp.

References pcl::PointCloud< PointT >::height, pcl::PointCloud< PointT >::points, and pcl::PointCloud< PointT >::width.

void pcl::GaussianKernel::convolveRows ( const pcl::PointCloud< float > &  input,
const Eigen::VectorXf &  kernel,
pcl::PointCloud< float > &  output 
) const

Convolve a float image rows by a given kernel.

Parameters:
[in] kernel convolution kernel
[in] input the image to convolve
[out] output the convolved image
Note:
if output doesn't fit in input i.e. output.rows () < input.rows () or output.cols () < input.cols () then output is resized to input sizes.
template<typename PointT >
void pcl::GaussianKernel::smooth ( const pcl::PointCloud< PointT > &  input,
boost::function< float(const PointT &p)>  field_accessor,
const Eigen::VectorXf &  gaussian_kernel,
pcl::PointCloud< float > &  output 
) const [inline]

Smooth image using a gaussian kernel.

Parameters:
[in] input image
[in] field_accessor a field accessor
[in] gaussian_kernel the gaussian kernel to be used
[out] output the smoothed image
Note:
if output doesn't fit in input i.e. output.rows () < input.rows () or output.cols () < input.cols () then output is resized to input sizes.

Definition at line 254 of file gaussian.h.

void pcl::GaussianKernel::smooth ( const pcl::PointCloud< float > &  input,
const Eigen::VectorXf &  gaussian_kernel,
pcl::PointCloud< float > &  output 
) const [inline]

Smooth image using a gaussian kernel.

Parameters:
[in] input image
[in] gaussian_kernel the gaussian kernel to be used
[out] output the smoothed image
Note:
if output doesn't fit in input i.e. output.rows () < input.rows () or output.cols () < input.cols () then output is resized to input sizes.

Definition at line 238 of file gaussian.h.


Member Data Documentation

const unsigned pcl::GaussianKernel::MAX_KERNEL_WIDTH = 71 [static]

Definition at line 63 of file gaussian.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends