1.点云的频率

  今天在阅读分割有关的文献时,惊喜的发现,点云和图像一样,有可能也存在频率的概念。但这个概念并未在文献中出现也未被使用,谨在本博文中滥用一下“高频”一词。点云表达的是三维空间中的一种信息,这种信息本身并没有一一对应的函数值。故点云本身并没有在讲诉一种变化的信号。但在抽象意义上,点云必然是在表达某种信号的,虽然没有明确的时间关系,但应该会存在某种空间关系(例如LiDar点云)。我们可以人为的指定点云空间中的一个点(例如Scan的重心或LiDar的“源”),基于此点来讨论点云在各个方向上所谓的频率。

  在传统的信号处理中,高频信号一般指信号变化快,低频信号一般指信号变化缓慢。在图像处理中,高低频的概念被引申至不同方向上图像灰度的变化,傅里叶变换可以用于提取图像的周期成分滤除布纹噪声。在点云处理中,定义:点云法线向量差为点云所表达的信号。换言之,如果某处点云曲率大,则点云表达的是一个变化的信号。如果点云曲率小,则其表达的是一个不变的信号。这和我们的直观感受也是相近的,地面曲率小,它表达的信息量也小;人的五官部分曲率大,其表达了整个Scan中最大的信息量。

2.基于点云频率的滤波方法

  虽然点云频率之前并没有被讨论,但使用频率信息的思想已经被广泛的应用在了各个方面,最著名的莫过于DoN算法。DoN算法被作者归类于点云分割算法中,但我认为并不准确,本质上DoN只是一种前处理,应该算是一种比较先进的点云滤波算法。分割本质上还是由欧式分割算法完成的。DoN 是 Difference of Normal 的简写。算法的目的是在去除点云低频滤波,低频信息(例如建筑物墙面,地面)往往会对分割产生干扰,高频信息(例如建筑物窗框,路面障碍锥)往往尺度上很小,直接采用 基于临近信息 的滤波器会将此类信息合并至墙面或路面中。所以DoN算法利用了多尺度空间的思想,算法如下:

  1. 在小尺度上计算点云法线1
  2. 在大尺度上计算点云法线2
  3. 法线1-法线2
  4. 滤去3中值较小的点
  5. 欧式分割

  显然,在小尺度上是可以对高频信息进行检测的,此算法可以很好的小尺度高频信息。其在大规模点云(如LiDar点云)中优势尤其明显。

3.PCL对该算法的实现

  算法运行过程可用图表示为:

  算法实现过程可表示为:

  // Create a search tree, use KDTreee for non-organized data.pcl::search::Search<PointXYZRGB>::Ptr tree;if (cloud->isOrganized ()){tree.reset (new pcl::search::OrganizedNeighbor<PointXYZRGB> ());}else{tree.reset (new pcl::search::KdTree<PointXYZRGB> (false));}// Set the input pointcloud for the search treetree->setInputCloud (cloud);//生成法线估计器(OMP是并行计算,忽略)pcl::NormalEstimationOMP<PointXYZRGB, PointNormal> ne;ne.setInputCloud (cloud);ne.setSearchMethod (tree);//设定法线方向(要做差,同向很重要)ne.setViewPoint (std::numeric_limits<float>::max (),    std::numeric_limits<float>::max (), std::numeric_limits<float>::max ());//计算小尺度法线pcl::PointCloud<PointNormal>::Ptr normals_large_scale (new pcl::PointCloud<PointNormal>);ne.setRadiusSearch (scale2);ne.compute (*normals_large_scale);//计算大尺度法线pcl::PointCloud<PointNormal>::Ptr normals_large_scale (new pcl::PointCloud<PointNormal>);ne.setRadiusSearch (scale2);ne.compute (*normals_large_scale);//生成DoN分割器pcl::DifferenceOfNormalsEstimation<PointXYZRGB, PointNormal, PointNormal> don;don.setInputCloud (cloud);don.setNormalScaleLarge (normals_large_scale);don.setNormalScaleSmall (normals_small_scale);//计算法线差PointCloud<PointNormal>::Ptr doncloud (new pcl::PointCloud<PointNormal>);copyPointCloud<PointXYZRGB, PointNormal>(*cloud, *doncloud);don.computeFeature (*doncloud);//生成滤波条件:把法线差和阈值比pcl::ConditionOr<PointNormal>::Ptr range_cond (new pcl::ConditionOr<PointNormal> ());range_cond->addComparison (pcl::FieldComparison<PointNormal>::ConstPtr (new pcl::FieldComparison<PointNormal> ("curvature", pcl::ComparisonOps::GT, threshold)));//生成条件滤波器,输入滤波条件和点云pcl::ConditionalRemoval<PointNormal> condrem (range_cond);condrem.setInputCloud (doncloud);//导出滤波结果pcl::PointCloud<PointNormal>::Ptr doncloud_filtered (new pcl::PointCloud<PointNormal>);condrem.filter (*doncloud_filtered);//欧式聚类~~~(略)

转载于:https://www.cnblogs.com/ironstark/p/5010771.html

PCL—低层次视觉—点云滤波(基于点云频率)相关推荐

  1. PCL—低层次视觉—点云分割(基于凹凸性)

    1.图像分割的两条思路 场景分割时机器视觉中的重要任务,尤其对家庭机器人而言,优秀的场景分割算法是实现复杂功能的基础.但是大家搞了几十年也还没搞定--不是我说的,是接下来要介绍的这篇论文说的.图像分割 ...

  2. 云重磅 | 没有硬件,苹果发布多款“云服务”;阿里云发布基于公共云的虚拟GPU服务;中国移动首发5G套餐...

    戳蓝字"CSDN云计算"关注我们哦! 嗨,大家好,重磅君带来的[云重磅]特别栏目,如期而至,每周二第一时间为大家带来重磅新闻.把握技术风向标,了解行业应用与实践,就交给我重磅君吧! ...

  3. 百度AI原生云实践: 基于容器云打造 AI 开发基础设施

    导读:众所周知,AI的发展离不开三大要素:数据.算法和算力. 算法.算力.数据三者相互影响,组成了AI技术发展突破的基础,也推动了人工智能在产业场景下的应用. 同时,不同场景与应用,对底层资源提出了更 ...

  4. python点云滤波_点云滤波去噪

    关于点云滤波去噪的方法 为什么进行点云滤波处理: (1) 点云数据密度不规则需要平滑 (2) 因为遮挡等问题造成离群点需要去除 (3) 大量数据需要下采样 (4) 噪声数据需要去除 1234 点云数据 ...

  5. docker个人容器云(基于阿里云)

    创建个人的docker镜像(目前阿里云是十个免费) 1.登陆阿里云 2.操作: 选择容器服务--->容器镜像服务---->镜像列表--->创建镜像仓库(先要完成Registry的配置 ...

  6. 【Java】使用Jconsole连接远程云服务器(基于华为云Centos7)

    先上一下最后的效果图,然后下面开始一步步的连接. 首先,打开你的JDK,然后进入如下目录,/jdk8/jre/lib/management 然后会发现如下的文件 当然jmxremote.passwor ...

  7. pointnet分割自己的点云数据_点云学习历史文章大汇总

    LaserNet:一种高效的自动驾驶概率三维目标探测器 从相机标定到SLAM,极简三维视觉六小时课程视频(附PPT) 计算机图形学遇上深度学习,为3D图像任务打造的深度学习利器TensorFlow G ...

  8. PCL—关键点检测(rangeImage)低层次点云处理

    博客转载自:http://www.cnblogs.com/ironstark/p/5046479.html 关键点又称为感兴趣的点,是低层次视觉通往高层次视觉的捷径,抑或是高层次感知对低层次处理手段的 ...

  9. CVPR2020:基于层次折叠的跳跃式注意网络点云完成

    CVPR2020:基于层次折叠的跳跃式注意网络点云完成 Point Cloud Completion by Skip-Attention Network With Hierarchical Foldi ...

最新文章

  1. ATS 5.3.0中按域名生成日志配置文件log_hosts.config解读
  2. php for循环可以变量关联数组,数组字符串变量之间的转换,数组元素的回调,for循环遍历关联数组...
  3. 计算机学院去微软的大牛的面试经验
  4. (转)使用json-lib 数据格式转换
  5. Grunt 入门指南5:项目脚手架
  6. spring boot2 整合(二)JPA(特别完整!)
  7. Alibaba Druid 源码阅读(四) 数据库连接池中连接获取探索
  8. Java vbnullstring_VB中Null、Empty、Nothing及vbNullString的区别
  9. 手机变为电脑的摄像头,使像素高清起来-使用DroidCam
  10. 产品经理如何写出一看就想约的简历
  11. Android手机上剪藏笔记到Obsidian
  12. CRM系统与呼叫中心系统对接
  13. translateY鼠标hover触发动(上下移动) - 代码案例篇
  14. 个人最喜爱产品分析:大众点评app
  15. Win11家庭版没有本地组策略编辑器怎么办?
  16. Spring bean配置单例或多例模式
  17. android系统定制教程,Android系统DIY修改 定制第三方ROM教程
  18. 《思维力:高效的系统思维》读书笔记05 - 快速提升你的沟通表达能力
  19. 主板常见故障的维修方法
  20. 【机器学习实战系列】读书笔记之DecisionTree(ID3算法)(三)

热门文章

  1. 业余长跑爱好者最后膝盖都怎样了?
  2. 今天tiktok小社群更新 第5个项目行业案例
  3. 5种成交话术,帮你多拿订单,挠到客户痒处,才有成交希望
  4. 直播将是所有企业必须做的
  5. 一种人是成功为了赚钱,一种人是赚钱为了成功
  6. 社区生鲜招团长,物业优势何以难施展?
  7. 数据线为什么不弄两头都是Typec接口的呢?
  8. 二叉树的层次遍历II
  9. JavaWeb项目中解决中文乱码方法
  10. 系统大小端的头文件定义