44
44
#include < pcl/point_cloud.h>
45
45
#include < limits>
46
46
#include < Eigen/Dense>
47
-
47
+ #include < pcl/common/common.h>
48
+ #include < pcl/common/centroid.h>
48
49
49
50
namespace pcl
50
51
{
@@ -167,36 +168,20 @@ pcl::LineRGBD<PointXYZT, PointRGBT>::computeBoundingBoxAndCenterTemplatePointClo
167
168
bb.x = bb.y = bb.z = std::numeric_limits<float >::max ();
168
169
bb.width = bb.height = bb.depth = 0 .0f ;
169
170
170
- Eigen::Vector3f geometric_center = Eigen::Vector3f ::Zero ();
171
- Eigen::Vector3f min_pos, max_pos;
171
+ Eigen::Vector4f geometric_center = Eigen::Vector4f ::Zero ();
172
+ Eigen::Vector4f min_pos, max_pos;
172
173
min_pos.fill (std::numeric_limits<float >::max ());
173
174
max_pos.fill (std::numeric_limits<float >::lowest ());
174
- std::size_t counter = 0 ;
175
- for (std::size_t j = 0 ; j < template_point_cloud.size (); ++j)
176
- {
177
- const PointXYZRGBA & p = template_point_cloud.points [j];
178
-
179
- if (!isXYZFinite (p))
180
- continue ;
181
-
182
- for (std::size_t row=0 ; row<3 ; ++row)
183
- {
184
- min_pos[row] = std::min (min_pos[row], p.getVector3fMap ()[row]);
185
- max_pos[row] = std::max (max_pos[row], p.getVector3fMap ()[row]);
186
- }
187
-
188
- geometric_center += p.getVector3fMap ();
189
-
190
- ++counter;
191
- }
192
- geometric_center /= static_cast <float > (counter);
175
+
176
+ pcl::getMinMax3D (template_point_cloud, min_pos, max_pos);
177
+ pcl::compute3DCentroid (template_point_cloud, geometric_center);
193
178
194
- Eigen::Vector3f bb_dim = max_pos - min_pos;
179
+ Eigen::Vector3f bb_dim = ( max_pos - min_pos). head < 3 >() ;
195
180
bb.width = bb_dim[0 ];
196
181
bb.height = bb_dim[1 ];
197
182
bb.depth = bb_dim[2 ];
198
183
199
- Eigen::Vector3f diff_pos = min_pos - geometric_center;
184
+ Eigen::Vector3f diff_pos = ( min_pos - geometric_center). head < 3 >() ;
200
185
bb.x = diff_pos[0 ];
201
186
bb.y = diff_pos[1 ];
202
187
bb.z = diff_pos[2 ];
@@ -208,7 +193,7 @@ pcl::LineRGBD<PointXYZT, PointRGBT>::computeBoundingBoxAndCenterTemplatePointClo
208
193
if (!isXYZFinite (p))
209
194
continue ;
210
195
211
- p.getVector3fMap () -= geometric_center;
196
+ p.getVector4fMap () -= geometric_center;
212
197
213
198
template_point_cloud.points [j] = p;
214
199
}
0 commit comments