【数字图像处理】Bilateral Filters
【数字图像处理】Bilateral Filters
简单介绍
双边滤波是一种非线性的可以模糊图像并且能保留一定的边缘信息的技术。
它能够将图像分解成不同的尺度,而不会在修改后产生光晕(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差异较大的时候,造成的影响
相关链接
- Bilateral Filtering: Theory and Applications:http://people.csail.mit.edu/sparis/publi/2009/fntcgv/Paris_09_Bilateral_filtering.pdf
- A Gentle Introduction to Bilateral Filtering and its Applications:http://people.csail.mit.edu/sparis/bf_course/
【数字图像处理】Bilateral Filters的更多相关文章
- python数字图像处理(1):环境安装与配置
一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...
- 初始----python数字图像处理--:环境安装与配置
一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...
- 基于小波变换的数字图像处理(MATLAB源代码)
基于小波变换的数字图像处理(MATLAB源代码) clear all; close all; clc;M=256;%原图像长度N=64; %水印长度[filename1,pathname]=uiget ...
- 数字图像处理作业使用OpenCV - 使用笔记
数字图像处理作业的输入图像全部都是灰度图像,所以汇总一下自己遇到的问题答案. OCV的图像容器是Mat<typename>,可以用imread(filename)读取图像,filename ...
- python数字图像处理(17):边缘与轮廓
在前面的python数字图像处理(10):图像简单滤波 中,我们已经讲解了很多算子用来检测边缘,其中用得最多的canny算子边缘检测. 本篇我们讲解一些其它方法来检测轮廓. 1.查找轮廓(find_c ...
- 数字图像处理之sobel边缘检测
在前两部文章介绍了几种边缘检测算法,和位图的内存结构.如果对前两篇文章已经理解透彻 了,那么本文将带你进入数字图像处理的世界. 本文通过C代码实现基本的sobel边缘检测,包括8个方向和垂直方向: 代 ...
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part6
本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part6,辑录该书第281至第374页之代码,供有须要读者下载研究使用.代码运行结果请參见原书配图,建议下载代码前阅读下 ...
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part2
本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part2(P43~80),代码运行结果请參见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MA ...
- 《数字图像处理原理与实践(MATLAB文本)》书代码Part7
这篇文章是<数字图像处理原理与实践(MATLAB文本)>一本书的代码系列Part7(由于调整先前宣布订单,请读者注意分页程序,而不仅仅是基于标题数的一系列文章),第一本书特色186经225 ...
随机推荐
- HTTP缓存剖析
web浏览器会自动缓存访问过的页面,当访问同一个页面的请求时,浏览器不再从服务器中重新下载页面而是优先使用本地缓存中的页面 为什么要进行web缓存 从用户的角度来看web缓存加快了上网速度,当然这是用 ...
- HttpServlet容器响应Web客户请求流程?
1)Web客户向Servlet容器发出Http请求: 2)Servlet容器解析Web客户的Http请求: 3)Servlet容器创建一个HttpRequest对象,在这个对象中封装Http请求信息: ...
- Phaserjs V2的state状态解析及技巧
用phaserjs开发了好多游戏了,但是对phaser还是了解不深,只知道怎么去用,今天就特意花点时间研究下phaser的状态管理到底是怎么回事. 首先,new Phaser.Game,以下是Phas ...
- jquery keypress() 方法 语法
jquery keypress() 方法 语法 作用:keypress 事件与 keydown 事件类似.当按钮被按下时,会发生该事件.它发生在当前获得焦点的元素上.不过,与 keydown 事件不同 ...
- css grid 随笔
原文出自Arien的博客https://www.w3cplus.com/css3/line-base-placement-layout.html 首先定义一个网格 1.可以给父容器的display属性 ...
- Jmeter(五)关联之正则表达式提取器
我们在用Jmeter做接口或者性能测试时,经常会碰到第二个请求提交的的参数要从第一个请求返回的参数中获取,而这些参数值并不是固定的,是动态变化的,这种场景就要用到关联 Jmeter提供了一种叫做正则提 ...
- 分布式-信息方式-ActiveMQ的Destination高级特性3
虚拟destination用来创建逻辑destination,客户端可以通过它来生产和消费消息,它会把消息映射到物理destination. ActiveMQ支持2种方式: 1:虚拟主题(Virtua ...
- Error:Connection activation failed: No suitable device found for this connection
原文链接: https://blog.csdn.net/baiboya/article/details/80452822 ens33这个网卡一直无法激活,在网上找了半天,找到这个博主的文章,才解决,虽 ...
- ES6 字符串的扩展(待细读)
1.确定字符串中是否含有某个字符串 indexof(value,num):可返回某个指定的字符串值在字符串中首次出现的位置.ES5方法,num范围(0~length-1) includes(value ...
- JSP——指令(Directive)
指令是一种JSP句法元素,它告诉JSP转换器应该如何将某个JSP页面转换成Servlet. JSP 2.2中定义了几个指令:page.include.taglib.tag.attribute以及var ...