同步更新于github page

文章目录

  • Guided Filter点云降噪
  • Results
  • Notes
  • Code
  • References

Guided Filter点云降噪

Guided Filter一般用来对2D图像进行降噪等处理,实际上,稍作修改后可以对3D点云进行降噪。

从Guided Filter的基本假设出发,可以推导出针对3D数据的处理方法。这里仅考虑引导数据是点云本身的情况。

首先,根据局部线性假设,有

qi=Akpi+bkq_i=A_kp_i+b_k qi​=Ak​pi​+bk​

其中qiq_iqi​是滤波后输出的三维点,pip_ipi​是当前需要滤波的点(即算法的输入),AkA_kAk​是一个3x3矩阵,bkb_kbk​是3x1向量。

我们希望这个局部线性模型,在pip_ipi​的领域内有最小的重建误差,即

argmin⁡Ak,bk∑j∈N(i)(∥Akpj+bk−pj∥2+ϵ∥Ak∥2)\text{arg}\min_{A_k, b_k}\sum_{j\in N(i)}(\Vert A_kp_j+b_k - p_j\Vert^2+\epsilon\Vert A_k\Vert^2) argAk​,bk​min​j∈N(i)∑​(∥Ak​pj​+bk​−pj​∥2+ϵ∥Ak​∥2)

用上式分别对AkA_kAk​和bkb_kbk​求导,并令导数等于0,可得

Ak(∑j∈N(i)pjpjT+nϵI)+bk∑j∈N(i)pjT−∑j∈N(i)pipiT=0bk=1n∑j∈N(i)pj−Ak1n∑j∈N(i)pj=μi−Akμi\begin{aligned} &A_k(\sum_{j\in N(i)}p_jp_j^T+n\epsilon I)+b_k\sum_{j\in N(i)}p_j^T-\sum_{j\in N(i)}p_ip_i^T=0 \\ &b_k=\frac{1}{n}\sum_{j\in N(i)}p_j-A_k\frac{1}{n}\sum_{j\in N(i)}p_j=\mu_i-A_k\mu_i \end{aligned} ​Ak​(j∈N(i)∑​pj​pjT​+nϵI)+bk​j∈N(i)∑​pjT​−j∈N(i)∑​pi​piT​=0bk​=n1​j∈N(i)∑​pj​−Ak​n1​j∈N(i)∑​pj​=μi​−Ak​μi​​

其中nnn是pip_ipi​的领域N(i)N(i)N(i)中的点数(包括pip_ipi​自己),μi\mu_iμi​是N(i)N(i)N(i)中所有点的平均,将bkb_kbk​带入第一个等式中,且等式两边同时除以nnn,有

Ak(1n∑j∈N(i)pjpjT−μiμiT+ϵI)=1n∑j∈N(i)pjpjT−μiμiTA_k(\frac{1}{n}\sum_{j\in N(i)}p_jp_j^T-\mu_i\mu_i^T+\epsilon I) = \frac{1}{n}\sum_{j\in N(i)}p_jp_j^T-\mu_i\mu_i^T Ak​(n1​j∈N(i)∑​pj​pjT​−μi​μiT​+ϵI)=n1​j∈N(i)∑​pj​pjT​−μi​μiT​

注意到

1n∑j∈N(i)pjpjT−μiμiT=Σi\frac{1}{n}\sum_{j\in N(i)}p_jp_j^T-\mu_i\mu_i^T=\Sigma_i n1​j∈N(i)∑​pj​pjT​−μi​μiT​=Σi​

即领域N(i)N(i)N(i)中所有点的协方差矩阵,所以最终有

Ak=Σi(Σi+ϵI)−1bk=μi−Akμi\begin{aligned} A_k&=\Sigma_i(\Sigma_i+\epsilon I)^{-1} \\ b_k&=\mu_i-A_k\mu_i \end{aligned} Ak​bk​​=Σi​(Σi​+ϵI)−1=μi​−Ak​μi​​

于是针对点云的Guided Filter算法,可概况为

  1. 计算点云中某一个点pip_ipi​的领域N(i)N(i)N(i)
  2. 求N(i)N(i)N(i)中所有点的均值μi\mu_iμi​和协方差Σi\Sigma_iΣi​
  3. 根据上面的公式计算AkA_kAk​和bkb_kbk​
  4. qi=Akpi+bkq_i=A_kp_i+b_kqi​=Ak​pi​+bk​,输出qiq_iqi​作为对点pip_ipi​的滤波结果

上面的算法实际上对Guided Filter做了一些简化,原本的Guided Filter需要得到所有包含pip_ipi​的领域对应的AkA_kAk​和bkb_kbk​,并对这些Ak,bkA_k,b_kAk​,bk​求平均,再输出qi=Aˉkpi+bˉkq_i=\bar A_kp_i+\bar b_kqi​=Aˉk​pi​+bˉk​。

三维情况的Guided Filter依然保持了二维情况的优点,即对边缘或者尖锐形状的地方有较好的保护作用。平滑作用的强弱可以通过调节领域搜索时的半径rrr和ϵ\epsilonϵ来改变。

其实,双边滤波(Bilateral Filter)也能用于3D点云的降噪,而Guided Filter相对于双边滤波在三维情况下的最大优势,在于不用估计点云中每个点的法线方向。

Results

输入的带有噪声的点云:

经过两轮Guided Filter滤波后的点云:

Notes

  1. 对同一个点云进行多轮滤波(一般2轮足矣)可以大大提高降噪效果,有点类似于优化中的重复线性化思想。但过多的轮数可能造成滤波后的点云分布不均,由于计算均值的关系,每一轮滤波都会放大原来点云的非均匀性。

Code

Python源码可见github.

References

  1. Guided Image Filtering

Guided Filter对三维点云降噪相关推荐

  1. 将三维点云投影到XOZ面上

                                       如图左边是原始的三维点云pcd格式,右边是投影到XOZ面上的数据,Y为0. #include <iostream> # ...

  2. 三维点云的深度学习研究综述

    作者丨aaa 来源丨https://zhuanlan.zhihu.com/p/455210291 编辑丨3D视觉工坊 摘要 点云学习由于在计算机视觉.自动驾驶.机器人等领域的广泛应用,近年来受到越来越 ...

  3. 【OpenCV 例程200篇】61. 导向滤波(Guided filter)

    [OpenCV 例程200篇]61. 导向滤波(Guided filter) 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续 ...

  4. 三维点云学习(1)下-点云体素降采样

    三维点云学习(1)下 点云体素降采样(Voxel Filter Downsampling) 代码参考网址秦乐乐CSDN博客 理论参考知乎博主:WALL-E 1.方法 Centroid 均值采样 Ran ...

  5. 课程笔记-三维点云处理01 ——Introduction and Basic Algorithms

    课程笔记-三维点云处理01 --Introduction and Basic Algorithms 本系列笔记是对深蓝学院所开设的课程:<三维点云处理>的笔记 课程每周更新,我也会努力将每 ...

  6. 【仓库物资识别】二、将三维点云转换成二维图像

    实习第一个任务其中的一个小步骤是将三维点云转换成二维图像,今天刚好复习PCL的点云滤波部分,发现了一个具有类似功能的平面模型投影滤波--ModelCoefficients 平面参数模型的形式是:ax+ ...

  7. TPAMI三维点云深度学习技术综述

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨单博 来源丨 笑傲算法江湖 点击进入->3D视觉工坊学习交流群 国防科大 IEEE TPA ...

  8. 三维点云学习(9)5-实现RANSAC Registration配准

    三维点云学习(9)5-实现RANSAC Registration配准 参考博客: 机器视觉之 ICP算法和RANSAC算法 三维点云配准 ICP点云配准原理及优化 本章因个人能力有限,大部分代码摘自g ...

  9. 三维点云数据处理软件供技术原理说明_基于三维点云处理技术的工件识别和匹配...

    1. 引言 目前,随着自动化程度的提高,机器人导航.工业零件检测及抓取等众多领域对计算机视觉系统的要求越来越高 [1],基于二维图像的物体识别已经无法满足日常作业的需求.而由于三维扫描技术的发展,结构 ...

最新文章

  1. matlab Lasso回归
  2. numpy insert
  3. Spring-AOP 流程切面
  4. 2022年全球及中国固态电解质(SSE)行业应用现状与十四五投资潜力分析报告
  5. python watchdog 同时检测到多个事件_python中watchdog文件监控与检测上传功能
  6. MySQL设置数据库及表的字符集
  7. Python List 列表list()方法分享
  8. 两个同时comet matlab,Matlab讲义 - 图文
  9. 移除指定 global using 命名空间
  10. Linux C----创建静态库
  11. 给,你要的Go学习路线图来啦
  12. vue路由配置src/router/index.js
  13. seo模拟点击软件_网站外链在SEO优化过程中不可或缺 - 360排名点击软件
  14. 蔚来es6_国产Model Y订单挤爆官网,蔚来ES 6惨遭大量退订?
  15. sql常用优化小知识
  16. 【人脸识别】基于matlab GUI LBP人脸识别【含Matlab源码 1282期】
  17. 手机定位导航不准确?做到这几点就好了!
  18. 怎样把c语言软件卸载干净,怎么把一个软件卸载干净_小编教你彻底卸载软件的方法-系统城...
  19. php enc28j60,uip0.9+ENC28J60 缓存的读写发送
  20. 如何写出完美的复试简历?没有科研竞赛经历怎么办?老师喜欢什么样的学生?跨考生?//2021-2-5

热门文章

  1. Linux各种发行版本概述(Redhat系 | Debian系)
  2. 上海交通大学船舶海洋与建筑工程学院谢彬Numerical TESTs for PDEs解答5.2.2
  3. (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  4. Linux优化大量文件读写,[Linux] 使用noatime属性优化文件系统读取性能
  5. tcl电视解除第三方限制终极方法 实测有效
  6. Python 爬虫进阶必备 | 关于某免费 IP 发布平台网页加密参数逻辑分析
  7. 网络OSI七层模型详解(物理层、数据链路层、网络层、传输层.....应用层协议与硬件)
  8. 音乐学习能够帮助孩子们注意力更集中吗?
  9. Python每日一题 - 7 - 求某一天是这一年的第几天
  10. thinkphp3.2对接短信验证码平台代码