Skip to content

Commit 0ebefdb

Browse files
committed
Use pcl common functions
1 parent 7c9940e commit 0ebefdb

File tree

1 file changed

+10
-25
lines changed

1 file changed

+10
-25
lines changed

recognition/include/pcl/recognition/impl/linemod/line_rgbd.hpp

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@
4444
#include <pcl/point_cloud.h>
4545
#include <limits>
4646
#include <Eigen/Dense>
47-
47+
#include <pcl/common/common.h>
48+
#include <pcl/common/centroid.h>
4849

4950
namespace pcl
5051
{
@@ -167,36 +168,20 @@ pcl::LineRGBD<PointXYZT, PointRGBT>::computeBoundingBoxAndCenterTemplatePointClo
167168
bb.x = bb.y = bb.z = std::numeric_limits<float>::max ();
168169
bb.width = bb.height = bb.depth = 0.0f;
169170

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;
172173
min_pos.fill (std::numeric_limits<float>::max ());
173174
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);
193178

194-
Eigen::Vector3f bb_dim = max_pos - min_pos;
179+
Eigen::Vector3f bb_dim = (max_pos - min_pos).head<3>();
195180
bb.width = bb_dim[0];
196181
bb.height = bb_dim[1];
197182
bb.depth = bb_dim[2];
198183

199-
Eigen::Vector3f diff_pos = min_pos - geometric_center;
184+
Eigen::Vector3f diff_pos = (min_pos - geometric_center).head<3>();
200185
bb.x = diff_pos[0];
201186
bb.y = diff_pos[1];
202187
bb.z = diff_pos[2];
@@ -208,7 +193,7 @@ pcl::LineRGBD<PointXYZT, PointRGBT>::computeBoundingBoxAndCenterTemplatePointClo
208193
if (!isXYZFinite(p))
209194
continue;
210195

211-
p.getVector3fMap () -= geometric_center;
196+
p.getVector4fMap () -= geometric_center;
212197

213198
template_point_cloud.points[j] = p;
214199
}

0 commit comments

Comments
 (0)