pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT > Class Template Reference
[Module features]

UniqueShapeContext implements the Unique Shape Context Descriptor described here:. More...

#include <pcl/features/usc.h>

Inheritance diagram for pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >:
Inheritance graph
[legend]
Collaboration diagram for pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef Feature< PointInT,
PointOutT >::PointCloudOut 
PointCloudOut
typedef Feature< PointInT,
PointOutT >::PointCloudIn 
PointCloudIn
typedef boost::shared_ptr
< UniqueShapeContext< PointInT,
PointOutT, PointRFT > > 
Ptr
typedef boost::shared_ptr
< const UniqueShapeContext
< PointInT, PointOutT,
PointRFT > > 
ConstPtr

Public Member Functions

 UniqueShapeContext ()
 Constructor.
virtual ~UniqueShapeContext ()
size_t getAzimuthBins () const
size_t getElevationBins () const
size_t getRadiusBins () const
void setMinimalRadius (double radius)
 The minimal radius value for the search sphere (rmin) in the original paper.
double getMinimalRadius () const
void setPointDensityRadius (double radius)
 This radius is used to compute local point density density = number of points within this radius.
double getPointDensityRadius () const
void setLocalRadius (double radius)
 Set the local RF radius value.
double getLocalRadius () const

Protected Member Functions

void computePointDescriptor (size_t index, std::vector< float > &desc)
 Compute 3D shape context feature descriptor.
virtual bool initCompute ()
 Initialize computation by allocating all the intervals and the volume lookup table.
virtual void computeFeature (PointCloudOut &output)
 The actual feature computation.

Protected Attributes

std::vector< float > radii_interval_
 values of the radii interval.
std::vector< float > theta_divisions_
 Theta divisions interval.
std::vector< float > phi_divisions_
 Phi divisions interval.
std::vector< float > volume_lut_
 Volumes look up table.
size_t azimuth_bins_
 Bins along the azimuth dimension.
size_t elevation_bins_
 Bins along the elevation dimension.
size_t radius_bins_
 Bins along the radius dimension.
double min_radius_
 Minimal radius value.
double point_density_radius_
 Point density radius.
size_t descriptor_length_
 Descriptor length.
double local_radius_
 Radius to compute local RF.

Detailed Description

template<typename PointInT, typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
class pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >

UniqueShapeContext implements the Unique Shape Context Descriptor described here:.

The suggested PointOutT is pcl::ShapeContext1980

Author:
Alessandro Franchi, Federico Tombari, Samuele Salti (original code)
Nizar Sallem (port to PCL)

Definition at line 64 of file usc.h.


Member Typedef Documentation

template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
typedef boost::shared_ptr<const UniqueShapeContext<PointInT, PointOutT, PointRFT> > pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::ConstPtr

Reimplemented from pcl::Feature< PointInT, PointOutT >.

Definition at line 82 of file usc.h.

template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
typedef Feature<PointInT, PointOutT>::PointCloudIn pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::PointCloudIn

Reimplemented from pcl::Feature< PointInT, PointOutT >.

Definition at line 80 of file usc.h.

template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
typedef Feature<PointInT, PointOutT>::PointCloudOut pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::PointCloudOut

Reimplemented from pcl::Feature< PointInT, PointOutT >.

Definition at line 79 of file usc.h.

template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
typedef boost::shared_ptr<UniqueShapeContext<PointInT, PointOutT, PointRFT> > pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::Ptr

Reimplemented from pcl::Feature< PointInT, PointOutT >.

Definition at line 81 of file usc.h.


Constructor & Destructor Documentation

template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::UniqueShapeContext (  )  [inline]
template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
virtual pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::~UniqueShapeContext (  )  [inline, virtual]

Definition at line 95 of file usc.h.


Member Function Documentation

template<typename PointInT , typename PointOutT , typename PointRFT >
void pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::computeFeature ( PointCloudOut output  )  [inline, protected, virtual]
template<typename PointInT , typename PointOutT , typename PointRFT >
void pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::computePointDescriptor ( size_t  index,
std::vector< float > &  desc 
) [inline, protected]

Compute 3D shape context feature descriptor.

Parameters:
[in] index point index in input_
[out] desc descriptor to compute

Compute the angle between the neighbour and the z axis (normal) in the interval [0, 180]

Bin (j, k, l)

Compute the Bin(j, k, l) coordinates of current neighbour

Local point density = number of points in a sphere of radius "point_density_radius_" around the current neighbour

point_density is always bigger than 0 because FindPointsWithinRadius returns at least the point itself

Accumulate w into correspondant Bin(j,k,l)

Definition at line 144 of file usc.hpp.

References pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::azimuth_bins_, pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::elevation_bins_, pcl::utils::equal(), pcl::FeatureWithLocalReferenceFrames< PointInT, PointRFT >::frames_, pcl::PCLBase< PointInT >::indices_, pcl::PCLBase< PointInT >::input_, pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::phi_divisions_, pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::point_density_radius_, pcl::geometry::project(), pcl::rad2deg(), pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::radii_interval_, pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::radius_bins_, pcl::Feature< PointInT, PointOutT >::search_radius_, pcl::Feature< PointInT, PointOutT >::searchForNeighbors(), pcl::Feature< PointInT, PointOutT >::surface_, pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::theta_divisions_, and pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::volume_lut_.

Referenced by pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::computeFeature().

template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
size_t pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::getAzimuthBins (  )  const [inline]
Returns:
The number of bins along the azimuth.

Definition at line 102 of file usc.h.

References pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::azimuth_bins_.

template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
size_t pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::getElevationBins (  )  const [inline]
Returns:
The number of bins along the elevation

Definition at line 109 of file usc.h.

References pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::elevation_bins_.

template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
double pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::getLocalRadius (  )  const [inline]
Returns:
The local RF radius.

Definition at line 147 of file usc.h.

References pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::local_radius_.

template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
double pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::getMinimalRadius (  )  const [inline]
Returns:
The minimal sphere radius.

Definition at line 126 of file usc.h.

References pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::min_radius_.

template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
double pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::getPointDensityRadius (  )  const [inline]
Returns:
The point density search radius.

Definition at line 137 of file usc.h.

References pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::point_density_radius_.

template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
size_t pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::getRadiusBins (  )  const [inline]
Returns:
The number of bins along the radii direction.

Definition at line 116 of file usc.h.

References pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::radius_bins_.

template<typename PointInT , typename PointOutT , typename PointRFT >
bool pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::initCompute (  )  [inline, protected, virtual]
template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
void pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::setLocalRadius ( double  radius  )  [inline]

Set the local RF radius value.

Parameters:
[in] radius the desired local RF radius

Definition at line 143 of file usc.h.

References pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::local_radius_.

template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
void pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::setMinimalRadius ( double  radius  )  [inline]

The minimal radius value for the search sphere (rmin) in the original paper.

Parameters:
[in] radius the desired minimal radius

Definition at line 122 of file usc.h.

References pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::min_radius_.

template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
void pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::setPointDensityRadius ( double  radius  )  [inline]

This radius is used to compute local point density density = number of points within this radius.

Parameters:
[in] radius Value of the point density search radius

Definition at line 133 of file usc.h.

References pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::point_density_radius_.


Member Data Documentation

template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
size_t pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::azimuth_bins_ [protected]
template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
size_t pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::descriptor_length_ [protected]
template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
size_t pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::elevation_bins_ [protected]
template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
double pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::local_radius_ [protected]
template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
double pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::min_radius_ [protected]
template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
std::vector<float> pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::phi_divisions_ [protected]
template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
double pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::point_density_radius_ [protected]
template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
std::vector<float> pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::radii_interval_ [protected]
template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
size_t pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::radius_bins_ [protected]
template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
std::vector<float> pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::theta_divisions_ [protected]
template<typename PointInT , typename PointOutT = pcl::ShapeContext1980, typename PointRFT = pcl::ReferenceFrame>
std::vector<float> pcl::UniqueShapeContext< PointInT, PointOutT, PointRFT >::volume_lut_ [protected]

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