pcl::search::OrganizedNeighbor< PointT > Class Template Reference
Module search

OrganizedNeighbor is a class for optimized nearest neigbhor search in organized point clouds. More...

`#include <pcl/search/organized.h>`

Inheritance diagram for pcl::search::OrganizedNeighbor< PointT >:

## Classes

struct | Entry

## Public Types

typedef pcl::PointCloud< PointT > | PointCloud
typedef boost::shared_ptr< PointCloud > | PointCloudPtr
typedef boost::shared_ptr< const PointCloud > | PointCloudConstPtr
typedef boost::shared_ptr< const std::vector< int > > | IndicesConstPtr
typedef boost::shared_ptr< pcl::search::OrganizedNeighbor< PointT > > | Ptr
typedef boost::shared_ptr< const pcl::search::OrganizedNeighbor< PointT > > | ConstPtr
Public Types inherited from pcl::search::Search< PointT >
typedef pcl::PointCloud< PointT > | PointCloud
typedef PointCloud::Ptr | PointCloudPtr
typedef PointCloud::ConstPtr | PointCloudConstPtr
typedef boost::shared_ptr< pcl::search::Search< PointT > > | Ptr
typedef boost::shared_ptr< const pcl::search::Search< PointT > > | ConstPtr
typedef boost::shared_ptr< std::vector< int > > | IndicesPtr
typedef boost::shared_ptr< const std::vector< int > > | IndicesConstPtr

## Public Member Functions

| OrganizedNeighbor (bool sorted_results=false, float eps=1e-4f, unsigned pyramid_level=5)
| Constructor. More...
virtual | ~OrganizedNeighbor ()
| Empty deconstructor. More...
bool | isValid () const
| Test whether this search-object is valid (input is organized AND from projective device) User should use this method after setting the input cloud, since setInput just prints an error if input is not organized or a projection matrix could not be determined. More...
void | computeCameraMatrix (Eigen::Matrix3f &camera_matrix) const
| Compute the camera matrix. More...
virtual void | setInputCloud (const PointCloudConstPtr &cloud, const IndicesConstPtr &indices=IndicesConstPtr())
| Provide a pointer to the input data set, if user has focal length he must set it before calling this. More...
int | radiusSearch (const PointT &p_q, double radius, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances, unsigned int max_nn=0) const
| Search for all neighbors of query point that are within a given radius. More...
void | estimateProjectionMatrix ()
| estimated the projection matrix from the input cloud. More...
int | nearestKSearch (const PointT &p_q, int k, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances) const
| Search for the k-nearest neighbors for a given query point. More...
bool | projectPoint (const PointT &p, pcl::PointXY &q) const
| projects a point into the image More...
Public Member Functions inherited from pcl::search::Search< PointT >
| Search (const std::string &name="", bool sorted=false)
| Constructor. More...
virtual | ~Search ()
| Destructor. More...
virtual const std::string & | getName () const
| Returns the search method name. More...
virtual void | setSortedResults (bool sorted)
| sets whether the results should be sorted (ascending in the distance) or not More...
virtual bool | getSortedResults ()
| Gets whether the results should be sorted (ascending in the distance) or not Otherwise the results may be returned in any order. More...
virtual void | setInputCloud (const PointCloudConstPtr &cloud, const IndicesConstPtr &indices=IndicesConstPtr())
| Pass the input dataset that the search will be performed on. More...
virtual PointCloudConstPtr | getInputCloud () const
| Get a pointer to the input point cloud dataset. More...
virtual IndicesConstPtr | getIndices () const
| Get a pointer to the vector of indices used. More...
template<typename PointTDiff >
int | nearestKSearchT (const PointTDiff &point, int k, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances) const
| Search for k-nearest neighbors for the given query point. More...
virtual int | nearestKSearch (const PointCloud &cloud, int index, int k, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances) const
| Search for k-nearest neighbors for the given query point. More...
virtual int | nearestKSearch (int index, int k, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances) const
| Search for k-nearest neighbors for the given query point (zero-copy). More...
virtual void | nearestKSearch (const PointCloud &cloud, const std::vector< int > &indices, int k, std::vector< std::vector< int > > &k_indices, std::vector< std::vector< float > > &k_sqr_distances) const
| Search for the k-nearest neighbors for the given query point. More...
template<typename PointTDiff >
void | nearestKSearchT (const pcl::PointCloud< PointTDiff > &cloud, const std::vector< int > &indices, int k, std::vector< std::vector< int > > &k_indices, std::vector< std::vector< float > > &k_sqr_distances) const
| Search for the k-nearest neighbors for the given query point. More...
template<typename PointTDiff >
int | radiusSearchT (const PointTDiff &point, double radius, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances, unsigned int max_nn=0) const
| Search for all the nearest neighbors of the query point in a given radius. More...
virtual int | radiusSearch (const PointCloud &cloud, int index, double radius, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances, unsigned int max_nn=0) const
| Search for all the nearest neighbors of the query point in a given radius. More...
virtual int | radiusSearch (int index, double radius, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances, unsigned int max_nn=0) const
| Search for all the nearest neighbors of the query point in a given radius (zero-copy). More...
virtual void | radiusSearch (const PointCloud &cloud, const std::vector< int > &indices, double radius, std::vector< std::vector< int > > &k_indices, std::vector< std::vector< float > > &k_sqr_distances, unsigned int max_nn=0) const
| Search for all the nearest neighbors of the query point in a given radius. More...
template<typename PointTDiff >
void | radiusSearchT (const pcl::PointCloud< PointTDiff > &cloud, const std::vector< int > &indices, double radius, std::vector< std::vector< int > > &k_indices, std::vector< std::vector< float > > &k_sqr_distances, unsigned int max_nn=0) const
| Search for all the nearest neighbors of the query points in a given radius. More...

## Protected Member Functions

bool | testPoint (const PointT &query, unsigned k, std::priority_queue< Entry > &queue, unsigned index) const
| test if point given by index is among the k NN in results to the query point. More...
void | clipRange (int &begin, int &end, int min, int max) const
void | getProjectedRadiusSearchBox (const PointT &point, float squared_radius, unsigned &minX, unsigned &minY, unsigned &maxX, unsigned &maxY) const
| Obtain a search box in 2D from a sphere with a radius in 3D. More...
Protected Member Functions inherited from pcl::search::Search< PointT >
void | sortResults (std::vector< int > &indices, std::vector< float > &distances) const

## Protected Attributes

Eigen::Matrix< float, 3, 4, Eigen::RowMajor > | projection_matrix_
| the projection matrix. More...
Eigen::Matrix< float, 3, 3, Eigen::RowMajor > | KR_
| inveser of the left 3x3 projection matrix which is K * R (with K being the camera matrix and R the rotation matrix) More...
Eigen::Matrix< float, 3, 3, Eigen::RowMajor > | KR_KRT_
| inveser of the left 3x3 projection matrix which is K * R (with K being the camera matrix and R the rotation matrix) More...
const float | eps_
| epsilon value for the MSE of the projection matrix estimation More...
const unsigned | pyramid_level_
| using only a subsample of points to calculate the projection matrix. More...
std::vector< unsigned char > | mask_
| mask, indicating whether the point was in the indices list or not. More...
Protected Attributes inherited from pcl::search::Search< PointT >
PointCloudConstPtr | input_
IndicesConstPtr | indices_
bool | sorted_results_
std::string | name_

## Detailed Description

### template<typename PointT>
class pcl::search::OrganizedNeighbor< PointT >

OrganizedNeighbor is a class for optimized nearest neigbhor search in organized point clouds.

Author
  Radu B. Rusu, Julius Kammerl, Suat Gedikli, Koen Buys

Definition at line 62 of file organized.h.

## Member Typedef Documentation

## ConstPtr

template<typename PointT>

typedef boost::shared_ptr<const pcl::search::OrganizedNeighbor<PointT> > pcl::search::OrganizedNeighbor< PointT >::ConstPtr

Definition at line 74 of file organized.h.

## IndicesConstPtr

template<typename PointT>

typedef boost::shared_ptr<const std::vector<int> > pcl::search::OrganizedNeighbor< PointT >::IndicesConstPtr

Definition at line 71 of file organized.h.

## PointCloud

template<typename PointT>

typedef pcl::PointCloud<PointT> pcl::search::OrganizedNeighbor< PointT >::PointCloud

Definition at line 67 of file organized.h.

## PointCloudConstPtr

template<typename PointT>

typedef boost::shared_ptr<const PointCloud> pcl::search::OrganizedNeighbor< PointT >::PointCloudConstPtr

Definition at line 70 of file organized.h.

## PointCloudPtr

template<typename PointT>

typedef boost::shared_ptr<PointCloud> pcl::search::OrganizedNeighbor< PointT >::PointCloudPtr

Definition at line 68 of file organized.h.

## Ptr

template<typename PointT>

typedef boost::shared_ptr<pcl::search::OrganizedNeighbor<PointT> > pcl::search::OrganizedNeighbor< PointT >::Ptr

Definition at line 73 of file organized.h.

## Constructor & Destructor Documentation

## OrganizedNeighbor()

template<typename PointT>

pcl::search::OrganizedNeighbor< PointT >::OrganizedNeighbor | ( | bool | sorted_results = `false`,
|  | float | eps = `1e-4f`,
|  | unsigned | pyramid_level = `5`
| ) |  |

inline

Constructor.

Parameters

  [in] | sorted_results | whether the results should be return sorted in ascending order on the distances or not. This applies only for radius search, since knn always returns sorted resutls
  [in] | eps | the threshold for the mean-squared-error of the estimation of the projection matrix. if the MSE is above this value, the point cloud is considered as not from a projective device, thus organized neighbor search can not be applied on that cloud.
  [in] | pyramid_level | the level of the down sampled point cloud to be used for projection matrix estimation

Definition at line 88 of file organized.h.

## ~OrganizedNeighbor()

template<typename PointT>

virtual pcl::search::OrganizedNeighbor< PointT >::~OrganizedNeighbor | ( |  | ) |

inline virtual

Empty deconstructor.

Definition at line 100 of file organized.h.

## Member Function Documentation

## clipRange()

template<typename PointT>

void pcl::search::OrganizedNeighbor< PointT >::clipRange | ( | int & | begin,
|  | int & | end,
|  | int | min,
|  | int | max
| ) |  | const

inline protected

Definition at line 239 of file organized.h.

References pcl::search::OrganizedNeighbor< PointT >::getProjectedRadiusSearchBox().

## computeCameraMatrix()

template<typename PointT >

void pcl::search::OrganizedNeighbor< PointT >::computeCameraMatrix | ( | Eigen::Matrix3f & | camera_matrix | ) | const

Compute the camera matrix.

Parameters

  [out] | camera_matrix | the resultant computed camera matrix

Definition at line 330 of file organized.hpp.

References pcl::getCameraMatrixFromProjectionMatrix().

Referenced by pcl::search::OrganizedNeighbor< PointT >::isValid().

## estimateProjectionMatrix()

template<typename PointT >

void pcl::search::OrganizedNeighbor< PointT >::estimateProjectionMatrix | ( |  | ) |

estimated the projection matrix from the input cloud.

Definition at line 337 of file organized.hpp.

Referenced by pcl::search::OrganizedNeighbor< PointT >::setInputCloud().

## getProjectedRadiusSearchBox()

template<typename PointT >

void pcl::search::OrganizedNeighbor< PointT >::getProjectedRadiusSearchBox | ( | const PointT & | point,
|  | float | squared_radius,
|  | unsigned & | minX,
|  | unsigned & | minY,
|  | unsigned & | maxX,
|  | unsigned & | maxY
| ) |  | const

protected

Obtain a search box in 2D from a sphere with a radius in 3D.

Parameters

  [in] | point | the query point (sphere center)
  [in] | squared_radius | the squared sphere radius
  [out] | minX | the min X box coordinate
  [out] | minY | the min Y box coordinate
  [out] | maxX | the max X box coordinate
  [out] | maxY | the max Y box coordinate

Definition at line 273 of file organized.hpp.

Referenced by pcl::search::OrganizedNeighbor< PointT >::clipRange().

## isValid()

template<typename PointT>

bool pcl::search::OrganizedNeighbor< PointT >::isValid | ( |  | ) | const

inline

Test whether this search-object is valid (input is organized AND from projective device) User should use this method after setting the input cloud, since setInput just prints an error if input is not organized or a projection matrix could not be determined.

Returns
  true if the input data is organized and from a projective device, false otherwise

Definition at line 108 of file organized.h.

References pcl::search::OrganizedNeighbor< PointT >::computeCameraMatrix(), pcl::search::Search< PointT >::input_, pcl::search::OrganizedNeighbor< PointT >::KR_, and pcl::search::OrganizedNeighbor< PointT >::KR_KRT_.

## nearestKSearch()

template<typename PointT >

int pcl::search::OrganizedNeighbor< PointT >::nearestKSearch | ( | const PointT & | p_q,
|  | int | k,
|  | std::vector< int > & | k_indices,
|  | std::vector< float > & | k_sqr_distances
| ) |  | const

virtual

Search for the k-nearest neighbors for a given query point.

Note
  limiting the maximum search radius (with setMaxDistance) can lead to a significant improvement in search speed

Parameters

  [in] | p_q | the given query point (setInputCloud must be given a-priori!)
  [in] | k | the number of neighbors to search for (used only if horizontal and vertical window not given already!)
  [out] | k_indices | the resultant point indices (must be resized to k beforehand!)
  [out] | k_sqr_distances |

Note
  this function does not return distances

Returns
  number of neighbors found

Implements pcl::search::Search< PointT >.

Definition at line 117 of file organized.hpp.

References pcl::isFinite().

Referenced by pcl::search::OrganizedNeighbor< PointT >::setInputCloud().

## projectPoint()

template<typename PointT >

bool pcl::search::OrganizedNeighbor< PointT >::projectPoint | ( | const PointT & | p,
|  | pcl::PointXY & | q
| ) |  | const

projects a point into the image

Parameters

  [in] | p | point in 3D World Coordinate Frame to be projected onto the image plane
  [out] | q | the 2D projected point in pixel coordinates (u,v)

Returns
  true if projection is valid, false otherwise

Definition at line 382 of file organized.hpp.

References pcl::PointXY::x, and pcl::PointXY::y.

Referenced by pcl::visualization::ImageViewer::addMask(), pcl::visualization::ImageViewer::addPlanarPolygon(), pcl::visualization::ImageViewer::addRectangle(), and pcl::search::OrganizedNeighbor< PointT >::setInputCloud().

## radiusSearch()

template<typename PointT >

int pcl::search::OrganizedNeighbor< PointT >::radiusSearch | ( | const PointT & | p_q,
|  | double | radius,
|  | std::vector< int > & | k_indices,
|  | std::vector< float > & | k_sqr_distances,
|  | unsigned int | max_nn = `0`
| ) |  | const

virtual

Search for all neighbors of query point that are within a given radius.

Parameters

  [in] | p_q | the given query point
  [in] | radius | the radius of the sphere bounding all of p_q's neighbors
  [out] | k_indices | the resultant indices of the neighboring points
  [out] | k_sqr_distances | the resultant squared distances to the neighboring points
  [in] | max_nn | if given, bounds the maximum returned neighbors to this value. If max_nn is set to 0 or to a number higher than the number of points in the input cloud, all neighbors in radius will be returned.

Returns
  number of neighbors found in radius

Implements pcl::search::Search< PointT >.

Definition at line 50 of file organized.hpp.

References pcl::isFinite().

Referenced by pcl::search::OrganizedNeighbor< PointT >::setInputCloud().

## setInputCloud()

template<typename PointT>

virtual void pcl::search::OrganizedNeighbor< PointT >::setInputCloud | ( | const PointCloudConstPtr & | cloud,
|  | const IndicesConstPtr & | indices = `IndicesConstPtr ()`
| ) |  |

inline virtual

Provide a pointer to the input data set, if user has focal length he must set it before calling this.

Parameters

  [in] | cloud | the const boost shared pointer to a PointCloud message
  [in] | indices | the const boost shared pointer to PointIndices

Definition at line 129 of file organized.h.

References pcl::search::OrganizedNeighbor< PointT >::estimateProjectionMatrix(), pcl::search::Search< PointT >::indices_, pcl::search::Search< PointT >::input_, pcl::search::OrganizedNeighbor< PointT >::mask_, pcl::search::OrganizedNeighbor< PointT >::nearestKSearch(), pcl::search::OrganizedNeighbor< PointT >::projectPoint(), and pcl::search::OrganizedNeighbor< PointT >::radiusSearch().

Referenced by pcl::visualization::ImageViewer::addMask(), pcl::visualization::ImageViewer::addPlanarPolygon(), and pcl::visualization::ImageViewer::addRectangle().

## testPoint()

template<typename PointT>

bool pcl::search::OrganizedNeighbor< PointT >::testPoint | ( | const PointT & | query,
|  | unsigned | k,
|  | std::priority_queue< Entry > & | queue,
|  | unsigned | index
| ) |  | const

inline protected

test if point given by index is among the k NN in results to the query point.

Parameters

  [in] | query | query point
  [in] | k | number of maximum nn interested in
  [in] | queue | priority queue with k NN
  [in] | index | index on point to be tested

Returns
  whether the top element changed or not.

Definition at line 216 of file organized.h.

References pcl::search::OrganizedNeighbor< PointT >::Entry::index, pcl::search::Search< PointT >::input_, and pcl::search::OrganizedNeighbor< PointT >::mask_.

## Member Data Documentation

## eps_

template<typename PointT>

const float pcl::search::OrganizedNeighbor< PointT >::eps_

protected

epsilon value for the MSE of the projection matrix estimation

Definition at line 268 of file organized.h.

## KR_

template<typename PointT>

Eigen::Matrix<float, 3, 3, Eigen::RowMajor> pcl::search::OrganizedNeighbor< PointT >::KR_

protected

inveser of the left 3x3 projection matrix which is K * R (with K being the camera matrix and R the rotation matrix)

Definition at line 262 of file organized.h.

Referenced by pcl::search::OrganizedNeighbor< PointT >::isValid().

## KR_KRT_

template<typename PointT>

Eigen::Matrix<float, 3, 3, Eigen::RowMajor> pcl::search::OrganizedNeighbor< PointT >::KR_KRT_

protected

inveser of the left 3x3 projection matrix which is K * R (with K being the camera matrix and R the rotation matrix)

Definition at line 265 of file organized.h.

Referenced by pcl::search::OrganizedNeighbor< PointT >::isValid().

## mask_

template<typename PointT>

std::vector<unsigned char> pcl::search::OrganizedNeighbor< PointT >::mask_

protected

mask, indicating whether the point was in the indices list or not.

Definition at line 274 of file organized.h.

Referenced by pcl::search::OrganizedNeighbor< PointT >::setInputCloud(), and pcl::search::OrganizedNeighbor< PointT >::testPoint().

## projection_matrix_

template<typename PointT>

Eigen::Matrix<float, 3, 4, Eigen::RowMajor> pcl::search::OrganizedNeighbor< PointT >::projection_matrix_

protected

the projection matrix.

Either set by user or calculated by the first / each input cloud

Definition at line 259 of file organized.h.

## pyramid_level_

template<typename PointT>

const unsigned pcl::search::OrganizedNeighbor< PointT >::pyramid_level_

protected

using only a subsample of points to calculate the projection matrix.

pyramid_level_ = use down sampled cloud given by pyramid_level_

Definition at line 271 of file organized.h.

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

- /build/pcl-qv3n_B/pcl-1.8.1+dfsg1/search/include/pcl/search/organized.h
- /build/pcl-qv3n_B/pcl-1.8.1+dfsg1/search/include/pcl/search/impl/organized.hpp