【数字图像处理】Bilateral Filters

https://www.yuque.com/lart/idh721/bf

简单介绍

双边滤波是一种非线性的可以模糊图像并且能保留一定的边缘信息的技术。

它能够将图像分解成不同的尺度,而不会在修改后产生光晕(haloes),这使得它在计算摄影应用中无处不在(ubiquitous),例如调色,风格转换,重调光照,去噪(tone mapping, style transfer, relighting, and denoising)。

双边滤波的成功主要有以下一些:

  • 它的公式很简单:每个像素被它的邻居的加权平均值代替。这方面很重要,因为很容易获得关于其行为的直观理解,从而适应特定于应用程序的需求并实现它。
  • 它只依赖于两个参数,这两个参数表示要保留的特征的大小和对比度。
  • 它可以以非迭代的方式使用。这使得参数很容易设置,因为它们的影响不是通过多次迭代累积的。
  • 由于高效的数值策略,以及,甚至在图形硬件可用的情况下,它可以以交互速度在大的图像上进行计算。

具体表达

双边滤波和一般的高斯滤波(卷积)有着密切的关联。

Gaussian Convolution

  • \(I_p\)表示图像在像素位置p上的值,对于灰度图,则表示单个数值
  • \(F[I]\)表示图像\(I\)经过滤波器\(F\)处理后的输出
  • \(S\)表示所有可能的图像位置集合,将其命名为spatial domain
  • \(R\)表示所有可能的像素值集合,将其命名为range domain
  • \(\sum_{p \in S}\)表示对于所有的使用p索引的图像像素进行加和
  • \(| \cdot |\)表示绝对值
  • \(|| \cdot ||\)表示L2范数,这里使用\(||p-q||\)表示对应于位置p和q的两个像素之间的欧氏距离
  • \(\sigma\)表示邻域范围

Bilateral Filtering

双边滤波以一种类似于高斯卷积的方法定义为邻近像素的加权平均。不同的是,双边滤波考虑了邻居的值的差异,在平滑的时候可以保留边缘信息。

双边滤波的关键想法在于,对于一个影响其他像素的像素,它应该不只出现在相近的位置,也应该有着相似的值

双边滤波的一个重要特征是权值相乘:如果任一权值接近于零,则不发生平滑作用。以大的空间高斯分布与小的范围高斯分布相结合的算法为例,尽管空间范围很大,但只能实现有限的平滑效果。范围权重会强制保留轮廓。

  • \(\sigma_s\)和\(\sigma_r\)表示对于图像\(I\)的滤波的量(也就是滤波器范围)
  • \(G_{\sigma_s}\)表示空间高斯加权,以降低远处像素的影响
  • \(G_{\sigma_r}\)表示范围高斯加权,以降低像素q在亮度值与像素p差异较大的时候,造成的影响

相关链接

最新文章

  1. CentOS7 查看IP、Gateway、DNS、Hostname
  2. XML文件(1)--使用DOM示例
  3. python学习笔记--基础概要
  4. 修复PHP在64位下序列化(serialize)的字符串在32位机器下反序列
  5. 禁止VMware虚拟机与Host的时间同步
  6. 【caffe】执行训练
  7. 关于sublime text2
  8. Webpack使用教程五(Babel)
  9. Java方法总结与源码解析(未完待续)
  10. Hadoop之Hive UDAF TopN函数实现
  11. 输入内容, 列出可选的项: QComboBox
  12. 《Linux命令行与shell脚本编程大全》 第十五章 学习笔记
  13. 快速入门github的方法
  14. 付款页面DEMO
  15. UNIX网络编程——TCP—经受时延与nagle算法、滑动窗口、拥塞窗口
  16. c#解决TCP“粘包”问题
  17. Codeforces 1079D Barcelonian Distance(计算几何)
  18. 访问器 & 修改器
  19. IP分组交付和转发
  20. nginx 实现mysql的负载均衡【转】

热门文章

  1. 零拷贝的原理及Java实现
  2. Spring MVC Theme(简单示例)
  3. thinkphp5.11 关于数据库连接的配置
  4. 【LuoguP4557】[JSOI2018]战争
  5. Acwing-100-IncDec序列(差分)
  6. qt5-帮助文档的说明
  7. Python3数据结构汇总
  8. 【shell&awk】对数据从右到左隔三位来一个.
  9. 32.把数组排成最小的数(python)
  10. JavaScript 的定时(Timing )事件——setTimeout()与setInterval()