前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图像卷积与滤波参考资料:

图像卷积与滤波参考资料:

作者头像
keloli
发布2018-09-13 16:14:27
9470
发布2018-09-13 16:14:27
举报

参考资料:

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卷积

  • 计算方法: 直接2D卷积就是一开始说的那样,对于图像的每一个像素点,计算它的邻域像素和滤波器矩阵的对应元素的乘积,然后加起来,作为该像素位置的值。

直接的实现也称为暴力实现brute force,因为它严格按照定义来实现,没有任何优化。当然了,在并行实现里面,它也是比较灵活的。另外,也存在一个优化版本,如果我们的kernel是separable可分的,那么就可以得到一个快5倍左右的卷积方法。

  • 边界处理 那卷积核遇到图像边缘怎么办?例如图像顶部的像素,它的上面已经没有像素了,那么它的值如何计算?目前有四种主流的处理方法,我们用一维卷积和均值滤波来说明下。 我们在1D图像中,用每个像素和它的二邻域的平均值来取代它的值。假设我们有个1D的图像I是这样的:

对非图像边界的像素的操作比较简单。假设我们对I的第四个像素3做局部平均。也就是我们用2,3和7做平均,来取代这个位置的像素值。也就是,平均会产生一副新的图像J,这个图像在相同位置J (4) = (I(3)+I(4)+I(5))/3 = (2+3+7)/3 = 4。同样,我们可以得到J(3) = (I(2)+I(3)+I(4))/3 =(4+2+3)/3 = 3。需要注意的是,新图像的每个像素都取决于旧的图像,在计算J (4)的时候用J (3)是不对的,而是用I(3),I(4)和I(5)。所以每个像素都是它和它邻域两个像素的平均。平均是线性的操作,因为每个新的像素都是旧像素的线性组合。 对卷积,也有必须要考虑的情况是,在图像边界的时候,怎么办?J(1)的值应该是什么?它取决于I(0),I(1)和I(2)。但是我们没有I(0)呀!图像左边没有值了。有四种方式来处理这个问题:

方法一:想象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,那么这个模板就唯一确定为: 1 1 5 1 1 1 1 5 1 1 5 5 5 5 5 1 1 5 1 1 1 1 5 1 1 上图中的数字表式改点像素在序列中出现的次数。然后根据模板平滑图像。实验证明该方法好于传统中值滤波。 自己的理解: 加权中值滤波就是在对邻域像素值进行排序时,有些像素值让它多出现几次。比如上面的模板,就是让与当前像素点同行同列的像素点的值都出现5次。

5.结语

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.08.03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考资料:
    • 1.卷积的基本概念
      • 2.各个卷积核的使用效果
        • 2.1 啥也不做
        • 2.2 图像锐化滤波器(Sharpness Filter)
        • 2.3 边缘检测(Edge Detection)
        • 2.4 浮雕(Embossing Filter)
        • 2.5 均值模糊(Box Filter)
        • 2.6 高斯模糊(Gaussian Blur)
        • 2.7 运动模糊(Motion Blur)
      • 3.卷积的计算
        • 3.1 空域计算-直接2D卷积
        • 3.2 频域计算-快速傅里叶变换FFT卷积
      • 4.图像滤波
        • 4.1 图像滤波的目的
        • 4.2 图像的滤波方法
      • 5.结语
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档