滤波总结

1.图像与滤波的理解

参考博客:http://www.ruanyifeng.com/blog/2017/12/image-and-wave-filters.html

一、为什么图像是波?

我们知道,图像由像素组成。下图是一张 400 x 400 的图片,一共包含了 16 万个像素点。

每个像素的颜色,可以用红、绿、蓝、透明度四个值描述,大小范围都是0 ~ 255,比如黑色是[0, 0, 0, 255],白色是[255, 255, 255, 255]。通过 Canvas API 就可以拿到这些值。

如果把每一行所有像素(上例是400个)的红、绿、蓝的值,依次画成三条曲线,就得到了下面的图形。

可以看到,每条曲线都在不停的上下波动。有些区域的波动比较小,有些区域突然出现了大幅波动(比如 54 和 324 这两点)。

对比一下图像就能发现,曲线波动较大的地方,也是图像出现突变的地方。

这说明波动与图像是紧密关联的。图像本质上就是各种色彩波的叠加。

二、频率

综上所述,图像就是色彩的波动:波动大,就是色彩急剧变化;波动小,就是色彩平滑过渡。因此,波的各种指标可以用来描述图像。

频率(frequency)是波动快慢的指标,单位时间内波动次数越多,频率越高,反之越低。

上图是函数sin(Θ)的图形,在的周期内完成了一次波动,频率就是1。

上图是函数sin(2Θ)的图形,在的周期内完成了两次波动,频率就是2。

所以,色彩剧烈变化的地方,就是图像的高频区域;色彩稳定平滑的地方,就是低频区域。

三、滤波器

物理学对波的研究已经非常深入,提出了很多处理波的方法,其中就有滤波器(filter):过滤掉某些波,保留另一些波。

下面是两种常见的滤波器 。

  • 低通滤波器(lowpass):减弱或阻隔高频信号,保留低频信号
  • 高通滤波器(highpass):减弱或阻隔低频信号,保留高频信号

下面是低通滤波的例子。

上图中,蓝线是原始的波形,绿线是低通滤波lowpass后的波形。可以看到,绿线的波动比蓝线小很多,非常平滑。

下面是高通滤波的例子。

上图中,黄线是原始的波形,蓝线是高通滤波highpass后的波形。可以看到,黄线的三个波峰和两个波谷(低频波动),在蓝线上都消失了,而黄线上那些密集的小幅波动(高频波动),则是全部被蓝线保留。

再看一个例子

上图有三根曲线,黄线是高频波动,红线是低频波动。它们可以合成为一根曲线,就是绿线。

上图中,绿线进行低通滤波和高通滤波后,得到两根黑色的曲线,它们的波形跟原始的黄线和红线是完全一致的。

四、图像的滤波

浏览器实际上包含了滤波器的实现,因为 Web Audio API 里面定义了声波的滤波。这意味着可以通过浏览器,将lowpasshighpass运用于图像。

lowpass使得图像的高频区域变成低频,即色彩变化剧烈的区域变得平滑,也就是出现模糊效果。

上图中,红线是原始的色彩曲线,蓝线是低通滤波后的曲线。

highpass正好相反,过滤了低频,只保留那些变化最快速最剧烈的区域,也就是图像里面的物体边缘,所以常用于边缘识别。

上图中,红线是原始的色彩曲线,蓝线是高通滤波后的曲线。

下面这个网址,可以将滤波器拖到图像上,产生过滤后的效果。

浏览器实现滤波的范例代码,可以看这个仓库

2.均值滤波

均值滤波计算模板内所有像素中的均值值,并用所计算出来的均值体改模板中心像素的灰度值
缺点:会使图像变模糊,原因是它对所有的点都是同等对待,在将噪声点分摊的同时,景物的边界点也将被分摊。

3.中值滤波

中值滤波计算模板内所有像素中的中值,并用所计算出来的中值体改模板中心像素的灰度值,这种方法对噪声不是那么敏感,能够较好的消除椒盐噪声,但是容易导致图像的不连续性。
原因:噪声(如椒盐噪声)的出现,使该点像素比周围的像素亮(暗)许多。取模板中排在中间位置上的像素的灰度值替代待处理的值,就可以达到滤除噪声的目的。

4.高斯滤波

参考博客:https://blog.csdn.net/lz0499/article/details/54015150

        数值图像处理中,高斯滤波主要可以使用两种方法实现。一种是离散化窗口滑窗卷积,另一种方法是通过傅里叶变化。在这我主要想说说第一种方法的高斯滤波。离散化窗口滑窗卷积的时,主要利用的是高斯核,高斯核一般是一个奇数的大小的高斯模板。常用的高斯模板有如下几种形式:

       上图所示是常用的两种高斯模板, 左侧是常用的3*3的高斯模板,右侧是常用的5*5高斯模板。那么,上述高斯模板中的参数是怎么得到的呢?高斯模板中的参数是如何得到的!

       高斯模板中的参数是通过高斯函数计算出来的。计算高斯模板参数时,通过如下公式:

    x的平方和y的平方分别表示的是邻域内其他像素与邻域内中心像素的距离,Sigmma代表的是标准差。


    如上图所示由二维高斯图像可知,标准差越小,二维高斯图像越窄小,平滑效果不明显;标准差越大,而为高斯图像越矮宽,滤波效果比较明显。

更详细信息,可参考:https://blog.csdn.net/lz0499/article/details/54015150

5.双边滤波器滤波

参考本博客:双边滤波器
原理:双边滤波器是由Tomasi和Manduchi在1998年发明的一种各向异性滤波。它是一种非线性滤波,它同时到考虑图像的空间邻近度和像素值相似度(即空间域和值域),从而达到保边去噪的目的,实现对高频细节的保护,改善高斯滤波去噪后模糊边缘的缺点。双边滤波器对输入图像进行局部加权平均得到输出图像f ̂的像素值:
f(x,y)=(i,j)D(x,y)g(x,y)w(x,y,i,j)((i,j)D(x,y)w(x,y,i,j))2 f (x,y)=\frac{∑_{(i,j)∈D_(x,y)}g(x,y)w(x,y,i,j)}{∑_{((i,j)∈D_(x,y)}w(x,y,i,j))} (2)
式中D_(x,y)表示中心点(x,y)的(2N+1)*(2N+1)的领域像素, f ̂(x,y)值依赖于领域像素值g(x,y)的加权平均。权重系数w(x,y,i,j)取决于空间域核(domain)和值域核(range)的乘积:
wd(x,y,i,j)=exp((xi)2+(yj)22σd2)3 w_d (x,y,i,j)=exp⁡(-\frac{(x-i)^2+(y-j)^2}{2σ_d^2 }) (3)
ws(x,y,i,j)=exp(g(x,y)g(i,j)22σs2)4 w_s (x,y,i,j)=exp⁡(-\frac{|g(x,y)-g(i,j)|^2}{2σ_s^2 }) (4)
因此,
w(x,y,i,j)=wd(x,y,i,j)ws(x,y,i,j)5 w(x,y,i,j)=w_d (x,y,i,j)*w_s (x,y,i,j) (5)

从式子(5)可以看出,双边滤波器的加权系数是空间邻近度因子w_d和亮度相似因子w_s的非线性组合。前者随着像素点与中心点之间欧几里德距离的增加而减小,后者随着像素亮度之差的增大而减小。在图像变化平缓的区域,领域内亮度值相差不大,双边滤波器转化为高斯低通滤波器,在图像变化剧烈的区域,领域内像素亮度值相差较大,滤波器利用边缘点附近亮度值相近的像素点的亮度值平均替代原亮度值。因此,双边滤波器既平滑了图像,又保持了图像边缘。
文献1

双边滤波器受3个参数的控制:滤波器半宽N、参数σ_d和σ_s。N越大,平滑作用越强;σ_d和σ_s分别控制着空间邻近度因子w_d和亮度相似度因子w_s的衰减程度。(参数σ_d越大,只要亮度值足够相近,更远的像素也会受到影响,这就是空间域作用衰减程度;参数σ_s越大,颜色相差越大,也将被平滑进来,就是值域的作用衰减程度。总的来说,sigma类似于高斯函数的标准差,权重函数越扁平,平滑效果越明显)在实验中,为简单起见,你可以设置σ_d和σ_s值相同,当sigma值很小时(<10),滤波器不会有多少作用效果;当sigma值很大时(>150),滤波器作用效果会变得非常明显。

6.最小二乘滤波

参考文献:https://wenku.baidu.com/view/2ddaed88cc22bcd126ff0c32
如图 1所示 , 有 9个数据点被在左边的括号包住 , 如果这些点均在一条曲线附近,则能近似地被所示的能描述这条曲线的方程所表示 , 然后就可以根据数值计算方法用具体的过程把所有的系数 (i )确定出来。将中间点的横座标代回到方程中,得到图中圆圈所表示的点 ,用这个点代替原来的点。这个过程中,获得 的该点值 的大小是在最小二 乘法和这样一组观察数据点基础上的最佳拟合。这 一 过程可以对有 9个数据点的每一组数重复进行 ,每进行一次就去掉最左边的一个点然后加上最右边的一 个点 , 一直到最右边的区域都确定 出来。通常来 说 , 每一组 9个点确定的曲线系数都不同 。

现讨论由Savtzky和Golay导出的方法。设一组 数据为 (i ),i的取值为 2m +1个连续的整值 , 即 i =一m, ⋯, 0, ⋯, m。现 构 造 一 个 n 阶 多 项 式 (n≤2m +1)来拟合这一组数据 :
在这里插入图片描述

7.最佳陷波滤波器(频率域)

还有带阻滤波器、带通滤波器等等
具体参考本博客:最佳陷波滤波器设计及实现

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章