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