图像处理

图像卷积与滤波

2017-08-03  本文已影响1122人  keloli

参考资料:

1.卷积的基本概念

首先,我们有一个二维的滤波器矩阵(有个高大上的名字叫卷积核)和一个要处理的二维图像。然后,对于图像的每一个像素点,计算它的邻域像素和滤波器矩阵的对应元素的乘积,然后加起来,作为该像素位置的值。这样就完成了滤波过程。
注意:卷积和协相关的差别是,卷积需要先对滤波矩阵进行180的翻转,但如果矩阵是对称的,那么两者就没有什么差别了。

滤波操作示意图

对于滤波器,也有一定的规则要求:

  1. 滤波器的大小应该是奇数,这样它才有一个中心,例如3x3,5x5或者7x7。有中心了,也有了半径的称呼,例如5x5大小的核的半径就是2。
  2. 滤波器矩阵所有的元素之和应该要等于1,这是为了保证滤波前后图像的亮度保持不变。当然了,这不是硬性要求了。
  3. 如果滤波器矩阵所有元素之和大于1,那么滤波后的图像就会比原图像更亮,反之,如果小于1,那么得到的图像就会变暗。如果和为0,图像不会变黑,但也会非常暗。
  4. 对于滤波后的结构,可能会出现负数或者大于255的数值。对这种情况,我们将他们直接截断到0和255之间即可。对于负数,也可以取绝对值。

2.各个卷积核的使用效果

2.1 啥也不做

啥也不做的卷积核示例

2.2 图像锐化滤波器(Sharpness Filter)

图像的锐化和边缘检测很像,首先找到边缘,然后把边缘加到原来的图像上面,这样就强化了图像的边缘,使图像看起来更加锐利了。这两者操作统一起来就是锐化滤波器了,也就是在边缘检测滤波器的基础上,再在中心的位置加1,这样滤波后的图像就会和原始的图像具有同样的亮度了,但是会更加锐利。



我们把核加大,就可以得到更加精细的锐化效果



另外,下面的滤波器会更强调边缘:

主要是强调图像的细节。最简单的3x3的锐化滤波器如下:



实际上是计算当前点和周围点的差别,然后将这个差别加到原来的位置上。另外,中间点的权值要比所有的权值和大于1,意味着这个像素要保持原来的值。

2.3 边缘检测(Edge Detection)

我们要找水平的边缘。需要注意的是,这里矩阵的元素和是0,所以滤波后的图像会很暗(数字图像中,255对应纯白,0对应纯黑),只有边缘的地方是有亮度的。


为什么这个滤波器可以寻找到水平边缘呢?因为用这个滤波器卷积相当于求导的离散版本:你将当前的像素值减去前一个像素值,这样你就可以得到这个函数在这两个位置的差别或者斜率。下面的滤波器可以找到垂直方向的边缘,这里像素上和下的像素值都使用:

再下面这个滤波器可以找到45度的边缘:取-2不为了什么,只是为了让矩阵的元素和为0而已。

那下面这个滤波器就可以检测所有方向的边缘:

为了检测边缘,我们需要在图像对应的方向计算梯度。用下面的卷积核来卷积图像,就可以了。但在实际中,这种简单的方法会把噪声也放大了。另外,需要注意的是,矩阵所有的值加起来要是0.

2.4 浮雕(Embossing Filter)

简单看一下实现浮雕效果所使用的卷积核:
浮雕滤波器可以给图像一种3D阴影的效果。只要将中心一边的像素减去另一边的像素就可以了。这时候,像素值有可能是负数,我们将负数当成阴影,将正数当成光,然后我们对结果图像加上128的偏移。这时候,图像大部分就变成灰色了。
下面是45度的浮雕滤波器



我们只要加大滤波器,就可以得到更加夸张的效果了


2.5 均值模糊(Box Filter)

我们可以将当前像素和它的四邻域的像素一起取平均,然后再除以5,或者直接在滤波器的5个地方(注意:图中卷积核中心写错了,应该是0.2)取0.2的值即可,如下图:


可以看到,这个模糊还是比较温柔的,我们可以把滤波器变大,这样就会变得粗暴了:注意要将和再除以13.

所以,如果你想要更模糊的效果,加大滤波器的大小即可。或者对图像应用多次模糊也可以。

2.6 高斯模糊(Gaussian Blur)

均值模糊很简单,但不是很平滑。高斯模糊就有这个优点,所以被广泛用在图像降噪上。特别是在边缘检测之前,都会用来移除细节。高斯滤波器是一个低通滤波器。

高斯模糊卷积核

2.7 运动模糊(Motion Blur)

简单看一下实现浮雕效果所使用的卷积核:
运动模糊可以通过只在一个方向模糊达到,例如下面9x9的运动模糊滤波器。注意,求和结果要除以9。



这个效果就好像,摄像机是从左上角移动的右下角。

3.卷积的计算

对图像处理而言,存在两大类的方法:空域处理和频域处理!空域处理是指直接对原始的像素空间进行计算,频率处理是指先对图像变换到频域,再做滤波等处理。

3.1 空域计算-直接2D卷积

方法一:想象I是无限长的图像的一部分,除了我们给定值的部分,其他部分的像素值都是0。在这种情况下,I(0)=0。所以J(1) = (I(0) + I(1) + I(2))/3 = (0 + 5 + 4)/3= 3. 同样,J(10) = (I(9)+I(10)+I(11))/3 = (3+ 6 + 0)/3 = 3.



方法二:想象I是无限图像的一部分。但没有指定的部分是用图像边界的值进行拓展。在我们的例子中,因为图像I最左边的值I(1)=5,所以它左边的所有值,我们都认为是5 。而图像右边的所有的值,我们都认为和右边界的值I(10)一样,都是6。这时候J(1) = (I(0) + I(1) + I(2))/3 = (5 + 5 + 4)/3= 14/3. 而J(10) = (I(9)+I(10)+I(11))/3 = (3 + 6 + 6)/3 = 5。


方法三:认为图像是周期性的。也就是I不断的重复。周期就是I的长度。在我们这里,I(0)和I(10)的值就是一样的,I(11)的值和I(1)的值也是一样的。所以J(1) = (I(0) + I(1) + I(2))/3= (I(10) + I(1)+ I(2))/3 = (6 + 5 + 4)/3 = 5 。


3.2 频域计算-快速傅里叶变换FFT卷积

后面的部分还没学习,详见:http://blog.csdn.net/zouxy09/article/details/49080029

4.图像滤波

4.1 图像滤波的目的

滤波就是要去除没用的信息,保留有用的信息,可能是低频,也可能是高频

4.2 图像的滤波方法

图像的滤波方法很多,主要可以分为频率域法空间域法两大类。频率域法的处理是在图像的某种变换域内,对图像的变换系数值进行运算,然后通过逆变换获得增强图像。这是一种间接的图像滤波方法。空间滤波方法是一类直接的滤波方法,它在处理图像时直接对图像灰度作运算。

低通的数学表达式如下所示:



F(u,v)表示原图的在傅里叶域的图像
H(u,v)表示传递函数(即低通滤波器)
G(u,v)表示经过低通滤波的F(u,v)


选择适当的传递函数H (u, v)对频率域低通滤波关系重大。常用的传递函数有梯形函数指数函数巴特沃思函数等。
频域常用的几种低通滤波器为:理想低通滤波器(Ideal circular Iow-passfilter)巴特沃思(Butterworth)低通滤波器指数低通滤波器梯形低通滤波器。这些低通滤波器,都能在图像内有噪声干扰成分时起到改善的作用。

平面空间域滤波法主要分为两类:

  1. 拟合图像的方法,包括n阶多项式拟合、离散正交多项式拟合、二次曲面拟合等
  2. 平滑图像的方法,包括领域平均法、中值滤波法、梯度倒数加权法、选择式掩模法等

平面空间域滤波主要使用两种滤波器:

  1. 高通滤波器:边缘提取与增强。边缘区域的灰度变换加大,也就是频率较高。所以,对于高通滤波,边缘部分将被保留,非边缘部分将被过滤
  2. 低通滤波:将会是边缘部分变得平滑。注意:高斯滤波是一种线性平滑滤波,即低通滤波,适用于消除高斯噪声。
    常用的高斯模板有如下几种形式:

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

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

实验效果图:(后面补)

常见的低通滤波实验效果图

线性与非线性滤波

5.结语

图像的卷积核滤波是图像处理中比较基础又很重要的部分,主要应用在去除图像噪声,提取图像边缘等场合。
文中如有不当之处欢迎留言。我们下次再见。

上一篇下一篇

猜你喜欢

热点阅读