41 #ifndef PCL_PEOPLE_HEAD_BASED_SUBCLUSTER_H_
42 #define PCL_PEOPLE_HEAD_BASED_SUBCLUSTER_H_
44 #include <pcl/people/person_cluster.h>
45 #include <pcl/people/height_map_2d.h>
46 #include <pcl/point_types.h>
58 template <
typename Po
intT>
117 setGround (Eigen::VectorXf& ground_coeffs);
230 #include <pcl/people/impl/head_based_subcluster.hpp>
float min_height_
person clusters minimum height from the ground plane
float getMinimumDistanceBetweenHeads()
Get minimum distance between persons' heads.
boost::shared_ptr< const PointCloud > PointCloudConstPtr
void setDimensionLimits(int min_points, int max_points)
Set minimum and maximum allowed number of points for a person cluster.
std::vector< pcl::PointIndices > cluster_indices_
initial clusters indices
void getHeightLimits(float &min_height, float &max_height)
Get minimum and maximum allowed height for a person cluster.
PointCloudPtr cloud_
pointer to the input cloud
void subcluster(std::vector< pcl::people::PersonCluster< PointT > > &clusters)
Compute subclusters and return them into a vector of PersonCluster.
void setHeightLimits(float min_height, float max_height)
Set minimum and maximum allowed height for a person cluster.
void createSubClusters(pcl::people::PersonCluster< PointT > &cluster, int maxima_number_after_filtering, std::vector< int > &maxima_cloud_indices_filtered, std::vector< pcl::people::PersonCluster< PointT > > &subclusters)
Create subclusters centered on the heads position from the current cluster.
HeadBasedSubclustering()
Constructor.
bool vertical_
if true, the sensor is considered to be vertically placed (portrait mode)
void setHeadCentroid(bool head_centroid)
Set head_centroid_ to true (person centroid is in the head) or false (person centroid is the whole bo...
pcl::PointCloud< PointT > PointCloud
HeadBasedSubclustering represents a class for searching for people inside a HeightMap2D based on a 3D...
void setSensorPortraitOrientation(bool vertical)
Set sensor orientation to landscape mode (false) or portrait mode (true).
float heads_minimum_distance_
minimum distance between persons' heads
PersonCluster represents a class for representing information about a cluster containing a person...
void setInitialClusters(std::vector< pcl::PointIndices > &cluster_indices)
Set initial cluster indices.
float sqrt_ground_coeffs_
ground plane normalization factor
void mergeClustersCloseInFloorCoordinates(std::vector< pcl::people::PersonCluster< PointT > > &input_clusters, std::vector< pcl::people::PersonCluster< PointT > > &output_clusters)
Merge clusters close in floor coordinates.
boost::shared_ptr< PointCloud > PointCloudPtr
bool head_centroid_
if true, the person centroid is computed as the centroid of the cluster points belonging to the head ...
virtual ~HeadBasedSubclustering()
Destructor.
int min_points_
minimum number of points for a person cluster
void setInputCloud(PointCloudPtr &cloud)
Set input cloud.
int max_points_
maximum number of points for a person cluster
void getDimensionLimits(int &min_points, int &max_points)
Get minimum and maximum allowed number of points for a person cluster.
void setGround(Eigen::VectorXf &ground_coeffs)
Set the ground coefficients.
Eigen::VectorXf ground_coeffs_
ground plane coefficients
void setMinimumDistanceBetweenHeads(float heads_minimum_distance)
Set minimum distance between persons' heads.
float max_height_
person clusters maximum height from the ground plane