质心计算公式

质心指的是质量的中心,认为是物体质量集中于此点的假想点。
通常物体质心坐标计算公式如下:

其中,为各质点的坐标,为质点对应的质量。

PCL函数原理

计算点云质心时,令上述公式中的即可,则点云质心坐标计算公式如下:

PLC函数实现

Eigen::Vector4f centroid;  //质心
pcl::compute3DCentroid(*cloud_smoothed,centroid); // 计算质心

该函数的原理即是使用上述公式计算点云质心坐标,接下来通过代码进行验证。

代码实现

#include <iostream>
#include <Eigen/Core>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/common/transforms.h>
#include <pcl/visualization/pcl_visualizer.h>using namespace std;
typedef pcl::PointXYZ PointT;int main(int argc, char **argv)
{// 导入点云pcl::PointCloud<PointT>::Ptr cloud(new pcl::PointCloud<PointT>);// 点云文件地址:https://github.com/PointCloudLibrary/data/blob/master/tutorials/table_scene_lms400.pcdif (pcl::io::loadPCDFile(" table_scene_lms400.pcd", *cloud) == -1) { // 读取.pcd文件cerr << "can't read file table_scene_lms400.pcd" << 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计算点云质心结果:" << centroid << endl;cout << "按照公式计算点云质心结果:" << p_c<< endl;// 可视化pcl::visualization::PCLVisualizer viewer;viewer.addPointCloud(cloud);viewer.addCoordinateSystem();// 质心坐标PointT center;center.x = centroid(0);center.y = centroid(1);center.z = centroid(2);viewer.addSphere(center, 0.03, 1, 0, 0, "sphere",0);while (!viewer.wasStopped()){viewer.spinOnce(100);}return 0;
}
  • 结果

PCL之计算点云质心---pcl::compute3DCentroid()相关推荐

  1. PCL:compute3DCentroid ❤️ 计算点云质心

    文章目录 1 函数原型 2 代码实现 3 输出结果 4 源码 1 函数原型 compute3DCentroid (const pcl::PointCloud<PointT> &cl ...

  2. PCL: 获取点云的质心(几何中心点)

      获取点云的质心有两种方式,一种是pcl自带的API:pcl::compute3DCentroid(*cloud, centroid);,另一种是用数学的方式求所有点坐标的平均值.下面的代码实现了这 ...

  3. PCL:demeanPointCloud ❤️ 去点云质心

    文章目录 1 函数原型 2 代码实现 3 结果展示 4 源码 1 函数原型 pcl::demeanPointCloud (const pcl::PointCloud<PointT> &am ...

  4. pcl计算点云法向量

    最近因为项目,需要计算点云的法向量,所以在网上看了一些资料,然后知道pcl库里面有这些功能,pcl的法向量计算的原理: pcl里面计算点云(自己的理解) 根据顶点采样最近的局部点云(k个),根据自己的 ...

  5. 【PCL自学:Segmentation3】基于PCL的点云分割:区域增长分割

    基于PCL的点云区域增长分割 一.什么是区域增长分割 二.区域增长分割原理剖析 三.区域增长分割示例代码 一.什么是区域增长分割   在本文中,我们将学习如何使用pcl:: regiongrow类中实 ...

  6. 【PCL自学:Filtering】PCL中的各类滤波器介绍与使用 (持续更新)

    PCL_filter模块中各类滤波器目录 一.直通滤波器(PassThrough):用于阈值滤除 1.直通滤波器介绍 2.示例代码 二.体素滤波器(VoxelGrid filter):用于下采样 1. ...

  7. PCL的PNG文件和计算点云重心

    PCL提供节约一点云的值为一个PNG图像文件的可能方案.显然,这只能用有序的点云来完成,因为生成的图像的行和列将与点云的对应完全一致.例如,如果你从一个传感器Kinect或Xtion的点云,你可以用这 ...

  8. PCL点云处理之点云质心的三种计算方法(七十六)

    PCL点云处理之点云质心的三种计算方法(七十六) 一.质心? 二.算法实验 1.代码 2.效果 一.质心? 就计算某块点云坐标均值,可以调库,也可以自己算,easy 二.算法实验 1.代码 代码如下( ...

  9. 三维重建PCL:点云单侧面正射投影

    终于把点云单侧面投影正射投影的代码写完了,为一个阶段,主要使用平面插值方法,且只以XOY平面作为的正射投影面.有些凑合的地方,待改进. 方法思路:使用Mesh模型,对每一个表面进行表面重建.借助Ope ...

最新文章

  1. 网曝某互联网大厂给员工电脑安装插件,基本等于全程监控!网友:就是监控你们划水!...
  2. mysql 日志 超过 m,linux 下查找大日志文件,比如大于500M的文件
  3. LeetCode--75.颜色分类(三路快排,计数排序)
  4. linux中根据进程的PID值来查找执行文件的及其路径
  5. umask设置导致的weblogic中的应用上传的文件没有权限打开
  6. c++两个文档匹配数据_MongoDB 数据库的命名、设计规范
  7. iOS ViewController利用代理页面传值
  8. leetcode - Best Time to Buy and Sell Stock Ⅱ
  9. 【路径规划】基于matlab无线充电车辆路径和速度预测【含Matlab源码 1473期】
  10. 数据挖掘概念与技术(原书第三版)范明 孟小峰译-----第二章课后习题答案
  11. 小米浏览器导出html,小米浏览器离线视频如何导出 小米浏览器离线视频导出教程...
  12. SpringAOP的实现原理
  13. android 悬浮按钮点击展开动画,android仿微信浮窗的自动贴边可展开悬浮按钮-博客...
  14. android手机如何截屏,安卓手机怎么截屏(华为手机的几种截图方法)
  15. C++ 使用Poco库实现日志操作
  16. Choosing Teams
  17. 0x80073712_win10系统-更新失败提示“0x80073712”如何解决?
  18. 猛兽之地服务器维护,猛兽之地Roguelands全材料获取途径详解
  19. 微信小程序中 iconfont 图标的使用(包括彩色图标)
  20. 个人赛C 柠檬树2--树链剖分+维护最值出现次数/LCA

热门文章

  1. Notepad++ 配置java编译环境
  2. SVN篇:Shell脚本实现SVN启动,停止,重启
  3. Ubuntu中使用freeradius配置RADIUS,并在RADIUS中配置LDAP 并实现AP认证
  4. 戴尔台式机安装win 7系统
  5. 力扣题目——429. N 叉树的层序遍历
  6. 【Kafka】Kafka安装部署
  7. 【Hive】多字符分隔
  8. Intellij IDEA 通过数据库表逆向生成带注释的实体类文件超级详细步骤,附详细解决方案
  9. Intellij IDEA 安装插件 报 ‘plugin xxxx is incompatible‘ 解决方案
  10. OpenCV imread读取图片,imshow展示图片,出现cv:Exception at memory location异常