40 #include <pcl/pcl_exports.h>
42 #include <pcl/point_cloud.h>
43 #include <pcl/gpu/containers/device_array.h>
44 #include <pcl/gpu/people/colormap.h>
45 #include <pcl/gpu/people/label_blob2.h>
46 #include <pcl/gpu/people/label_common.h>
47 #include "pcl/gpu/people/person_attribs.h"
57 class MultiTreeLiveProc;
67 using Ptr = shared_ptr<RDFBodyPartsDetector>;
68 using ConstPtr = shared_ptr<const RDFBodyPartsDetector>;
69 using BlobMatrix = std::vector<std::vector<Blob2, Eigen::aligned_allocator<Blob2> > >;
77 int default_buffer_rows = 480,
int default_buffer_cols = 640);
137 std::shared_ptr<device::MultiTreeLiveProc> impl_;
139 int max_cluster_size_;
140 float cluster_tolerance_;
145 std::vector<unsigned char> lmap_host_;
146 std::vector<int> dst_labels_;
147 std::vector<int> region_sizes_;
148 std::vector<int> remap_;
149 std::vector<float> means_storage_;
153 void allocate_buffers(
int rows = 480,
int cols = 640);
PointCloud represents the base class in PCL for storing collections of 3D points.
shared_ptr< PersonAttribs > Ptr
std::size_t getNumberTrees() const
Labels labels_smoothed_
This contains the smoothed final body part labels.
pcl::device::LabelProbability P_l_
These contain the histograms of the labels for this detector.
const BlobMatrix & getBlobMatrix() const
pcl::device::LabelProbability P_l_1_
pcl::device::LabelProbability P_l_prev_2_
pcl::device::LabelProbability P_l_prev_1_
These contain the histograms of the labels for this detector of the previous timestep.
const pcl::device::LabelProbability & getProbability1() const
void processSmooth(const Depth &depth, const PointCloud< PointXYZ > &cloud, int min_pts_per_cluster)
This smooths the labels and does the connected components.
const Labels & getLabels() const
pcl::device::LabelProbability P_l_Gaus_
void process(const Depth &depth, const PointCloud< PointXYZ > &cloud, int min_pts_per_cluster)
This function does the complete RDF evaluation in a discrete manner and builds the blob matrix.
const pcl::device::LabelProbability & getPrevProbability1() const
const pcl::device::LabelProbability & getProbability2() const
int processRelations(PersonAttribs::Ptr person_attribs)
This processes the blob_matrix_.
pcl::device::LabelProbability P_l_Gaus_Temp_
int processRelations()
This processes the blob_matrix_.
RDFBodyPartsDetector(const std::vector< std::string > &tree_files, int default_buffer_rows=480, int default_buffer_cols=640)
This is the constructor.
std::vector< std::vector< Blob2, Eigen::aligned_allocator< Blob2 > > > BlobMatrix
const pcl::device::LabelProbability & getPrevProbability2() const
const pcl::device::LabelProbability & getProbability() const
void processProb(const Depth &depth)
This function processes based on the RDF with probabilistic voting scheme.
shared_ptr< const RDFBodyPartsDetector > ConstPtr
pcl::device::LabelProbability P_l_2_
shared_ptr< RDFBodyPartsDetector > Ptr
Labels labels_
This contains the final body part labels.
Defines all the PCL implemented PointT point type structures.
Defines functions, macros and traits for allocating and using memory.