PCL点云滤波模块,有一种方法叫做参数化模型投影点云滤波,意思就是创建一个参数化模型(可以是平面,球体,椎体等),然后将点云投影到上面,比如说如果投影到平面上,那么就实现了三维降到二维,滤掉了一个维度,也勉强算是滤波吧。
掌握了这种方法感觉一下子掌握了宇宙中最强大的能力之一:降维打击!
以后看哪个模型不顺眼就拍扁它,哈哈哈~
进入正题,虽然感觉牛逼轰轰但是原理很简单,比如我把点云的z方向坐标全都设置为0,那么就实现了向X-Y平面的投影

    pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients());coefficients->values.resize(4);coefficients->values[0] = 0;coefficients->values[1] = 0;coefficients->values[2] = 1;coefficients->values[3] = 0;
proj.setModelType(pcl::SACMODEL_PLANE);   //创建投影类型,投影到平面上

这里可以设置投影类型,除了平面还可以设置锥体,球体,柱体等(SACMODEL_CYLINDER,SACMODEL_SPHERE,SACMODEL_CYLINDER,SACMODEL_CONE等),参见采样一致性参数化模型添加链接描述
更改了投影模型之后,每个类型的投影参数都不一样,有的是四个参数比如平面和球体,有的是7个参数,比如柱体和锥体。
如果用SACMODEL_CONE,那么可以设置参数如下:

    pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients());coefficients->values.resize(7);coefficients->values[0] = 0.3;coefficients->values[1] = 0.3;coefficients->values[2] = 0;coefficients->values[3] = 0;coefficients->values[4] = 0.5;coefficients->values[5] = 0;coefficients->values[6] = 5;



这样我们就成功拍扁了前女友(假装这是前女友)~

用SACMODEL_CONE模型甚至可以拍得不成人样~

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h>
#include <pcl/ModelCoefficients.h>          //导入ModelCoefficients(模型系数)结构
#include <pcl/filters/project_inliers.h>        //导入ProjectInliers滤波器
#include <pcl/visualization/cloud_viewer.h>int main(int argc, char** argv)
{pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>);pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_projected(new pcl::PointCloud<pcl::PointXYZRGB>);if (pcl::io::loadPLYFile("C:\\Users\\fhlhc\\Desktop\\p.ply", *cloud) == -1)return (-1);//输出投影前点云坐标//std::cerr << "Cloud before projection: " << std::endl;//for (std::size_t i = 0; i < cloud->points.size(); ++i)//    std::cerr << "    " << cloud->points[i].x << " "//    << cloud->points[i].y << " "//    << cloud->points[i].z << std::endl;// 我们使用一个平面模型ax + by + cz + d = 0,其中a,b,c,d分别对应下面四个通道,对值为1的维度进行降维打击,或者换句话说,假如a = b = d = 0,c = 1,则投影到XY平面//或者可以这么理解,画个坐标系把上面方程画出来,假如a = b =1,c = d=0,方程为x=-y,意味着投影在x=-y的平面上。pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients());coefficients->values.resize(4);coefficients->values[0] = 0;coefficients->values[1] = 1;coefficients->values[2] = 0;coefficients->values[3] = 0;// Create the filtering objectpcl::ProjectInliers<pcl::PointXYZRGB> proj;proj.setModelType(pcl::SACMODEL_PLANE);   //创建投影类型,投影到平面上proj.setInputCloud(cloud);proj.setModelCoefficients(coefficients);proj.filter(*cloud_projected);//输出投影后点云坐标//std::cerr << "Cloud after projection: " << std::endl;//for (std::size_t i = 0; i < cloud_projected->points.size(); ++i)//    std::cerr << "    " << cloud_projected->points[i].x << " "//    << cloud_projected->points[i].y << " "//    << cloud_projected->points[i].z << std::endl;//双视口显示boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("test Viewer"));viewer->initCameraParameters();int v1(0), v2(0);//原始点云窗口viewer->createViewPort(0.0, 0.0, 0.5, 1.0, v1);viewer->setBackgroundColor(0, 0, 0, v1);viewer->addText("original", 10, 10, "v1 text", v1);viewer->addPointCloud<pcl::PointXYZRGB>(cloud, "sample cloud1", v1);viewer->addCoordinateSystem(1.0);viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "sample cloud1");//滤波窗口viewer->createViewPort(0.5, 0.0, 1.0, 1.0, v2);viewer->setBackgroundColor(0, 0, 0, v2);viewer->addText("cloud_projected", 10, 10, "v2 text", v2);viewer->addPointCloud<pcl::PointXYZRGB>(cloud_projected, "sample cloud2", v2);viewer->addCoordinateSystem(1.0);viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "sample cloud2");while (!viewer->wasStopped()){viewer->spinOnce(100);  //刷新boost::this_thread::sleep(boost::posix_time::microseconds(100000));}system("pause");return 0;
}

PCL滤波--参数化模型投影点云---三维点云投影到二维平面相关推荐

  1. 制造业信息化领域,采用迈特 MIt PDM/PLM3.8作为集成支撑平台 与UG、CATIA、PRO/E、SOLIDEDGE、SOLIDWORKS、MDT等三维CAD软件和常用二维CAD软件集成

    <script></script> 标签:中国pdm 重汽集团 汽车pdm 信息化管理 mit-pdm 图文档管理 it    Development is the last ...

  2. 摄像机模型和双目建模三维点云的理解

    1.世界坐标系一点P(Xw,Yw,Zw)转换到摄像机坐标系为(Xc,Yc,Zc) 其中R表示旋转矩阵,T表示平移矩阵 2.摄像机坐标系点(Xc,Yc,Zc)映射到图像坐标系的p(x,y)转换关系用到了 ...

  3. 二维ising模型概率c语言_盘点近几年在二维材料中发现的铁磁性

    [引语] 二维材料:整理二维材料方面知识,让大家了解的更全面. 材料人现在已经推出了很多优质的专栏文章,所涉及领域也正在慢慢完善.有很多小伙伴已经加入了我们,但是还满足不了我们的需求,期待更多的优秀作 ...

  4. 计算机绘图二维三维实用教程,计算机绘图二维三维实用教程

    上篇 AutoCAD 2007 第1章 计算机绘图概述 1.1 计算机绘图发展简史 1.2 计算机绘图的应用及发展趋势 1.2.1 计算机绘图的应用 1.2.2 计算机绘图及CAD技术的发展趋势简介 ...

  5. 计算机绘图二维三维实用教程,计算机绘图二维三维实用教程教学课件作者王建勇第二章.ppt...

    文档介绍: 第2章AutoCAD2007绘图基础§2.1AutoCAD2007的启动§2.2AutoCAD2007工作界面§2.3系统的配置§2.4绘图环境的设置§2.5图形文件的管理§2.6命令的输 ...

  6. 微信小程序利用云函数获取小程序码(二维码) 将buffer流转换为图片

    最近在做毕设,有一个获取小程序码绘制分享海报的需求,因为需要小程序码的数量较多的业务场景,所以只能采用后端生成返回给前端调用或者云开发调用. 生成小程序码的两种方式 HTTPS调用 需要后端生成返回给 ...

  7. js 三维数组转对象数组 二维数组转对象数组

    1. 三维数组转对象数组 输出: 代码如下: let dataArr = [[[109.654541015625, 29.34387539941801],[110.467529296875, 59.3 ...

  8. C4D三维背景、镜头+Animate二维人物的动画制作流程分享

    故事概述:兔子先生X是大名鼎鼎的魔术师.一天深夜,他结束了为权贵们的表演后遇见 了濒死的小兔子本不想多管的X先生被小兔子叫住.小兔子请求他变一个草莓蛋糕,忆起儿时贫困光景的X先生深受触动,答应了小兔子 ...

  9. creo三维生成二维图_proe5.0原创工程图教程(1)-proe5.0三维图(3D)怎么转换二维图(2D)初级版...

    proe5.0三维模型(3D)怎么转换二维模型(2D)后可以转换成pdf和dwg,这些优势是其他软件无可比拟的.因为proe3d和2D是关联的,是参数化的.打个简单的比方,你3D的孔发生了变化,2d就 ...

最新文章

  1. 为什么不建议在 MySQL 中使用 UTF-8?
  2. python项目实例初学者-python 初学者必备14张思维导图
  3. 【数据结构练习习题】java实现版(一)
  4. 虚拟化技术--服务器虚拟化
  5. iBiology |除了B站,这还有个专业的生科科普网站
  6. 曾国藩36字诀,改变你的人生
  7. JavaScript 数据类型梳理
  8. 域控服务器降级失败,降级域控制器时出错 - Windows Server | Microsoft Docs
  9. 基于ARM处理器的TSC2046触摸屏控制器的应用
  10. linux下upupw搭建教程,UPUPW全能空间搭建----easypanel面板
  11. 关于苹果公证(Apple Notarizition)机制的一些总结
  12. 电脑桌面的word文件丢失了怎么找回?7个解决方法!
  13. 技术职称论文查重用什么论文查重软件?
  14. html弹出式登录窗口(DIV悬浮窗口)实现
  15. 斐波那契序列递归方法_斐波那契和卢卡斯序列
  16. 阿里云服务器优惠活动中的突发性/共享型/计算型/通用型实例怎么选
  17. java垃圾回收机制分类整理
  18. 【Mac】让Safari 书签显示网站 Logo
  19. c语言动态烟花小程序代码,如何用c语言编写动态烟花
  20. idea查看源码的方式

热门文章

  1. python决策树预测模型_Python决策树模型做 Titanic数据集预测并可视化(一)
  2. 虾皮入驻需要营业执照吗?申请店铺资料以及细节流程,小白收藏
  3. Win系统 - 网速慢,网络卡,怎么办?
  4. win10跑oracle稳定,win10怎么测网络稳定
  5. matlabB样条轨迹规划,多目标优化,7次非均匀B样条轨迹规划
  6. S3C2440 Linux下的I2C驱动以及I2C体系下对EEPROM进行读写操作。
  7. word中用VBA实现所有表格标题行重复
  8. 案例分析作业-笔记工具
  9. 销售指标在下降该怎么分析?手把手教你多种方法和思路分析电商案例
  10. html按钮button怎么加超链接