【数字图像处理】5.0:灰度图像-空域滤波 基础:卷积和相关

Abstract: 数字图像处理:第26天
Keywords: 卷积,相关,空域滤波

本文最初发表于csdn,于2018年2月17日迁移至此

开篇废话

废话开始,博客已经写到第28篇了,但书已经看了两个月了,每天虽然很累,但感觉收获还是很多的,一个是感觉自己找到门路,学习基础是很无聊的,因为不会直接做出结果,没有成就感,但回头看看写的博客和代码,感觉确实有提高,群里好多硕士也都是被老板抓过来就做图像类的项目,有些人根本不知道是啥,现学编程,找篇论文,抓起OpenCV一顿找大牛求教,最后做出来个结果,其实之前我也是这样,做出来东西以后感觉自己收获很多,也有成就感,不过现在看看有点空中楼阁的意思,就像很多人做了很多图像项目,却连基本的卷积,相关,平滑,锐化都说不明白,他们同样能把工作干的很出色,但对基础并不是很熟悉,更多的人做图像的初衷并不是爱好,而是单纯的工作,或者被动的学习。兴趣是最好的老师,值得庆幸的是,虽然每天工作一天,我还是很有激情的学了这么久,而且热情更加高涨。
相声四门功课,说学逗唱,唱是太平歌词,但很多人不会唱太平歌词,因为那个东西很枯燥并且很难,而且现在没人要求你必须学全了四门功课才能上岗,所以,现在相声不好听,不是市场不景气,是做的不够好,为啥郭德纲就能卖出票,为啥十几年前老郭都吃不上饭了还坚持着,他后来说过,就是爱这行。同样,图像的基础很庞杂,综合学科,线性代数,概率论,微积分,信号与系统,数字信号处理,数论等一大堆涉及的知识,如果是真爱,慢慢来,一点点的学扎实,一定会有用武之地,虽然公司要硕士博士去做图像算法,但我相信,只要学的扎实,学的深入,会有人要我的

空域滤波基础介绍

今天废话多了点,因为内容不是很多,滤波的概念其实是频域概念,即对信号频率进行处理,高于或低于截止频率的将被干掉,或者带通带限,就有了高通滤波器,低通滤波器。频域的相乘对应于时域的卷积,于是,空域滤波器(空间滤波器也叫卷积核,空间掩膜,核,模板,窗口等)和图像的卷积能达到和频域相同或相近的效果,所以我们要说先图像空域的卷积,值得注意的是空间滤波器只有线性滤波器和频域对应有关联,非线性滤波器在频域无法实现。

空间滤波器组成:

  1. 一个邻域(典型的是以某一点为中心的矩形)
  2. 对该邻域做规定的运算,得到结果赋值到邻域中心位置,特别的,赋值到邻域对应的中心并不是原图上的,而是结果上的,因为本步计算的结果将不会影响下一步计算,所以原图像不能被改变

如果执行线性操作,将可以在频域找到对应操作,如果采用非线性操作,频域则无对应。一般掩膜使用奇数x奇数大小,因为这样中心为整数坐标:
线性计算如下,w为模板,f为图像:
Center
示意图:
Center 1
与卷积相似的计算,叫做相关,相关时模板从图像上划过,计算模板与图像每个位置对应的乘积并求和,赋值给中心位置,卷积类似但是要将模板旋转180°,如果将模板按照线性存储,简单的做饭就是将数组倒置,最后变最前。对于图像边缘的像素,卷积无法覆盖的地方采用外围补0的方法。
截个图,来解释下上面的话,或者看前面关于卷积的理解的博客:
Center 2
Center 3
需要注意一下几点:

  1. 卷积或相关时关于位移的函数
  2. 滤波模板w与只有一个1其他都是0的函数相关,得到一个旋转180°的拷贝,这个函数叫离散单位冲激。
  3. 如果模板关于原点对称,那么相关和卷积结果相同
  4. 滤波时使用卷积,相关可以用于模板匹配
  5. 卷积是线性系统计算的基础

接下来就是卷积模板的定义了,之前在频域中说过,一种线性模板可以是频域设计的然后ifft到空域,生成小模板,还有就是直接在空域设计,模板系数决定模板的用途,对于线性模板,唯一能做的是相乘后求和,所以计算方式规定了以后就只能有系数是可以设计的了。例如使用一个二维高斯函数生成模板。
空域中定义一个滤波器以后,一般下需要到频域观察下其是否有其他频率影响,例如对于一个平滑滤波器,我们应该观察下其频域特性,是否在高频部分有旁瓣。不过对于一个离散模板来说,只要有截断,就会产生旁瓣。

空域滤波与频域比较

这里我们只比较算法的时间复杂度,因为之前我曾说过一道面试题,为什么使用空间滤波模板,而不是用频域滤波。下图给出频域计算过程和算法计算量:
Center 4
最后得出的计算量是除去赋值操作,结果: $(4+8log2N)N^2$
而空间卷积(相关)如果不加优化,使用最普通的算法,时间复杂度是 $N^2
M^2$ (其中M是窗宽),所以当 $M^2<(4+8log2N)$ 时,频域滤波速度没有优势,更主要的一点是扩展图像以后引入的高频干扰,观察下图
Center 5
填充后的图像边缘将引入高频分量,使频域滤波后的一周有高频干扰,如图:
原图:
Center 6
上面是一副512x512的纯白图片
采用高斯高通处理后:
Center 7
周围的泛白就是高频成分被遗留的结果。
特别的,如果空预处理高通时,改变周围的填充策略(例如复制边缘)将不会有这种效果。

总结

总结,空域处理将占据处理的大部分,而频域更适合做分析,就像matlab一般用作模拟和实验算法,真正的工程中一般要用c,c++这些工具,所以,各有各的用途,分析和工程,都是重要的应用

0%