图像滤波【一】:从高斯滤波到引导滤波
前言:最近在做一个图像的作业, 要求python实现双边滤波和引导双边滤波。
可以使用opencv,numpy。不能用opecv增强库(ximageproc之类的就用不了啦),
这里记录一下学习心得。主要是直觉上地介绍各个滤波器,后面有空再更代码细节。
ps. 查资料过程中,最无法理解的一个概念是都说双边滤波的弊端:梯度反转 (gradient reveral ) 。但是找了很多文章和问答都没看到解释清楚的答案,最后还是无奈找到何凯文大神的会议PPT,似乎看懂了一点。后面会介绍。
图像滤波系列
- 高斯滤波 Guassion Filter
- 图像滤波器/卷积核
- 互相关和卷积名词误用
- 高斯函数
- 缺点
- 双边滤波 Bilateral Filter
- 空间高斯分布和颜色高斯分布
- 联合双边滤波 Joint Bilateral Filter
- 引导滤波 Guidance Filter
- 解决梯度反转问题
高斯滤波 Guassion Filter
高斯滤波,涉及两个概念:图像滤波 + 高斯函数。
图像滤波器/卷积核
参考链接:https://spatial-lang.org/conv
correlation vs convolution
滤波操作:
蓝色格子 - 原图,虚线格子 - padding, 绿色格子 - 结果图
互相关和卷积名词误用
互相关(cross-correlation) 和 卷积(convolution),这俩概念其实最早是用在信号处理的,处理一维信号。图像是二维的,也是一维信号的延伸。
图像滤波: “卷积核” 对图像执行“卷积”操作。从而得到想要的效果:平滑,锐化,去噪等等。
为什么给“卷积”打上引号呢,现在的图像滤波算法对卷积核的定义其实是“correlation(相关)” 而不是“convolution(卷积)” 。
- Correlation :
过滤器(kernel)在图像上移动并计算每个位置的乘积总和的过程。 - Convolution:
先将过滤器翻转180度,然后执行Correlation。
这两个操作区别只在于核是否先翻转自己。那么它们之间到底有什么不同(物理意义)。
先一句话总结:在单位像素下,互相关(correlation) 之后只能得到一个 kernel 翻转副本,而卷积(convolution) 能保留 kernel 的原始副本。
看下面两张图:
(a)和 w 互相关得到的是滤波器 w 的 180度翻转(e)
先翻转 w,之后correlation,最终得到了和 w 一样的值(h)。:
图源 correlation vs convolution
至于为什么大家混淆了这两者之间的概念,却也习以为常,我个人认为是因为“问题不大”,卷积核翻转对称的情况很多,比如下面
从左至右:中值滤波,边缘滤波,边缘滤波,图像锐化
图源: slides from CSCI5210 CS CUHK Chi-Wing FU,Philip
卷积在神经网络里面用的也非常多,但其实都是correlation。传统的图像处理需要人工选择滤波器,CNN则是全靠机器自己【找出】适合的卷积核,训练过程中只需要指定核的大小,所以先翻转再相关,等于是脱了裤子放屁。
高斯函数
高斯滤波: 卷积核换成高斯分布离散采样后的值
三维空间,看起来像一座山,高斯核的权重包含的是「空间信息」。意味着离中心点越远的像素点权重越低。
图源: slides from CSCI5210 CS CUHK Chi-Wing FU,Philip
缺点
高斯滤波能起到很好的平滑效果,但是有一个严重的缺点,它在滤波时会把图像的所有点,包括噪点(需要去除)、边缘(需要保留),一视同仁。它关心的只有「空间信息」。
图源: slides from CSCI5210 CS CUHK Chi-Wing FU,Philip
双边滤波 Bilateral Filter
为了解决高斯滤波导致滤波后图像边缘模糊的问题。
双边滤波诞生了。
双边滤波除了关心空间信息,还关心【像素差】,想象一下,如果图像存在边缘(edge),那么是否说明在边缘的两个方向,存在像素的【梯度变化】?
如下图:
卷积核不再是统一的【空间】高斯分布,而是在与中心点像素值接近的地方接近于【空间】高斯分布,在与中心点像素差较大的地方接近于【颜色】高斯分布。
空间高斯分布和颜色高斯分布
对比高斯滤波
双边滤波增加了一项【颜色高斯】和一项【权重】
联合双边滤波 Joint Bilateral Filter
联合双边滤波最早是为了解决「具有闪光和无闪光图像对的数码摄影」问题
论文:【Digital Photography with Flash and No-Flash Image Pairs】
提出问题:开了闪光灯的照片会失去细节(曝光过渡);不开闪光灯会有很多噪点:
图源论文
作者结合两张图片的优点,提出了联合双边滤波:
引导滤波 Guidance Filter
有空再更…
论文: https://arxiv.org/pdf/1801.06928.pdf
PPT:http://kaiminghe.com/eccv10/eccv10ppt.pdf先放张何恺明大神的图
引导滤波的贡献:
- 消除了梯度翻转
- 让双边滤波处理速度变成了O(1)却不需要近似处理(图片不会失真)
解决梯度反转问题
图解
我一直不理解,到底为什么都说双边滤波有梯度翻转(gradient reversal)的问题?因为在我看来,滤波器再怎么滤,也不会让边缘的像素出现峰值。我的脑子想象不到…
后来才明白其实不是滤波后的图像出现梯度翻转。
而是在利用双边滤波进行图片【细节增强】(Detail Enhancement) 的时候发生的!【原图】 -> 【双边滤波】 -> 【原图 - 双边滤波 = 细节】 -> 【原图 + 细节 * n】 = 【带有梯度反转的增强图】
这张图是当时论文会议的PPT, 非常形象,第一行红色曲线为滤波后;白色为原图。(想象成图片的横切面,高度为图像的亮度/像素值)
图像滤波【一】:从高斯滤波到引导滤波相关推荐
- 传统图像去噪方法(二)之引导滤波
各向同性滤波 我们知道对于滤波器而言,在均值滤波中W时是1/n,n是w中所有像素个数.在高斯平滑中,W服从二维的高斯分布. 但是无论是均值滤波还是高斯滤波,他们都有一个共同的弱点,它们都属于各向同性滤 ...
- OPENCV 实现引导滤波
https://blog.csdn.net/sinat_36264666/article/details/77990790 上面链接中的大佬实现了引导滤波,但是该代码如果用灰度图会报错,下面代码是大佬 ...
- opencv方框内图像保存_opencv 图像滤波(均值,方框,高斯,中值)
为什么要使用滤波 消除图像中的噪声成分叫作图像的平滑化或滤波操作.信号或图像的能量大部分集中在幅度谱的低频和中频段是很常见的,而在较高频段,感兴趣的信息经常被噪声淹没.因此一个能降低高频成分幅度的滤波 ...
- 卷积滤波 英文_图像的卷积(滤波)运算(二)——高斯滤波
1.高斯滤波原理 根据数学知识,一维高斯函数可以描述为: 在图像处理中,选定X方向上长度为3的窗口,令δ=1,中心坐标为1,由上述公式,其卷积核(Xa,X,Xb)可以如下计算: Xa = exp(-1 ...
- 图像的频率域高斯低通滤波
(1)自定义一个图像的频率域高斯低通滤波处理函数,要求该函数的输入参数包括处理前的图像ima和距频率矩形中心的距离D0(截止频率),输出参数为滤波处理后的图像im2. 自定义的高斯低通滤波器: %ph ...
- 利用联合双边滤波或引导滤波进行升采样(Upsampling)技术提高一些耗时算法的速度。...
这十年来,在图像处理领域提出了很多新的图像分析和处理方法,包括是自动的以及一些需要有人工参与的,典型的比如stereo depth computations.image colorization.to ...
- 引导滤波GuidedFilter
何恺明读博士提出基于暗通道采用引导滤波去雾算法获CVPR2009最佳论文,现在应用面很广.很广:能够克服双边滤波的梯度翻转现象,在滤波后图像的细节上更优,主要美颜算法差不多都用这个. 先贴伪代码: 实 ...
- 基于FPGA的引导滤波并行加速实现
前面一篇文章中,已经详细的分析了引导滤波的理论,公式的推导,以及和双边滤波的对比分析,即在边缘的处理上双边滤波会引起人为的黑/白边.我们已经知道何博士引导滤波的优秀之处,那么本篇文章,我带你推演,如何 ...
- 引导滤波算法理论及公式的推导
高斯滤波考虑了像素间的距离关系,会模糊边缘: 双边滤波同时考虑了像素间的距离关系以及相似度关系,对于边缘有一定的保护(边缘同侧相速度高).引导滤波同样是保边滤波,由于直接判断梯度,细节的保护上比双边滤 ...
最新文章
- mysql合并到区间_合并区间
- InputStream 、 InputStreamReader 、 BufferedReader区别
- 读书笔记《单核工作法》_3原理2,3
- Knozen:新型职场社交评论匿名应用,已获多家风投投资
- mysql 21天_把整个Mysql拆分成21天,轻松掌握,搞定(中)
- 比较好的文章地址收集
- 13.2 处理静态资源【从零开始学Spring Boot】
- java maven 配置环境变量_maven 环境变量的配置详解
- wamp mysql使用方法_wamp使用方法【总】
- vvc代码阅读 encodeCtus()
- Mysql第二章习题
- ENSP中ACL,NAT配置
- 女友老爸开了中介公司让我抽空搞开发个租房App,像贝壳一样就行.....
- Springcloud入门第二篇
- 电脑文件如何传到云服务器上,电脑文件如何传到云服务器上
- ts没有与此调用匹配的重载
- Shader各种效果
- 四个小技巧轻松解决VR晕动症
- PSP愤怒的小鸟 游戏ISO文件和完美通关全三星存档和金手指
- WebLogic 12c 配置 https