灰度图像--空域滤波 基础:卷积和相关,灰度空域


学习DIP第28天

转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意。有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!!

文章代码已托管,欢迎共同开发:https://github.com/Tony-Tan/DIPpro

开篇废话

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

空域滤波基础介绍

      今天废话多了点,因为内容不是很多,滤波的概念其实是频域概念,即对信号频率进行处理,高于或低于截止频率的将被干掉,或者带通带限,就有了高通滤波器,低通滤波器。频域的相乘对应于时域的卷积,于是,空域滤波器(空间滤波器也叫卷积核,空间掩膜,核,模板,窗口等)和图像的卷积能达到和频域相同或相近的效果,所以我们要说先图像空域的卷积,值得注意的是空间滤波器只有线性滤波器和频域对应有关联,非线性滤波器在频域无法实现。     空间滤波器组成:     如果执行线性操作,将可以在频域找到对应操作,如果采用非线性操作,频域则无对应。一般掩膜使用奇数x奇数大小,因为这样中心为整数坐标:     线性计算如下,w为模板,f为图像:
    示意图:
    与卷积相似的计算,叫做相关,相关时模板从图像上划过,计算模板与图像每个位置对应的乘积并求和,赋值给中心位置,卷积类似但是要将模板旋转180°,如果将模板按照线性存储,简单的做饭就是将数组倒置,最后变最前。对于图像边缘的像素,卷积无法覆盖的地方采用外围补0的方法。     截个图,来解释下上面的话,或者看前面关于卷积的理解的博客:

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

空域滤波与频域比较

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

总结

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

相关内容