PCLcommon中常见的基础功能函数pcl_common中主要是包含了PCL库常⽤的公共数据结构和⽅法,⽐如PointCloud的类和许多⽤于表⽰
点,曲⾯,法向量,特征描述等点的类型,⽤于计算距离,均值以及协⽅差,⾓度转换以及⼏何变化的函数。
对于各种点,特征的类型的数据结构在这⾥就不再⼀⼀举例说明,这需要根据实际情况⽽定。
这⾥主要介绍⼀下基本的常见的功能函数,这些函数其实⽤C++也可以⾃⾏实现,在PCL中提供了更多的重载接⼝,⽅便使⽤。
common模块中的头⽂件
angles.h    定义了标准的C接⼝的⾓度计算函数
centriod.h    定义了中⼼点的估算以及协⽅差矩阵的计算
commo.h    标准的C以及C++类,是其他common 函数的⽗类
distance.h    定义标准的C接⼝⽤于计算距离
file_io.h    定义了⼀些⽂件帮助写或者读⽅⾯的功能。
random.h    定义⼀些随机点云⽣成的函数
geometry.h    定义⼀些基本的⼏何功能的函数
intersection.h    定义线与线相交的函数
norm.h    定义了标准的C⽅法计算矩阵的正则化
time.h    定义了时间计算的函数
Point_types.h    定义了所有PCL实现的点云的数据结构的类型
common模块中的基本函数
pcl::rad2deg(fllat alpha)
从弧度到⾓度
pcl::deg2rad(float aipha)
从⾓度到弧度
pcl::normAngle(float alpha)
正则化⾓度在(-PI,PI)之间
pcl::compute3DCentroid (const pcl::PointCloud< PointT > &cloud, Eigen::Matrix< Scalar, 4, 1 >
¢roid)
计算给定⼀点的3D中⼼点,并且返回⼀个三维向量
pcl::computeCovarianceMatrix (const pcl::PointCloud< PointT > &cloud, const Eigen::Matrix< Scalar, 4, 1 > ¢roid, Eigen::Matrix< Scalar, 3, 3 > &covariance_matrix)
计算给定的三维点云的协⽅差矩阵。
pcl::computeMeanAndCovarianceMatrix (const pcl::PointCloud< PointT > &cloud, Eigen::Matrix< Scalar, 3, 3 > &covariance_matrix, Eigen::Matrix< Scalar, 4, 1 > ¢roid
计算正则化的3*3的协⽅差矩阵以及给定点云数据的中⼼点
pcl::demeanPointCloud (const pcl::PointCloud< PointT > &cloud_in, const Eigen::Matrix< Scalar, 4, 1 > ¢roid, pcl::PointCloud< PointT > &cloud_out)
pcl::computeNDCentroid (const pcl::PointCloud< PointT > &cloud, Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > ¢roid)
利⽤⼀组点的指数对其进⾏⼀般的、通⽤的nD中⼼估计。
pcl::getAngle3D (const Eigen::Vector4f &v1, const Eigen::Vector4f &v2, const bool in_degree=false)
计算两个向量之间的⾓度
pcl::getMeanStd (const std::vector< float > &values, double &mean, double &stddev)
同时计算给定点云数据的均值和标准⽅差
pcl::getPointsInBox (const pcl::PointCloud< PointT > &cloud, Eigen::Vector4f &min_pt, Eigen::Vector4f &max_pt, std::vector< int > &indices)
在给定边界的情况下,获取⼀组位于框中的点
pcl::getMaxDistance (const pcl::PointCloud< PointT > &cloud, const Eigen::Vector4f &pivot_pt, Eigen::Vector4f &max_pt)
给定点云数据中点与点之间的最⼤距离的值
pcl::getMinMax3D (const pcl::PointCloud< PointT > &cloud, PointT &min_pt, PointT &max_pt)
获取给定点云中的在XYZ轴上的最⼤和最⼩值
pcl::getCircumcircleRadius (const PointT &pa, const PointT &pb, const PointT &pc)
计算由三个点pa、pb和pc构成的三⾓形的外接圆半径。
pcl::getMinMax (const PointT &histogram, int len, float &min_p, float &max_p)
获取点直⽅图上的最⼩值和最⼤值。
pcl::calculatePolygonArea (const pcl::PointCloud< PointT > &polygon)
根据给定的多边形的点云计算多边形的⾯积
pcl::copyPoint (const PointInT &point_in, PointOutT &point_out)
从Point_in把字段数据赋值到Point_out
pcl::lineToLineSegment (const Eigen::VectorXf &line_a, const Eigen::VectorXf &line_b, Eigen::Vector4f &pt1_seg, Eigen::Vector4f &pt2_seg)
获取两条三维直线之间的最短三维线段
pcl::sqrPointToLineDistance (const Eigen::Vector4f &pt, const Eigen::Vector4f &line_pt, const Eigen::Vector4f &line_dir)
获取点到线的平⽅距离(由点和⽅向表⽰)
pcl::getMaxSegment (const pcl::PointCloud< PointT > &cloud, PointT &pmin, PointT &pmax)
在给定的⼀组点中获得最⼤分段,并返回最⼩和最⼤点。
pcl::eigen22 (const Matrix &mat, typename Matrix::Scalar &eigenvalue, Vector &eigenvector)
确定最⼩特征值及其对应的特征向量
pcl::computeCorrespondingEigenVector (const Matrix &mat, const typename Matrix::Scalar
&eigenvalue, Vector &eigenvector)
确定对称半正定输⼊矩阵给定特征值对应的特征向量
pcl::eigen33 (const Matrix &mat, typename Matrix::Scalar &eigenvalue, Vector &eigenvector)
确定对称半正定输⼊矩阵最⼩特征值的特征向量和特征值
pcl::invert2x2 (const Matrix &matrix, Matrix &inverse)
计算2x2矩阵的逆。
pcl::invert3x3SymMatrix (const Matrix &matrix, Matrix &inverse)
计算3x3对称矩阵的逆。
pcl::determinant3x3Matrix (const Matrix &matrix)
计算3x3矩阵的⾏列式
pcl::getTransFromUnitVectorsZY (const Eigen::Vector3f &z_axis, const Eigen::Vector3f &y_direction, Eigen::Affine3f &transformation)
获得唯⼀的3D旋转,将Z轴旋转成(0,0,1)Y轴旋转成(0,1,0)并且两个轴是正交的。
pcl::getTransformationFromTwoUnitVectorsAndOrigin (const Eigen::Vector3f &y_direction, const Eigen::Vector3f &z_axis, const Eigen::Vector3f &origin, Eigen::Affine3f &transformation)
得到将origin转化为(0,0,0)的变换,并将Z轴旋转成(0,0,1)和Y⽅向(0,1,0)
pcl::getEulerAngles (const Eigen::Transform< Scalar, 3, Eigen::Affine > &t, Scalar &roll, Scalar &pitch, Scalar &yaw)
从给定的变换矩阵中提取欧拉⾓
pcl::getTranslationAndEulerAngles (const Eigen::Transform< Scalar, 3, Eigen::Affine > &t, Scalar &x, Scalar &y, Scalar &z, Scalar &roll, Scalar &pitch, Scalar &yaw)
给定的转换中,提取XYZ以及欧拉⾓
pcl::getTransformation (float x, float y, float z, float roll, float pitch, float yaw)
从给定的平移和欧拉⾓创建转换矩阵
pcl::saveBinary (const Eigen::MatrixBase< Derived > &matrix, std::ostream &file)
保存或者写矩阵到⼀个输出流中
pcl::loadBinary (Eigen::MatrixBase< Derived > const &matrix, std::istream &file)
从输⼊流中读取矩阵
pcl::lineWithLineIntersection (const Eigen::VectorXf &line_a, const Eigen::VectorXf &line_b, Eigen::Vector4f &point, double sqr_eps=1e-4)
获取空间中两条三维直线作为三维点的交点。
pcl::getFieldIndex (const pcl::PCLPointCloud2 &cloud, const std::string &field_name)
获取指定字段的索引(即维度/通道)
pcl::getFieldsList (const pcl::PointCloud< PointT > &cloud)
获取给定点云中所有可⽤字段的列表
pcl::getFieldSize (const int datatype)
正则化协方差获取特定字段数据类型的⼤⼩(字节)。
pcl::concatenatePointCloud (const pcl::PCLPointCloud2 &cloud1, const pcl::PCLPointCloud2 &cloud2, pcl::PCLPointCloud2 &cloud_out)
连接 pcl::PCLPointCloud2类型的点云字段

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。