42 #include <pcl/point_cloud.h>
45 #include <pcl/common/eigen.h>
46 #include <pcl/PointIndices.h>
59 template <
typename Po
intT,
typename Scalar>
void
62 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform,
63 bool copy_all_fields =
true);
65 template <
typename Po
intT>
void
68 const Eigen::Affine3f &transform,
69 bool copy_all_fields =
true)
71 return (transformPointCloud<PointT, float> (cloud_in, cloud_out, transform, copy_all_fields));
83 template <
typename Po
intT,
typename Scalar>
void
85 const std::vector<int> &indices,
87 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform,
88 bool copy_all_fields =
true);
90 template <
typename Po
intT>
void
92 const std::vector<int> &indices,
94 const Eigen::Affine3f &transform,
95 bool copy_all_fields =
true)
97 return (transformPointCloud<PointT, float> (cloud_in, indices, cloud_out, transform, copy_all_fields));
109 template <
typename Po
intT,
typename Scalar>
void
113 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform,
114 bool copy_all_fields =
true)
116 return (transformPointCloud<PointT, Scalar> (cloud_in, indices.
indices, cloud_out, transform, copy_all_fields));
119 template <
typename Po
intT>
void
123 const Eigen::Affine3f &transform,
124 bool copy_all_fields =
true)
126 return (transformPointCloud<PointT, float> (cloud_in, indices, cloud_out, transform, copy_all_fields));
138 template <
typename Po
intT,
typename Scalar>
void
141 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform,
142 bool copy_all_fields =
true);
144 template <
typename Po
intT>
void
147 const Eigen::Affine3f &transform,
148 bool copy_all_fields =
true)
150 return (transformPointCloudWithNormals<PointT, float> (cloud_in, cloud_out, transform, copy_all_fields));
162 template <
typename Po
intT,
typename Scalar>
void
164 const std::vector<int> &indices,
166 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform,
167 bool copy_all_fields =
true);
169 template <
typename Po
intT>
void
171 const std::vector<int> &indices,
173 const Eigen::Affine3f &transform,
174 bool copy_all_fields =
true)
176 return (transformPointCloudWithNormals<PointT, float> (cloud_in, indices, cloud_out, transform, copy_all_fields));
188 template <
typename Po
intT,
typename Scalar>
void
192 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform,
193 bool copy_all_fields =
true)
195 return (transformPointCloudWithNormals<PointT, Scalar> (cloud_in, indices.
indices, cloud_out, transform, copy_all_fields));
199 template <
typename Po
intT>
void
203 const Eigen::Affine3f &transform,
204 bool copy_all_fields =
true)
206 return (transformPointCloudWithNormals<PointT, float> (cloud_in, indices, cloud_out, transform, copy_all_fields));
218 template <
typename Po
intT,
typename Scalar>
void
221 const Eigen::Matrix<Scalar, 4, 4> &transform,
222 bool copy_all_fields =
true)
224 Eigen::Transform<Scalar, 3, Eigen::Affine> t (transform);
225 return (transformPointCloud<PointT, Scalar> (cloud_in, cloud_out, t, copy_all_fields));
228 template <
typename Po
intT>
void
231 const Eigen::Matrix4f &transform,
232 bool copy_all_fields =
true)
234 return (transformPointCloud<PointT, float> (cloud_in, cloud_out, transform, copy_all_fields));
246 template <
typename Po
intT,
typename Scalar>
void
248 const std::vector<int> &indices,
250 const Eigen::Matrix<Scalar, 4, 4> &transform,
251 bool copy_all_fields =
true)
253 Eigen::Transform<Scalar, 3, Eigen::Affine> t (transform);
254 return (transformPointCloud<PointT, Scalar> (cloud_in, indices, cloud_out, t, copy_all_fields));
257 template <
typename Po
intT>
void
259 const std::vector<int> &indices,
261 const Eigen::Matrix4f &transform,
262 bool copy_all_fields =
true)
264 return (transformPointCloud<PointT, float> (cloud_in, indices, cloud_out, transform, copy_all_fields));
276 template <
typename Po
intT,
typename Scalar>
void
280 const Eigen::Matrix<Scalar, 4, 4> &transform,
281 bool copy_all_fields =
true)
283 return (transformPointCloud<PointT, Scalar> (cloud_in, indices.
indices, cloud_out, transform, copy_all_fields));
286 template <
typename Po
intT>
void
290 const Eigen::Matrix4f &transform,
291 bool copy_all_fields =
true)
293 return (transformPointCloud<PointT, float> (cloud_in, indices, cloud_out, transform, copy_all_fields));
306 template <
typename Po
intT,
typename Scalar>
void
309 const Eigen::Matrix<Scalar, 4, 4> &transform,
310 bool copy_all_fields =
true)
312 Eigen::Transform<Scalar, 3, Eigen::Affine> t (transform);
313 return (transformPointCloudWithNormals<PointT, Scalar> (cloud_in, cloud_out, t, copy_all_fields));
317 template <
typename Po
intT>
void
320 const Eigen::Matrix4f &transform,
321 bool copy_all_fields =
true)
323 return (transformPointCloudWithNormals<PointT, float> (cloud_in, cloud_out, transform, copy_all_fields));
337 template <
typename Po
intT,
typename Scalar>
void
339 const std::vector<int> &indices,
341 const Eigen::Matrix<Scalar, 4, 4> &transform,
342 bool copy_all_fields =
true)
344 Eigen::Transform<Scalar, 3, Eigen::Affine> t (transform);
345 return (transformPointCloudWithNormals<PointT, Scalar> (cloud_in, indices, cloud_out, t, copy_all_fields));
349 template <
typename Po
intT>
void
351 const std::vector<int> &indices,
353 const Eigen::Matrix4f &transform,
354 bool copy_all_fields =
true)
356 return (transformPointCloudWithNormals<PointT, float> (cloud_in, indices, cloud_out, transform, copy_all_fields));
370 template <
typename Po
intT,
typename Scalar>
void
374 const Eigen::Matrix<Scalar, 4, 4> &transform,
375 bool copy_all_fields =
true)
377 Eigen::Transform<Scalar, 3, Eigen::Affine> t (transform);
378 return (transformPointCloudWithNormals<PointT, Scalar> (cloud_in, indices, cloud_out, t, copy_all_fields));
382 template <
typename Po
intT>
void
386 const Eigen::Matrix4f &transform,
387 bool copy_all_fields =
true)
389 return (transformPointCloudWithNormals<PointT, float> (cloud_in, indices, cloud_out, transform, copy_all_fields));
401 template <
typename Po
intT,
typename Scalar>
inline void
404 const Eigen::Matrix<Scalar, 3, 1> &offset,
405 const Eigen::Quaternion<Scalar> &rotation,
406 bool copy_all_fields =
true);
408 template <
typename Po
intT>
inline void
411 const Eigen::Vector3f &offset,
412 const Eigen::Quaternionf &rotation,
413 bool copy_all_fields =
true)
415 return (transformPointCloud<PointT, float> (cloud_in, cloud_out, offset, rotation, copy_all_fields));
428 template <
typename Po
intT,
typename Scalar>
inline void
431 const Eigen::Matrix<Scalar, 3, 1> &offset,
432 const Eigen::Quaternion<Scalar> &rotation,
433 bool copy_all_fields =
true);
435 template <
typename Po
intT>
void
438 const Eigen::Vector3f &offset,
439 const Eigen::Quaternionf &rotation,
440 bool copy_all_fields =
true)
442 return (transformPointCloudWithNormals<PointT, float> (cloud_in, cloud_out, offset, rotation, copy_all_fields));
451 template <
typename Po
intT,
typename Scalar>
inline PointT
453 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform);
455 template <
typename Po
intT>
inline PointT
457 const Eigen::Affine3f &transform)
459 return (transformPoint<PointT, float> (point, transform));
468 template <
typename Po
intT,
typename Scalar>
inline PointT
470 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform);
472 template <
typename Po
intT>
inline PointT
474 const Eigen::Affine3f &transform)
476 return (transformPointWithNormal<PointT, float> (point, transform));
486 template <
typename Po
intT,
typename Scalar>
inline double
488 Eigen::Transform<Scalar, 3, Eigen::Affine> &transform);
490 template <
typename Po
intT>
inline double
492 Eigen::Affine3f &transform)
494 return (getPrincipalTransformation<PointT, float> (cloud, transform));
498 #include <pcl/common/impl/transforms.hpp>
Define methods for centroid estimation and covariance matrix calculus.
PointCloud represents the base class in PCL for storing collections of 3D points.
Defines all the PCL implemented PointT point type structures.
void transformPointCloud(const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, const Eigen::Transform< Scalar, 3, Eigen::Affine > &transform, bool copy_all_fields)
Apply an affine transform defined by an Eigen Transform.
PointT transformPointWithNormal(const PointT &point, const Eigen::Transform< Scalar, 3, Eigen::Affine > &transform)
Transform a point with members x,y,z,normal_x,normal_y,normal_z.
void transformPointCloudWithNormals(const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, const Eigen::Transform< Scalar, 3, Eigen::Affine > &transform, bool copy_all_fields)
Transform a point cloud and rotate its normals using an Eigen transform.
void transformPoint(const Eigen::Matrix< Scalar, 3, 1 > &point_in, Eigen::Matrix< Scalar, 3, 1 > &point_out, const Eigen::Transform< Scalar, 3, Eigen::Affine > &transformation)
Transform a point using an affine matrix.
double getPrincipalTransformation(const pcl::PointCloud< PointT > &cloud, Eigen::Transform< Scalar, 3, Eigen::Affine > &transform)
Calculates the principal (PCA-based) alignment of the point cloud.
A point structure representing Euclidean xyz coordinates, and the RGB color.