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 return (transformPointCloud<PointT, Scalar> (cloud_in, cloud_out, transform.matrix (), copy_all_fields));
68 template <
typename Po
intT>
void
71 const Eigen::Affine3f &transform,
72 bool copy_all_fields =
true)
74 return (transformPointCloud<PointT, float> (cloud_in, cloud_out, transform.matrix (), copy_all_fields));
86 template <
typename Po
intT,
typename Scalar>
void
90 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform,
91 bool copy_all_fields =
true)
93 return (transformPointCloud<PointT, Scalar> (cloud_in, indices, cloud_out, transform.matrix (), copy_all_fields));
96 template <
typename Po
intT>
void
100 const Eigen::Affine3f &transform,
101 bool copy_all_fields =
true)
103 return (transformPointCloud<PointT, float> (cloud_in, indices, cloud_out, transform.matrix (), copy_all_fields));
115 template <
typename Po
intT,
typename Scalar>
void
119 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform,
120 bool copy_all_fields =
true)
122 return (transformPointCloud<PointT, Scalar> (cloud_in, indices.
indices, cloud_out, transform.matrix (), copy_all_fields));
125 template <
typename Po
intT>
void
129 const Eigen::Affine3f &transform,
130 bool copy_all_fields =
true)
132 return (transformPointCloud<PointT, float> (cloud_in, indices.
indices, cloud_out, transform.matrix (), copy_all_fields));
144 template <
typename Po
intT,
typename Scalar>
void
147 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform,
148 bool copy_all_fields =
true)
150 return (transformPointCloudWithNormals<PointT, Scalar> (cloud_in, cloud_out, transform.matrix (), copy_all_fields));
153 template <
typename Po
intT>
void
156 const Eigen::Affine3f &transform,
157 bool copy_all_fields =
true)
159 return (transformPointCloudWithNormals<PointT, float> (cloud_in, cloud_out, transform.matrix (), copy_all_fields));
171 template <
typename Po
intT,
typename Scalar>
void
175 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform,
176 bool copy_all_fields =
true)
178 return (transformPointCloudWithNormals<PointT, Scalar> (cloud_in, indices, cloud_out, transform.matrix (), copy_all_fields));
181 template <
typename Po
intT>
void
185 const Eigen::Affine3f &transform,
186 bool copy_all_fields =
true)
188 return (transformPointCloudWithNormals<PointT, float> (cloud_in, indices, cloud_out, transform.matrix (), copy_all_fields));
200 template <
typename Po
intT,
typename Scalar>
void
204 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform,
205 bool copy_all_fields =
true)
207 return (transformPointCloudWithNormals<PointT, Scalar> (cloud_in, indices.
indices, cloud_out, transform.matrix (), copy_all_fields));
211 template <
typename Po
intT>
void
215 const Eigen::Affine3f &transform,
216 bool copy_all_fields =
true)
218 return (transformPointCloudWithNormals<PointT, float> (cloud_in, indices.
indices, cloud_out, transform.matrix (), copy_all_fields));
230 template <
typename Po
intT,
typename Scalar>
void
233 const Eigen::Matrix<Scalar, 4, 4> &transform,
234 bool copy_all_fields =
true);
236 template <
typename Po
intT>
void
239 const Eigen::Matrix4f &transform,
240 bool copy_all_fields =
true)
242 return (transformPointCloud<PointT, float> (cloud_in, cloud_out, transform, copy_all_fields));
254 template <
typename Po
intT,
typename Scalar>
void
258 const Eigen::Matrix<Scalar, 4, 4> &transform,
259 bool copy_all_fields =
true);
261 template <
typename Po
intT>
void
265 const Eigen::Matrix4f &transform,
266 bool copy_all_fields =
true)
268 return (transformPointCloud<PointT, float> (cloud_in, indices, cloud_out, transform, copy_all_fields));
280 template <
typename Po
intT,
typename Scalar>
void
284 const Eigen::Matrix<Scalar, 4, 4> &transform,
285 bool copy_all_fields =
true)
287 return (transformPointCloud<PointT, Scalar> (cloud_in, indices.
indices, cloud_out, transform, copy_all_fields));
290 template <
typename Po
intT>
void
294 const Eigen::Matrix4f &transform,
295 bool copy_all_fields =
true)
297 return (transformPointCloud<PointT, float> (cloud_in, indices, cloud_out, transform, copy_all_fields));
310 template <
typename Po
intT,
typename Scalar>
void
313 const Eigen::Matrix<Scalar, 4, 4> &transform,
314 bool copy_all_fields =
true);
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
341 const Eigen::Matrix<Scalar, 4, 4> &transform,
342 bool copy_all_fields =
true);
345 template <
typename Po
intT>
void
349 const Eigen::Matrix4f &transform,
350 bool copy_all_fields =
true)
352 return (transformPointCloudWithNormals<PointT, float> (cloud_in, indices, cloud_out, transform, copy_all_fields));
366 template <
typename Po
intT,
typename Scalar>
void
370 const Eigen::Matrix<Scalar, 4, 4> &transform,
371 bool copy_all_fields =
true)
373 return (transformPointCloudWithNormals<PointT, Scalar> (cloud_in, indices.
indices, cloud_out, transform, copy_all_fields));
377 template <
typename Po
intT>
void
381 const Eigen::Matrix4f &transform,
382 bool copy_all_fields =
true)
384 return (transformPointCloudWithNormals<PointT, float> (cloud_in, indices.
indices, cloud_out, transform, copy_all_fields));
396 template <
typename Po
intT,
typename Scalar>
inline void
399 const Eigen::Matrix<Scalar, 3, 1> &offset,
400 const Eigen::Quaternion<Scalar> &rotation,
401 bool copy_all_fields =
true);
403 template <
typename Po
intT>
inline void
406 const Eigen::Vector3f &offset,
407 const Eigen::Quaternionf &rotation,
408 bool copy_all_fields =
true)
410 return (transformPointCloud<PointT, float> (cloud_in, cloud_out, offset, rotation, copy_all_fields));
423 template <
typename Po
intT,
typename Scalar>
inline void
426 const Eigen::Matrix<Scalar, 3, 1> &offset,
427 const Eigen::Quaternion<Scalar> &rotation,
428 bool copy_all_fields =
true);
430 template <
typename Po
intT>
void
433 const Eigen::Vector3f &offset,
434 const Eigen::Quaternionf &rotation,
435 bool copy_all_fields =
true)
437 return (transformPointCloudWithNormals<PointT, float> (cloud_in, cloud_out, offset, rotation, copy_all_fields));
446 template <
typename Po
intT,
typename Scalar>
inline PointT
448 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform);
450 template <
typename Po
intT>
inline PointT
452 const Eigen::Affine3f &transform)
454 return (transformPoint<PointT, float> (point, transform));
463 template <
typename Po
intT,
typename Scalar>
inline PointT
465 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform);
467 template <
typename Po
intT>
inline PointT
469 const Eigen::Affine3f &transform)
471 return (transformPointWithNormal<PointT, float> (point, transform));
481 template <
typename Po
intT,
typename Scalar>
inline double
483 Eigen::Transform<Scalar, 3, Eigen::Affine> &transform);
485 template <
typename Po
intT>
inline double
487 Eigen::Affine3f &transform)
489 return (getPrincipalTransformation<PointT, float> (cloud, transform));
493 #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 transformPointCloudWithNormals(const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, const Eigen::Matrix< Scalar, 4, 4 > &transform, bool copy_all_fields)
Transform a point cloud and rotate its normals using 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 transformPointCloud(const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, const Eigen::Matrix< Scalar, 4, 4 > &transform, bool copy_all_fields)
Apply a rigid transform defined by a 4x4 matrix.
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.
IndicesAllocator<> Indices
Type used for indices in PCL.
A point structure representing Euclidean xyz coordinates, and the RGB color.