39 #ifndef PCL_TRANSFORMS_H_ 40 #define PCL_TRANSFORMS_H_ 42 #include <pcl/point_cloud.h> 43 #include <pcl/point_types.h> 44 #include <pcl/common/centroid.h> 45 #include <pcl/common/eigen.h> 46 #include <pcl/PointIndices.h> 57 template <
typename Po
intT,
typename Scalar>
void 60 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform);
62 template <
typename Po
intT>
void 65 const Eigen::Affine3f &transform)
67 return (transformPointCloud<PointT, float> (cloud_in, cloud_out, transform));
77 template <
typename Po
intT,
typename Scalar>
void 79 const std::vector<int> &indices,
81 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform);
83 template <
typename Po
intT>
void 85 const std::vector<int> &indices,
87 const Eigen::Affine3f &transform)
89 return (transformPointCloud<PointT, float> (cloud_in, indices, cloud_out, transform));
99 template <
typename Po
intT,
typename Scalar>
void 103 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform)
105 return (transformPointCloud<PointT, Scalar> (cloud_in, indices.
indices, cloud_out, transform));
108 template <
typename Po
intT>
void 112 const Eigen::Affine3f &transform)
114 return (transformPointCloud<PointT, float> (cloud_in, indices, cloud_out, transform));
123 template <
typename Po
intT,
typename Scalar>
void 126 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform);
128 template <
typename Po
intT>
void 131 const Eigen::Affine3f &transform)
133 return (transformPointCloudWithNormals<PointT, float> (cloud_in, cloud_out, transform));
142 template <
typename Po
intT,
typename Scalar>
void 144 const std::vector<int> &indices,
146 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform);
148 template <
typename Po
intT>
void 150 const std::vector<int> &indices,
152 const Eigen::Affine3f &transform)
154 return (transformPointCloudWithNormals<PointT, float> (cloud_in, indices, cloud_out, transform));
163 template <
typename Po
intT,
typename Scalar>
void 167 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform)
169 return (transformPointCloudWithNormals<PointT, Scalar> (cloud_in, indices.
indices, cloud_out, transform));
173 template <
typename Po
intT>
void 177 const Eigen::Affine3f &transform)
179 return (transformPointCloudWithNormals<PointT, float> (cloud_in, indices, cloud_out, transform));
189 template <
typename Po
intT,
typename Scalar>
void 192 const Eigen::Matrix<Scalar, 4, 4> &transform)
194 Eigen::Transform<Scalar, 3, Eigen::Affine> t (transform);
195 return (transformPointCloud<PointT, Scalar> (cloud_in, cloud_out, t));
198 template <
typename Po
intT>
void 201 const Eigen::Matrix4f &transform)
203 return (transformPointCloud<PointT, float> (cloud_in, cloud_out, transform));
213 template <
typename Po
intT,
typename Scalar>
void 215 const std::vector<int> &indices,
217 const Eigen::Matrix<Scalar, 4, 4> &transform)
219 Eigen::Transform<Scalar, 3, Eigen::Affine> t (transform);
220 return (transformPointCloud<PointT, Scalar> (cloud_in, indices, cloud_out, t));
223 template <
typename Po
intT>
void 225 const std::vector<int> &indices,
227 const Eigen::Matrix4f &transform)
229 return (transformPointCloud<PointT, float> (cloud_in, indices, cloud_out, transform));
239 template <
typename Po
intT,
typename Scalar>
void 243 const Eigen::Matrix<Scalar, 4, 4> &transform)
245 return (transformPointCloud<PointT, Scalar> (cloud_in, indices.
indices, cloud_out, transform));
248 template <
typename Po
intT>
void 252 const Eigen::Matrix4f &transform)
254 return (transformPointCloud<PointT, float> (cloud_in, indices, cloud_out, transform));
264 template <
typename Po
intT,
typename Scalar>
void 267 const Eigen::Matrix<Scalar, 4, 4> &transform)
269 Eigen::Transform<Scalar, 3, Eigen::Affine> t (transform);
270 return (transformPointCloudWithNormals<PointT, Scalar> (cloud_in, cloud_out, t));
274 template <
typename Po
intT>
void 277 const Eigen::Matrix4f &transform)
279 return (transformPointCloudWithNormals<PointT, float> (cloud_in, cloud_out, transform));
290 template <
typename Po
intT,
typename Scalar>
void 292 const std::vector<int> &indices,
294 const Eigen::Matrix<Scalar, 4, 4> &transform)
296 Eigen::Transform<Scalar, 3, Eigen::Affine> t (transform);
297 return (transformPointCloudWithNormals<PointT, Scalar> (cloud_in, indices, cloud_out, t));
301 template <
typename Po
intT>
void 303 const std::vector<int> &indices,
305 const Eigen::Matrix4f &transform)
307 return (transformPointCloudWithNormals<PointT, float> (cloud_in, indices, cloud_out, transform));
318 template <
typename Po
intT,
typename Scalar>
void 322 const Eigen::Matrix<Scalar, 4, 4> &transform)
324 Eigen::Transform<Scalar, 3, Eigen::Affine> t (transform);
325 return (transformPointCloudWithNormals<PointT, Scalar> (cloud_in, indices, cloud_out, t));
329 template <
typename Po
intT>
void 333 const Eigen::Matrix4f &transform)
335 return (transformPointCloudWithNormals<PointT, float> (cloud_in, indices, cloud_out, transform));
345 template <
typename Po
intT,
typename Scalar>
inline void 348 const Eigen::Matrix<Scalar, 3, 1> &offset,
349 const Eigen::Quaternion<Scalar> &rotation);
351 template <
typename Po
intT>
inline void 354 const Eigen::Vector3f &offset,
355 const Eigen::Quaternionf &rotation)
357 return (transformPointCloud<PointT, float> (cloud_in, cloud_out, offset, rotation));
367 template <
typename Po
intT,
typename Scalar>
inline void 370 const Eigen::Matrix<Scalar, 3, 1> &offset,
371 const Eigen::Quaternion<Scalar> &rotation);
373 template <
typename Po
intT>
void 376 const Eigen::Vector3f &offset,
377 const Eigen::Quaternionf &rotation)
379 return (transformPointCloudWithNormals<PointT, float> (cloud_in, cloud_out, offset, rotation));
388 template <
typename Po
intT,
typename Scalar>
inline PointT 390 const Eigen::Transform<Scalar, 3, Eigen::Affine> &transform);
392 template <
typename Po
intT>
inline PointT 394 const Eigen::Affine3f &transform)
396 return (transformPoint<PointT, float> (point, transform));
406 template <
typename Po
intT,
typename Scalar>
inline double 408 Eigen::Transform<Scalar, 3, Eigen::Affine> &transform);
410 template <
typename Po
intT>
inline double 412 Eigen::Affine3f &transform)
414 return (getPrincipalTransformation<PointT, float> (cloud, transform));
418 #include <pcl/common/impl/transforms.hpp> 420 #endif // PCL_TRANSFORMS_H_ 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.
std::vector< int > indices
void transformPointCloudWithNormals(const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, const Eigen::Transform< Scalar, 3, Eigen::Affine > &transform)
Transform a point cloud and rotate its normals using an Eigen transform.
void transformPointCloud(const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, const Eigen::Transform< Scalar, 3, Eigen::Affine > &transform)
Apply an affine transform defined by an Eigen Transform.
PointCloud represents the base class in PCL for storing collections of 3D points. ...
A point structure representing Euclidean xyz coordinates, and the RGB color.