Point Cloud Library (PCL)  1.9.1
face_common.h
1 #ifndef FACE_DETECTOR_COMMON_H_
2 #define FACE_DETECTOR_COMMON_H_
3 
4 #include <pcl/features/integral_image2D.h>
5 #include <Eigen/Core>
6 
7 namespace pcl
8 {
9  namespace face_detection
10  {
12  {
13  public:
14  std::vector<boost::shared_ptr<pcl::IntegralImage2D<float, 1> > > iimages_; //also pointer to the respective integral image
15  int row_, col_;
16  int wsize_;
17  int label_;
18 
19  //save pose head information
20  Eigen::Vector3f trans_;
21  Eigen::Vector3f rot_;
22  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
23  };
24 
26  {
27  public:
28  int row1_, col1_;
29  int row2_, col2_;
30 
33 
34  float threshold_;
35  int used_ii_;
36 
38  {
39  used_ii_ = 0;
40  }
41 
42  void serialize(std::ostream & stream) const
43  {
44  stream.write (reinterpret_cast<const char*> (&row1_), sizeof(row1_));
45  stream.write (reinterpret_cast<const char*> (&col1_), sizeof(col1_));
46  stream.write (reinterpret_cast<const char*> (&row2_), sizeof(row2_));
47  stream.write (reinterpret_cast<const char*> (&col2_), sizeof(col2_));
48  stream.write (reinterpret_cast<const char*> (&wsizex1_), sizeof(wsizex1_));
49  stream.write (reinterpret_cast<const char*> (&wsizex2_), sizeof(wsizex2_));
50  stream.write (reinterpret_cast<const char*> (&wsizey1_), sizeof(wsizey1_));
51  stream.write (reinterpret_cast<const char*> (&wsizey2_), sizeof(wsizey2_));
52  stream.write (reinterpret_cast<const char*> (&threshold_), sizeof(threshold_));
53  stream.write (reinterpret_cast<const char*> (&used_ii_), sizeof(used_ii_));
54  }
55 
56  inline void deserialize(std::istream & stream)
57  {
58  stream.read (reinterpret_cast<char*> (&row1_), sizeof(row1_));
59  stream.read (reinterpret_cast<char*> (&col1_), sizeof(col1_));
60  stream.read (reinterpret_cast<char*> (&row2_), sizeof(row2_));
61  stream.read (reinterpret_cast<char*> (&col2_), sizeof(col2_));
62  stream.read (reinterpret_cast<char*> (&wsizex1_), sizeof(wsizex1_));
63  stream.read (reinterpret_cast<char*> (&wsizex2_), sizeof(wsizex2_));
64  stream.read (reinterpret_cast<char*> (&wsizey1_), sizeof(wsizey1_));
65  stream.read (reinterpret_cast<char*> (&wsizey2_), sizeof(wsizey2_));
66  stream.read (reinterpret_cast<char*> (&threshold_), sizeof(threshold_));
67  stream.read (reinterpret_cast<char*> (&used_ii_), sizeof(used_ii_));
68  }
69  };
70 
71  template<class FeatureType>
72  class RFTreeNode
73  {
74  public:
75  float threshold;
77  std::vector<RFTreeNode> sub_nodes;
78  float value;
79  float variance;
80 
81  Eigen::Vector3d trans_mean_;
82  Eigen::Vector3d rot_mean_;
83 
84  float purity_;
85  Eigen::Matrix3d covariance_trans_;
86  Eigen::Matrix3d covariance_rot_;
87 
88  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
89 
90  void serialize(::std::ostream & stream) const
91  {
92 
93  const int num_of_sub_nodes = static_cast<int> (sub_nodes.size ());
94  stream.write (reinterpret_cast<const char*> (&num_of_sub_nodes), sizeof(num_of_sub_nodes));
95 
96  if (sub_nodes.size () > 0)
97  {
98  feature.serialize (stream);
99  stream.write (reinterpret_cast<const char*> (&threshold), sizeof(threshold));
100  }
101 
102  stream.write (reinterpret_cast<const char*> (&value), sizeof(value));
103  stream.write (reinterpret_cast<const char*> (&variance), sizeof(variance));
104 
105  for (size_t i = 0; i < 3; i++)
106  stream.write (reinterpret_cast<const char*> (&trans_mean_[i]), sizeof(trans_mean_[i]));
107 
108  for (size_t i = 0; i < 3; i++)
109  stream.write (reinterpret_cast<const char*> (&rot_mean_[i]), sizeof(rot_mean_[i]));
110 
111  for (size_t i = 0; i < 3; i++)
112  for (size_t j = 0; j < 3; j++)
113  stream.write (reinterpret_cast<const char*> (&covariance_trans_ (i, j)), sizeof(covariance_trans_ (i, j)));
114 
115  for (size_t i = 0; i < 3; i++)
116  for (size_t j = 0; j < 3; j++)
117  stream.write (reinterpret_cast<const char*> (&covariance_rot_ (i, j)), sizeof(covariance_rot_ (i, j)));
118 
119  for (int sub_node_index = 0; sub_node_index < num_of_sub_nodes; ++sub_node_index)
120  {
121  sub_nodes[sub_node_index].serialize (stream);
122  }
123  }
124 
125  inline void deserialize(::std::istream & stream)
126  {
127  int num_of_sub_nodes;
128  stream.read (reinterpret_cast<char*> (&num_of_sub_nodes), sizeof(num_of_sub_nodes));
129 
130  if (num_of_sub_nodes > 0)
131  {
132  feature.deserialize (stream);
133  stream.read (reinterpret_cast<char*> (&threshold), sizeof(threshold));
134  }
135 
136  stream.read (reinterpret_cast<char*> (&value), sizeof(value));
137  stream.read (reinterpret_cast<char*> (&variance), sizeof(variance));
138 
139  for (size_t i = 0; i < 3; i++)
140  stream.read (reinterpret_cast<char*> (&trans_mean_[i]), sizeof(trans_mean_[i]));
141 
142  for (size_t i = 0; i < 3; i++)
143  stream.read (reinterpret_cast<char*> (&rot_mean_[i]), sizeof(rot_mean_[i]));
144 
145  for (size_t i = 0; i < 3; i++)
146  for (size_t j = 0; j < 3; j++)
147  stream.read (reinterpret_cast<char*> (&covariance_trans_ (i, j)), sizeof(covariance_trans_ (i, j)));
148 
149  for (size_t i = 0; i < 3; i++)
150  for (size_t j = 0; j < 3; j++)
151  stream.read (reinterpret_cast<char*> (&covariance_rot_ (i, j)), sizeof(covariance_rot_ (i, j)));
152 
153  sub_nodes.resize (num_of_sub_nodes);
154 
155  if (num_of_sub_nodes > 0)
156  {
157  for (int sub_node_index = 0; sub_node_index < num_of_sub_nodes; ++sub_node_index)
158  {
159  sub_nodes[sub_node_index].deserialize (stream);
160  }
161  }
162  }
163  };
164  }
165 }
166 #endif /* FACE_DETECTOR_COMMON_H_ */
pcl
This file defines compatibility wrappers for low level I/O functions.
Definition: convolution.h:45
pcl::face_detection::FeatureType::serialize
void serialize(std::ostream &stream) const
Definition: face_common.h:42
pcl::face_detection::RFTreeNode::threshold
float threshold
Definition: face_common.h:75
pcl::face_detection::RFTreeNode::value
float value
Definition: face_common.h:78
pcl::face_detection::FeatureType::threshold_
float threshold_
Definition: face_common.h:34
pcl::face_detection::TrainingExample::row_
int row_
Definition: face_common.h:15
pcl::face_detection::TrainingExample
Definition: face_common.h:11
pcl::face_detection::FeatureType::col1_
int col1_
Definition: face_common.h:28
pcl::face_detection::TrainingExample::rot_
Eigen::Vector3f rot_
Definition: face_common.h:21
pcl::face_detection::RFTreeNode::variance
float variance
Definition: face_common.h:79
pcl::face_detection::RFTreeNode
Definition: face_common.h:72
pcl::face_detection::FeatureType
Definition: face_common.h:25
pcl::face_detection::FeatureType::row1_
int row1_
Definition: face_common.h:28
pcl::face_detection::RFTreeNode::trans_mean_
Eigen::Vector3d trans_mean_
Definition: face_common.h:81
pcl::face_detection::FeatureType::wsizey1_
int wsizey1_
Definition: face_common.h:31
pcl::face_detection::FeatureType::col2_
int col2_
Definition: face_common.h:29
pcl::face_detection::FeatureType::wsizey2_
int wsizey2_
Definition: face_common.h:32
pcl::face_detection::TrainingExample::trans_
Eigen::Vector3f trans_
Definition: face_common.h:20
pcl::face_detection::RFTreeNode::serialize
EIGEN_MAKE_ALIGNED_OPERATOR_NEW void serialize(::std::ostream &stream) const
Definition: face_common.h:90
pcl::face_detection::TrainingExample::iimages_
std::vector< boost::shared_ptr< pcl::IntegralImage2D< float, 1 > > > iimages_
Definition: face_common.h:14
pcl::face_detection::RFTreeNode::covariance_rot_
Eigen::Matrix3d covariance_rot_
Definition: face_common.h:86
pcl::face_detection::RFTreeNode::purity_
float purity_
Definition: face_common.h:84
pcl::face_detection::FeatureType::used_ii_
int used_ii_
Definition: face_common.h:35
pcl::face_detection::TrainingExample::label_
int label_
Definition: face_common.h:17
pcl::face_detection::FeatureType::FeatureType
FeatureType()
Definition: face_common.h:37
pcl::face_detection::FeatureType::row2_
int row2_
Definition: face_common.h:29
pcl::face_detection::TrainingExample::wsize_
int wsize_
Definition: face_common.h:16
pcl::face_detection::RFTreeNode::covariance_trans_
Eigen::Matrix3d covariance_trans_
Definition: face_common.h:85
pcl::face_detection::RFTreeNode::feature
FeatureType feature
Definition: face_common.h:76
pcl::face_detection::RFTreeNode::sub_nodes
std::vector< RFTreeNode > sub_nodes
Definition: face_common.h:77
pcl::face_detection::FeatureType::wsizex2_
int wsizex2_
Definition: face_common.h:32
pcl::face_detection::FeatureType::deserialize
void deserialize(std::istream &stream)
Definition: face_common.h:56
pcl::face_detection::TrainingExample::col_
int col_
Definition: face_common.h:15
pcl::face_detection::FeatureType::wsizex1_
int wsizex1_
Definition: face_common.h:31
pcl::face_detection::RFTreeNode::rot_mean_
Eigen::Vector3d rot_mean_
Definition: face_common.h:82
pcl::face_detection::RFTreeNode::deserialize
void deserialize(::std::istream &stream)
Definition: face_common.h:125