pcl ::compute3DCentroid ()计算质⼼算法原理
质⼼计算公式
质⼼指的是质量的中⼼,认为是物体质量集中于此点的假想点。
通常物体质⼼坐标计算公式如下:
其中,为各质点的坐标,为质点对应的质量。PCL 函数原理
康德判断力批判计算点云质⼼时,令上述公式中的 即可,则点云质⼼坐标计算公式如下:坟籍
PLC提供了现有的函数可供调⽤:
Eigen ::Vector4f centroid ; //质⼼
pcl ::compute3DCentroid (*cloud_smoothed ,centroid ); // 计算质⼼
该函数的原理即是使⽤上述公式计算点云质⼼坐标,接下来通过代码进⾏验证。代码
尺壁寸阴P c P =c m r M 1i =0∑n奥特曼儿童画
祖父的园子读后感
i i
r =i (x ,y ,z ),i =i i i 1,2,...,n m i m =i 1P =c (x ,y ,z )n 1i =0∑n i i =0∑n i i =0∑n
i
#include<iostream>
#include<string>
#include<Eigen/Core>
#include<pcl/io/ply_io.h>
#include<pcl/point_types.h>
#include<pcl/common/transforms.h>
using namespace std;
typedef pcl::PointXYZ PointT;
中国简笔画int main(int argc,char**argv)
{
// 导⼊点云
pcl::PointCloud<PointT>::Ptr cloud(new pcl::PointCloud<PointT>);
if(pcl::io::loadPLYFile("bunny.ply",*cloud)==-1){// 读取.ply⽂件
cerr <<"can't read file bunny.ply"<< endl;
return-1;
}
// PCL函数计算质⼼
Eigen::Vector4f centroid;// 质⼼
pcl::compute3DCentroid(*cloud, centroid);// 齐次坐标,(c0,c1,c2,1)
/
/ 按公式计算质⼼
PointT p_c;
p_c.x =0; p_c.y =0; p_c.z =0;
for(auto p : cloud->points){
p_c.x += p.x;
p_c.y += p.y;
p_c.z += p.z;
}
风流小山村p_c.x /= cloud->points.size();
p_c.y /= cloud->points.size();
p_c.z /= cloud->points.size();
/
/ 结果对⽐
cout <<"pcl::compute3DCentroid(*cloud, centroid)计算点云质⼼结果:"<< endl
<<"\t"<<centroid(0)<<"\t"<<centroid(1)<<"\t"<<centroid(2)<<"\t"<<centroid(3)<< endl;
cout <<"按照公式计算点云质⼼结果:"<< endl
<<"\t"<< p_c.x <<"\t"<< p_c.y <<"\t"<< p_c.z << endl;
getchar();
return0;
}
结果
备注
讽刺的话
点云⽂件可从博客:中提供的链接下载。