pcl::filters::Convolution< PointIn, PointOut > Class Template Reference
Module filters

Convolution is a mathematical operation on two functions f and g, producing a third function that is typically viewed as a modified version of one of the original functions. More...

`#include <pcl/filters/convolution.h>`

## Public Types

enum | BORDERS_POLICY { BORDERS_POLICY_IGNORE = -1, BORDERS_POLICY_MIRROR = 0, BORDERS_POLICY_DUPLICATE = 1 }
| The borders policy available. More...
using | PointCloudIn = pcl::PointCloud< PointIn >
using | PointCloudInPtr = typename PointCloudIn::Ptr
using | PointCloudInConstPtr = typename PointCloudIn::ConstPtr
using | PointCloudOut = pcl::PointCloud< PointOut >
using | Ptr = shared_ptr< Convolution< PointIn, PointOut > >
using | ConstPtr = shared_ptr< const Convolution< PointIn, PointOut > >

## Public Member Functions

| Convolution ()
| Constructor. More...
| ~Convolution ()
| Empty destructor. More...
void | setInputCloud (const PointCloudInConstPtr &cloud)
| Provide a pointer to the input dataset. More...
void | setKernel (const Eigen::ArrayXf &kernel)
| Set convolving kernel. More...
void | setBordersPolicy (int policy)
| Set the borders policy. More...
int | getBordersPolicy ()
| Get the borders policy. More...
void | setDistanceThreshold (const float &threshold)
const float & | getDistanceThreshold () const
void | setNumberOfThreads (unsigned int nr_threads=0)
| Initialize the scheduler and set the number of threads to use. More...
void | convolveRows (PointCloudOut &output)
| Convolve a float image rows by a given kernel. More...
void | convolveCols (PointCloudOut &output)
| Convolve a float image columns by a given kernel. More...
void | convolve (const Eigen::ArrayXf &h_kernel, const Eigen::ArrayXf &v_kernel, PointCloudOut &output)
| Convolve point cloud with an horizontal kernel along rows then vertical kernel along columns : convolve separately. More...
void | convolve (PointCloudOut &output)
| Convolve point cloud with same kernel along rows and columns separately. More...

## Protected Member Functions

void | convolve_rows (PointCloudOut &output)
| convolve rows and ignore borders More...
void | convolve_cols (PointCloudOut &output)
| convolve cols and ignore borders More...
void | convolve_rows_mirror (PointCloudOut &output)
| convolve rows and mirror borders More...
void | convolve_cols_mirror (PointCloudOut &output)
| convolve cols and mirror borders More...
void | convolve_rows_duplicate (PointCloudOut &output)
| convolve rows and duplicate borders More...
void | convolve_cols_duplicate (PointCloudOut &output)
| convolve cols and duplicate borders More...
void | initCompute (PointCloudOut &output)
| init compute is an internal method called before computation More...
void | makeInfinite (PointOut &p)
template<>
void | makeInfinite (pcl::RGB &p)

## Protected Attributes

unsigned int | threads_
| The number of threads the scheduler should use. More...

## Detailed Description

### template<typename PointIn, typename PointOut>
class pcl::filters::Convolution< PointIn, PointOut >

Convolution is a mathematical operation on two functions f and g, producing a third function that is typically viewed as a modified version of one of the original functions.

see http://en.wikipedia.org/wiki/Convolution.

The class provides rows, column and separate convolving operations of a point cloud. Columns and separate convolution is only allowed on organised point clouds.

When convolving, computing the rows and cols elements at 1/2 kernel width distance from the borders is not defined. We allow for 3 policies:

- Ignoring: elements at special locations are filled with zero (default behaviour)
- Mirroring: the missing rows or columns are obtained through mirroring
- Duplicating: the missing rows or columns are obtained through duplicating

Author
  Nizar Sallem

Definition at line 76 of file convolution.h.

## Member Typedef Documentation

## ConstPtr

template<typename PointIn, typename PointOut>

using pcl::filters::Convolution< PointIn, PointOut >::ConstPtr = shared_ptr< const Convolution<PointIn, PointOut> >

Definition at line 84 of file convolution.h.

## PointCloudIn

template<typename PointIn, typename PointOut>

using pcl::filters::Convolution< PointIn, PointOut >::PointCloudIn = pcl::PointCloud<PointIn>

Definition at line 79 of file convolution.h.

## PointCloudInConstPtr

template<typename PointIn, typename PointOut>

using pcl::filters::Convolution< PointIn, PointOut >::PointCloudInConstPtr = typename PointCloudIn::ConstPtr

Definition at line 81 of file convolution.h.

## PointCloudInPtr

template<typename PointIn, typename PointOut>

using pcl::filters::Convolution< PointIn, PointOut >::PointCloudInPtr = typename PointCloudIn::Ptr

Definition at line 80 of file convolution.h.

## PointCloudOut

template<typename PointIn, typename PointOut>

using pcl::filters::Convolution< PointIn, PointOut >::PointCloudOut = pcl::PointCloud<PointOut>

Definition at line 82 of file convolution.h.

## Ptr

template<typename PointIn, typename PointOut>

using pcl::filters::Convolution< PointIn, PointOut >::Ptr = shared_ptr< Convolution<PointIn, PointOut> >

Definition at line 83 of file convolution.h.

## Member Enumeration Documentation

## BORDERS_POLICY

template<typename PointIn, typename PointOut>

enum pcl::filters::Convolution::BORDERS_POLICY

The borders policy available.

Enumerator
BORDERS_POLICY_IGNORE |
BORDERS_POLICY_MIRROR |
BORDERS_POLICY_DUPLICATE |

Definition at line 88 of file convolution.h.

## Constructor & Destructor Documentation

## Convolution()

template<typename PointIn , typename PointOut >

pcl::filters::Convolution< PointIn, PointOut >::Convolution | ( |  | ) |

Constructor.

Definition at line 47 of file convolution.hpp.

## ~Convolution()

template<typename PointIn, typename PointOut>

pcl::filters::Convolution< PointIn, PointOut >::~Convolution | ( |  | ) |

inline

Empty destructor.

Definition at line 97 of file convolution.h.

## Member Function Documentation

## convolve() [1/2]

template<typename PointIn , typename PointOut >

void pcl::filters::Convolution< PointIn, PointOut >::convolve | ( | const Eigen::ArrayXf & | h_kernel,
|  | const Eigen::ArrayXf & | v_kernel,
|  | PointCloudOut & | output
| ) |  |

inline

Convolve point cloud with an horizontal kernel along rows then vertical kernel along columns : convolve separately.

Parameters

  [in] | h_kernel | kernel for convolving rows
  [in] | v_kernel | kernel for convolving columns
  [out] | output | the convolved cloud

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 128 of file convolution.hpp.

Referenced by pcl::ColorGradientModality< PointRGBT >::processInputData().

## convolve() [2/2]

template<typename PointIn , typename PointOut >

void pcl::filters::Convolution< PointIn, PointOut >::convolve | ( | PointCloudOut & | output | ) |

inline

Convolve point cloud with same kernel along rows and columns separately.

Parameters

  [out] | output | the convolved cloud

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 149 of file convolution.hpp.

## convolve_cols()

template<typename PointIn , typename PointOut >

void pcl::filters::Convolution< PointIn, PointOut >::convolve_cols | ( | PointCloudOut & | output | ) |

protected

convolve cols and ignore borders

Definition at line 538 of file convolution.hpp.

## convolve_cols_duplicate()

template<typename PointIn , typename PointOut >

void pcl::filters::Convolution< PointIn, PointOut >::convolve_cols_duplicate | ( | PointCloudOut & | output | ) |

protected

convolve cols and duplicate borders

Definition at line 582 of file convolution.hpp.

## convolve_cols_mirror()

template<typename PointIn , typename PointOut >

void pcl::filters::Convolution< PointIn, PointOut >::convolve_cols_mirror | ( | PointCloudOut & | output | ) |

protected

convolve cols and mirror borders

Definition at line 627 of file convolution.hpp.

## convolve_rows()

template<typename PointIn , typename PointOut >

void pcl::filters::Convolution< PointIn, PointOut >::convolve_rows | ( | PointCloudOut & | output | ) |

protected

convolve rows and ignore borders

Definition at line 404 of file convolution.hpp.

## convolve_rows_duplicate()

template<typename PointIn , typename PointOut >

void pcl::filters::Convolution< PointIn, PointOut >::convolve_rows_duplicate | ( | PointCloudOut & | output | ) |

protected

convolve rows and duplicate borders

Definition at line 448 of file convolution.hpp.

## convolve_rows_mirror()

template<typename PointIn , typename PointOut >

void pcl::filters::Convolution< PointIn, PointOut >::convolve_rows_mirror | ( | PointCloudOut & | output | ) |

protected

convolve rows and mirror borders

Definition at line 493 of file convolution.hpp.

## convolveCols()

template<typename PointIn , typename PointOut >

void pcl::filters::Convolution< PointIn, PointOut >::convolveCols | ( | PointCloudOut & | output | ) |

inline

Convolve a float image columns by a given kernel.

Parameters

  [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 108 of file convolution.hpp.

## convolveRows()

template<typename PointIn , typename PointOut >

void pcl::filters::Convolution< PointIn, PointOut >::convolveRows | ( | PointCloudOut & | output | ) |

inline

Convolve a float image rows by a given kernel.

Parameters

  [out] | output | the convolved cloud

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 88 of file convolution.hpp.

## getBordersPolicy()

template<typename PointIn, typename PointOut>

int pcl::filters::Convolution< PointIn, PointOut >::getBordersPolicy | ( |  | ) |

inline

Get the borders policy.

Definition at line 114 of file convolution.h.

## getDistanceThreshold()

template<typename PointIn, typename PointOut>

const float& pcl::filters::Convolution< PointIn, PointOut >::getDistanceThreshold | ( |  | ) | const

inline

Returns
  the distance threshold

Definition at line 126 of file convolution.h.

## initCompute()

template<typename PointIn , typename PointOut >

void pcl::filters::Convolution< PointIn, PointOut >::initCompute | ( | PointCloudOut & | output | ) |

protected

init compute is an internal method called before computation

Parameters

  [in] | output |

Exceptions

  pcl::InitFailedException |

Definition at line 57 of file convolution.hpp.

References pcl::PointCloud< PointT >::height, pcl::PointCloud< PointT >::is_dense, pcl::PointCloud< PointT >::resize(), and pcl::PointCloud< PointT >::width.

## makeInfinite() [1/2]

template<>

void pcl::filters::Convolution< pcl::RGB, pcl::RGB >::makeInfinite | ( | pcl::RGB & | p | ) |

protected

Definition at line 396 of file convolution.hpp.

## makeInfinite() [2/2]

template<typename PointIn, typename PointOut>

void pcl::filters::Convolution< PointIn, PointOut >::makeInfinite | ( | PointOut & | p | ) |

inline protected

Definition at line 228 of file convolution.h.

## setBordersPolicy()

template<typename PointIn, typename PointOut>

void pcl::filters::Convolution< PointIn, PointOut >::setBordersPolicy | ( | int | policy | ) |

inline

Set the borders policy.

Definition at line 111 of file convolution.h.

## setDistanceThreshold()

template<typename PointIn, typename PointOut>

void pcl::filters::Convolution< PointIn, PointOut >::setDistanceThreshold | ( | const float & | threshold | ) |

inline

Remarks
  this is critical so please read it carefully. In 3D the next point in (u,v) coordinate can be really far so a distance threshold is used to keep us from ghost points. The value you set here is strongly related to the sensor. A good value for kinect data is 0.001. Default is std::numeric<float>::infinity ()

Parameters

  [in] | threshold | maximum allowed distance between 2 juxtaposed points

Definition at line 123 of file convolution.h.

## setInputCloud()

template<typename PointIn, typename PointOut>

void pcl::filters::Convolution< PointIn, PointOut >::setInputCloud | ( | const PointCloudInConstPtr & | cloud | ) |

inline

Provide a pointer to the input dataset.

Parameters

  cloud | the const boost shared pointer to a PointCloud message

Remarks
  Will perform a deep copy

Definition at line 103 of file convolution.h.

Referenced by pcl::ColorGradientModality< PointRGBT >::processInputData().

## setKernel()

template<typename PointIn, typename PointOut>

void pcl::filters::Convolution< PointIn, PointOut >::setKernel | ( | const Eigen::ArrayXf & | kernel | ) |

inline

Set convolving kernel.

Parameters

  [in] | kernel | convolving element

Definition at line 108 of file convolution.h.

Referenced by pcl::ColorGradientModality< PointRGBT >::processInputData().

## setNumberOfThreads()

template<typename PointIn, typename PointOut>

void pcl::filters::Convolution< PointIn, PointOut >::setNumberOfThreads | ( | unsigned int | nr_threads = `0` | ) |

inline

Initialize the scheduler and set the number of threads to use.

Parameters

  nr_threads | the number of hardware threads to use (0 sets the value back to automatic)

Definition at line 131 of file convolution.h.

References pcl::filters::Convolution< PointIn, PointOut >::threads_.

## Member Data Documentation

## threads_

template<typename PointIn, typename PointOut>

unsigned int pcl::filters::Convolution< PointIn, PointOut >::threads_

protected

The number of threads the scheduler should use.

Definition at line 225 of file convolution.h.

Referenced by pcl::filters::Convolution< PointIn, PointOut >::setNumberOfThreads().

The documentation for this class was generated from the following files:

- pcl/filters/convolution.h
- pcl/filters/impl/convolution.hpp