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