Point Cloud Library (PCL)  1.8.1-dev
List of all members | Public Types | Public Member Functions | Protected Attributes
pcl::people::GroundBasedPeopleDetectionApp< PointT > Class Template Reference

GroundBasedPeopleDetectionApp performs people detection on RGB-D data having as input the ground plane coefficients. More...

#include <pcl/people/ground_based_people_detection_app.h>

Public Types

typedef pcl::PointCloud< PointTPointCloud
 
typedef boost::shared_ptr
< PointCloud
PointCloudPtr
 
typedef boost::shared_ptr
< const PointCloud
PointCloudConstPtr
 

Public Member Functions

 GroundBasedPeopleDetectionApp ()
 Constructor. More...
 
virtual ~GroundBasedPeopleDetectionApp ()
 Destructor. More...
 
void setInputCloud (PointCloudPtr &cloud)
 Set the pointer to the input cloud. More...
 
void setGround (Eigen::VectorXf &ground_coeffs)
 Set the ground coefficients. More...
 
void setTransformation (const Eigen::Matrix3f &transformation)
 Set the transformation matrix, which is used in order to transform the given point cloud, the ground plane and the intrinsics matrix to the internal coordinate frame. More...
 
void setSamplingFactor (int sampling_factor)
 Set sampling factor. More...
 
void setVoxelSize (float voxel_size)
 Set voxel size. More...
 
void setIntrinsics (Eigen::Matrix3f intrinsics_matrix)
 Set intrinsic parameters of the RGB camera. More...
 
void setClassifier (pcl::people::PersonClassifier< pcl::RGB > person_classifier)
 Set SVM-based person classifier. More...
 
void setFOV (float min, float max)
 Set the field of view of the point cloud in z direction. More...
 
void setSensorPortraitOrientation (bool vertical)
 Set sensor orientation (vertical = true means portrait mode, vertical = false means landscape mode). More...
 
void setHeadCentroid (bool head_centroid)
 Set head_centroid_ to true (person centroid is in the head) or false (person centroid is the whole body centroid). More...
 
void setPersonClusterLimits (float min_height, float max_height, float min_width, float max_width)
 Set minimum and maximum allowed height and width for a person cluster. More...
 
void setMinimumDistanceBetweenHeads (float heads_minimum_distance)
 Set minimum distance between persons' heads. More...
 
void getPersonClusterLimits (float &min_height, float &max_height, float &min_width, float &max_width)
 Get the minimum and maximum allowed height and width for a person cluster. More...
 
void getDimensionLimits (int &min_points, int &max_points)
 Get minimum and maximum allowed number of points for a person cluster. More...
 
float getMinimumDistanceBetweenHeads ()
 Get minimum distance between persons' heads. More...
 
Eigen::VectorXf getGround ()
 Get floor coefficients. More...
 
PointCloudPtr getFilteredCloud ()
 Get the filtered point cloud. More...
 
PointCloudPtr getNoGroundCloud ()
 Get pointcloud after voxel grid filtering and ground removal. More...
 
void extractRGBFromPointCloud (PointCloudPtr input_cloud, pcl::PointCloud< pcl::RGB >::Ptr &output_cloud)
 Extract RGB information from a point cloud and output the corresponding RGB point cloud. More...
 
void swapDimensions (pcl::PointCloud< pcl::RGB >::Ptr &cloud)
 Swap rows/cols dimensions of a RGB point cloud (90 degrees counterclockwise rotation). More...
 
void updateMinMaxPoints ()
 Estimates min_points_ and max_points_ based on the minimal and maximal cluster size and the voxel size. More...
 
void applyTransformationPointCloud ()
 Applies the transformation to the input point cloud. More...
 
void applyTransformationGround ()
 Applies the transformation to the ground plane. More...
 
void applyTransformationIntrinsics ()
 Applies the transformation to the intrinsics matrix. More...
 
void filter ()
 Reduces the input cloud to one point per voxel and limits the field of view. More...
 
bool compute (std::vector< pcl::people::PersonCluster< PointT > > &clusters)
 Perform people detection on the input data and return people clusters information. More...
 

Protected Attributes

int sampling_factor_
 sampling factor used to downsample the point cloud More...
 
float voxel_size_
 voxel size More...
 
Eigen::VectorXf ground_coeffs_
 ground plane coefficients More...
 
bool ground_coeffs_set_
 flag stating whether the ground coefficients have been set or not More...
 
Eigen::VectorXf ground_coeffs_transformed_
 the transformed ground coefficients More...
 
float sqrt_ground_coeffs_
 ground plane normalization factor More...
 
Eigen::Matrix3f transformation_
 rotation matrix which transforms input point cloud to internal people tracker coordinate frame More...
 
bool transformation_set_
 flag stating whether the transformation matrix has been set or not More...
 
PointCloudPtr cloud_
 pointer to the input cloud More...
 
PointCloudPtr cloud_filtered_
 pointer to the filtered cloud More...
 
PointCloudPtr no_ground_cloud_
 pointer to the cloud after voxel grid filtering and ground removal More...
 
pcl::PointCloud< pcl::RGB >::Ptr rgb_image_
 pointer to a RGB cloud corresponding to cloud_ More...
 
float max_height_
 person clusters maximum height from the ground plane More...
 
float min_height_
 person clusters minimum height from the ground plane More...
 
float max_width_
 person clusters maximum width, used to estimate how many points maximally represent a person cluster More...
 
float min_width_
 person clusters minimum width, used to estimate how many points minimally represent a person cluster More...
 
float min_fov_
 the beginning of the field of view in z-direction, should be usually set to zero More...
 
float max_fov_
 the end of the field of view in z-direction More...
 
bool vertical_
 if true, the sensor is considered to be vertically placed (portrait mode) More...
 
bool head_centroid_
 if true, the person centroid is computed as the centroid of the cluster points belonging to the head; if false, the person centroid is computed as the centroid of the whole cluster points (default = true) More...
 
int max_points_
 maximum number of points for a person cluster More...
 
int min_points_
 minimum number of points for a person cluster More...
 
float heads_minimum_distance_
 minimum distance between persons' heads More...
 
Eigen::Matrix3f intrinsics_matrix_
 intrinsic parameters matrix of the RGB camera More...
 
bool intrinsics_matrix_set_
 flag stating whether the intrinsics matrix has been set or not More...
 
Eigen::Matrix3f intrinsics_matrix_transformed_
 the transformed intrinsics matrix More...
 
pcl::people::PersonClassifier
< pcl::RGB
person_classifier_
 SVM-based person classifier. More...
 
bool person_classifier_set_flag_
 flag stating if the classifier has been set or not More...
 

Detailed Description

template<typename PointT>
class pcl::people::GroundBasedPeopleDetectionApp< PointT >

GroundBasedPeopleDetectionApp performs people detection on RGB-D data having as input the ground plane coefficients.

It implements the people detection algorithm described here: M. Munaro, F. Basso and E. Menegatti, Tracking people within groups with RGB-D data, In Proceedings of the International Conference on Intelligent Robots and Systems (IROS) 2012, Vilamoura (Portugal), 2012.

Author
Matteo Munaro

Definition at line 69 of file ground_based_people_detection_app.h.

Member Typedef Documentation

Definition at line 76 of file ground_based_people_detection_app.h.

template<typename PointT>
typedef boost::shared_ptr<const PointCloud> pcl::people::GroundBasedPeopleDetectionApp< PointT >::PointCloudConstPtr

Definition at line 78 of file ground_based_people_detection_app.h.

template<typename PointT>
typedef boost::shared_ptr<PointCloud> pcl::people::GroundBasedPeopleDetectionApp< PointT >::PointCloudPtr

Definition at line 77 of file ground_based_people_detection_app.h.

Constructor & Destructor Documentation

Constructor.

Definition at line 47 of file ground_based_people_detection_app.hpp.

Destructor.

Definition at line 416 of file ground_based_people_detection_app.hpp.

Member Function Documentation

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::applyTransformationGround ( )

Applies the transformation to the ground plane.

Definition at line 268 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::applyTransformationIntrinsics ( )

Applies the transformation to the intrinsics matrix.

Definition at line 283 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::applyTransformationPointCloud ( )

Applies the transformation to the input point cloud.

Definition at line 257 of file ground_based_people_detection_app.hpp.

References pcl::transformPointCloud().

template<typename PointT>
bool pcl::people::GroundBasedPeopleDetectionApp< PointT >::compute ( std::vector< pcl::people::PersonCluster< PointT > > &  clusters)
template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::extractRGBFromPointCloud ( PointCloudPtr  input_cloud,
pcl::PointCloud< pcl::RGB >::Ptr &  output_cloud 
)

Extract RGB information from a point cloud and output the corresponding RGB point cloud.

Parameters
[in]input_cloudA pointer to a point cloud containing also RGB information.
[out]output_cloudA pointer to a RGB point cloud.

Definition at line 219 of file ground_based_people_detection_app.hpp.

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

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::filter ( )
template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::getDimensionLimits ( int &  min_points,
int &  max_points 
)

Get minimum and maximum allowed number of points for a person cluster.

Parameters
[out]min_pointsMinimum allowed number of points for a person cluster.
[out]max_pointsMaximum allowed number of points for a person cluster.

Definition at line 184 of file ground_based_people_detection_app.hpp.

Get the filtered point cloud.

Definition at line 207 of file ground_based_people_detection_app.hpp.

template<typename PointT >
Eigen::VectorXf pcl::people::GroundBasedPeopleDetectionApp< PointT >::getGround ( )

Get floor coefficients.

Definition at line 197 of file ground_based_people_detection_app.hpp.

template<typename PointT >
float pcl::people::GroundBasedPeopleDetectionApp< PointT >::getMinimumDistanceBetweenHeads ( )

Get minimum distance between persons' heads.

Definition at line 191 of file ground_based_people_detection_app.hpp.

Get pointcloud after voxel grid filtering and ground removal.

Definition at line 213 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::getPersonClusterLimits ( float &  min_height,
float &  max_height,
float &  min_width,
float &  max_width 
)

Get the minimum and maximum allowed height and width for a person cluster.

Parameters
[out]min_heightMinimum allowed height for a person cluster.
[out]max_heightMaximum allowed height for a person cluster.
[out]min_widthMinimum width for a person cluster.
[out]max_widthMaximum width for a person cluster.

Definition at line 175 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::setClassifier ( pcl::people::PersonClassifier< pcl::RGB person_classifier)

Set SVM-based person classifier.

Parameters
[in]person_classifierNeeded for people detection on RGB data.

Definition at line 126 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::setFOV ( float  min,
float  max 
)

Set the field of view of the point cloud in z direction.

Parameters
[in]minThe beginning of the field of view in z-direction, should be usually set to zero.
[in]maxThe end of the field of view in z-direction.

Definition at line 133 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::setGround ( Eigen::VectorXf &  ground_coeffs)

Set the ground coefficients.

Parameters
[in]ground_coeffsVector containing the four plane coefficients.

Definition at line 96 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::setHeadCentroid ( bool  head_centroid)

Set head_centroid_ to true (person centroid is in the head) or false (person centroid is the whole body centroid).

Parameters
[in]head_centroidSet the location of the person centroid (head or body center) (default = true).

Definition at line 169 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::setInputCloud ( PointCloudPtr cloud)

Set the pointer to the input cloud.

Parameters
[in]cloudA pointer to the input cloud.

Definition at line 76 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::setIntrinsics ( Eigen::Matrix3f  intrinsics_matrix)

Set intrinsic parameters of the RGB camera.

Parameters
[in]intrinsics_matrixRGB camera intrinsic parameters matrix.

Definition at line 118 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::setMinimumDistanceBetweenHeads ( float  heads_minimum_distance)

Set minimum distance between persons' heads.

Parameters
[in]heads_minimum_distanceMinimum allowed distance between persons' heads (default = 0.3).

Definition at line 163 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::setPersonClusterLimits ( float  min_height,
float  max_height,
float  min_width,
float  max_width 
)

Set minimum and maximum allowed height and width for a person cluster.

Parameters
[in]min_heightMinimum allowed height for a person cluster (default = 1.3).
[in]max_heightMaximum allowed height for a person cluster (default = 2.3).
[in]min_widthMinimum width for a person cluster (default = 0.1).
[in]max_widthMaximum width for a person cluster (default = 8.0).

Definition at line 153 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::setSamplingFactor ( int  sampling_factor)

Set sampling factor.

Parameters
[in]sampling_factorValue of the downsampling factor (in each dimension) which is applied to the raw point cloud (default = 1.).

Definition at line 105 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::setSensorPortraitOrientation ( bool  vertical)

Set sensor orientation (vertical = true means portrait mode, vertical = false means landscape mode).

Parameters
[in]verticalSet landscape/portait camera orientation (default = false).

Definition at line 140 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::setTransformation ( const Eigen::Matrix3f &  transformation)

Set the transformation matrix, which is used in order to transform the given point cloud, the ground plane and the intrinsics matrix to the internal coordinate frame.

Parameters
[in]transformation

Definition at line 82 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::setVoxelSize ( float  voxel_size)

Set voxel size.

Parameters
[in]voxel_sizeValue of the voxel dimension (default = 0.06m.).

Definition at line 111 of file ground_based_people_detection_app.hpp.

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::swapDimensions ( pcl::PointCloud< pcl::RGB >::Ptr &  cloud)

Swap rows/cols dimensions of a RGB point cloud (90 degrees counterclockwise rotation).

Parameters
[in,out]cloudA pointer to a RGB point cloud.

Definition at line 240 of file ground_based_people_detection_app.hpp.

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

template<typename PointT >
void pcl::people::GroundBasedPeopleDetectionApp< PointT >::updateMinMaxPoints ( )

Estimates min_points_ and max_points_ based on the minimal and maximal cluster size and the voxel size.

Definition at line 146 of file ground_based_people_detection_app.hpp.

Member Data Documentation

template<typename PointT>
PointCloudPtr pcl::people::GroundBasedPeopleDetectionApp< PointT >::cloud_
protected

pointer to the input cloud

Definition at line 312 of file ground_based_people_detection_app.h.

template<typename PointT>
PointCloudPtr pcl::people::GroundBasedPeopleDetectionApp< PointT >::cloud_filtered_
protected

pointer to the filtered cloud

Definition at line 315 of file ground_based_people_detection_app.h.

template<typename PointT>
Eigen::VectorXf pcl::people::GroundBasedPeopleDetectionApp< PointT >::ground_coeffs_
protected

ground plane coefficients

Definition at line 294 of file ground_based_people_detection_app.h.

template<typename PointT>
bool pcl::people::GroundBasedPeopleDetectionApp< PointT >::ground_coeffs_set_
protected

flag stating whether the ground coefficients have been set or not

Definition at line 297 of file ground_based_people_detection_app.h.

template<typename PointT>
Eigen::VectorXf pcl::people::GroundBasedPeopleDetectionApp< PointT >::ground_coeffs_transformed_
protected

the transformed ground coefficients

Definition at line 300 of file ground_based_people_detection_app.h.

template<typename PointT>
bool pcl::people::GroundBasedPeopleDetectionApp< PointT >::head_centroid_
protected

if true, the person centroid is computed as the centroid of the cluster points belonging to the head; if false, the person centroid is computed as the centroid of the whole cluster points (default = true)

Definition at line 346 of file ground_based_people_detection_app.h.

template<typename PointT>
float pcl::people::GroundBasedPeopleDetectionApp< PointT >::heads_minimum_distance_
protected

minimum distance between persons' heads

Definition at line 355 of file ground_based_people_detection_app.h.

template<typename PointT>
Eigen::Matrix3f pcl::people::GroundBasedPeopleDetectionApp< PointT >::intrinsics_matrix_
protected

intrinsic parameters matrix of the RGB camera

Definition at line 358 of file ground_based_people_detection_app.h.

template<typename PointT>
bool pcl::people::GroundBasedPeopleDetectionApp< PointT >::intrinsics_matrix_set_
protected

flag stating whether the intrinsics matrix has been set or not

Definition at line 361 of file ground_based_people_detection_app.h.

template<typename PointT>
Eigen::Matrix3f pcl::people::GroundBasedPeopleDetectionApp< PointT >::intrinsics_matrix_transformed_
protected

the transformed intrinsics matrix

Definition at line 364 of file ground_based_people_detection_app.h.

template<typename PointT>
float pcl::people::GroundBasedPeopleDetectionApp< PointT >::max_fov_
protected

the end of the field of view in z-direction

Definition at line 339 of file ground_based_people_detection_app.h.

template<typename PointT>
float pcl::people::GroundBasedPeopleDetectionApp< PointT >::max_height_
protected

person clusters maximum height from the ground plane

Definition at line 324 of file ground_based_people_detection_app.h.

template<typename PointT>
int pcl::people::GroundBasedPeopleDetectionApp< PointT >::max_points_
protected

maximum number of points for a person cluster

Definition at line 349 of file ground_based_people_detection_app.h.

template<typename PointT>
float pcl::people::GroundBasedPeopleDetectionApp< PointT >::max_width_
protected

person clusters maximum width, used to estimate how many points maximally represent a person cluster

Definition at line 330 of file ground_based_people_detection_app.h.

template<typename PointT>
float pcl::people::GroundBasedPeopleDetectionApp< PointT >::min_fov_
protected

the beginning of the field of view in z-direction, should be usually set to zero

Definition at line 336 of file ground_based_people_detection_app.h.

template<typename PointT>
float pcl::people::GroundBasedPeopleDetectionApp< PointT >::min_height_
protected

person clusters minimum height from the ground plane

Definition at line 327 of file ground_based_people_detection_app.h.

template<typename PointT>
int pcl::people::GroundBasedPeopleDetectionApp< PointT >::min_points_
protected

minimum number of points for a person cluster

Definition at line 352 of file ground_based_people_detection_app.h.

template<typename PointT>
float pcl::people::GroundBasedPeopleDetectionApp< PointT >::min_width_
protected

person clusters minimum width, used to estimate how many points minimally represent a person cluster

Definition at line 333 of file ground_based_people_detection_app.h.

template<typename PointT>
PointCloudPtr pcl::people::GroundBasedPeopleDetectionApp< PointT >::no_ground_cloud_
protected

pointer to the cloud after voxel grid filtering and ground removal

Definition at line 318 of file ground_based_people_detection_app.h.

template<typename PointT>
pcl::people::PersonClassifier<pcl::RGB> pcl::people::GroundBasedPeopleDetectionApp< PointT >::person_classifier_
protected

SVM-based person classifier.

Definition at line 367 of file ground_based_people_detection_app.h.

template<typename PointT>
bool pcl::people::GroundBasedPeopleDetectionApp< PointT >::person_classifier_set_flag_
protected

flag stating if the classifier has been set or not

Definition at line 370 of file ground_based_people_detection_app.h.

template<typename PointT>
pcl::PointCloud<pcl::RGB>::Ptr pcl::people::GroundBasedPeopleDetectionApp< PointT >::rgb_image_
protected

pointer to a RGB cloud corresponding to cloud_

Definition at line 321 of file ground_based_people_detection_app.h.

template<typename PointT>
int pcl::people::GroundBasedPeopleDetectionApp< PointT >::sampling_factor_
protected

sampling factor used to downsample the point cloud

Definition at line 288 of file ground_based_people_detection_app.h.

template<typename PointT>
float pcl::people::GroundBasedPeopleDetectionApp< PointT >::sqrt_ground_coeffs_
protected

ground plane normalization factor

Definition at line 303 of file ground_based_people_detection_app.h.

template<typename PointT>
Eigen::Matrix3f pcl::people::GroundBasedPeopleDetectionApp< PointT >::transformation_
protected

rotation matrix which transforms input point cloud to internal people tracker coordinate frame

Definition at line 306 of file ground_based_people_detection_app.h.

template<typename PointT>
bool pcl::people::GroundBasedPeopleDetectionApp< PointT >::transformation_set_
protected

flag stating whether the transformation matrix has been set or not

Definition at line 309 of file ground_based_people_detection_app.h.

template<typename PointT>
bool pcl::people::GroundBasedPeopleDetectionApp< PointT >::vertical_
protected

if true, the sensor is considered to be vertically placed (portrait mode)

Definition at line 342 of file ground_based_people_detection_app.h.

template<typename PointT>
float pcl::people::GroundBasedPeopleDetectionApp< PointT >::voxel_size_
protected

voxel size

Definition at line 291 of file ground_based_people_detection_app.h.


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