point_cloud_library / 1.12.1 / classpcl_1_1filters_1_1_convolution.html /

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)
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 72 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 80 of file convolution.h.

PointCloudIn

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

Definition at line 75 of file convolution.h.

PointCloudInConstPtr

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

Definition at line 77 of file convolution.h.

PointCloudInPtr

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

Definition at line 76 of file convolution.h.

PointCloudOut

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

Definition at line 78 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 79 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 84 of file convolution.h.

Constructor & Destructor Documentation

Convolution()

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

Constructor.

Definition at line 54 of file convolution.hpp.

~Convolution()

template<typename PointIn , typename PointOut >
pcl::filters::Convolution< PointIn, PointOut >::~Convolution ( )
inline

Empty destructor.

Definition at line 93 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 135 of file convolution.hpp.

Referenced by pcl::ColorGradientModality< PointXYZT >::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 156 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 421 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 467 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 514 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 281 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 327 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 374 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 115 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 95 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 110 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 122 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 64 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]

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

Definition at line 275 of file convolution.hpp.

makeInfinite() [2/2]

template<typename PointIn , typename PointOut >
void pcl::filters::Convolution< PointIn, PointOut >::makeInfinite ( PointOut & p )
inlineprotected

Definition at line 224 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 107 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 119 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 99 of file convolution.h.

Referenced by pcl::ColorGradientModality< PointXYZT >::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 104 of file convolution.h.

Referenced by pcl::ColorGradientModality< PointXYZT >::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 127 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 221 of file convolution.h.

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


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

© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1filters_1_1_convolution.html