空域滤波基础


      “滤波”是指接受或拒绝一定的频率分量。 滤波的概念其实是频域概念,即对信号频率进行处理,高于或低于截止频率的将被干掉,或者带通带限,就有了高通滤波器,低通滤波器。低通滤波器的效果是模糊(平滑)衣服图像。
    频域的相乘对应于时域的卷积,于是,空域滤波器(空间滤波器也叫卷积核,空间掩膜,核,模板,窗口等)和图像的卷积能达到和频域相同或相近的效果,所以我们要说先图像空域的卷积,值得注意的是空间滤波器只有线性滤波器和频域对应有关联,非线性滤波器在频域无法实现。
    空间滤波器组成:
  1. 一个邻域(典型的是以某一点为中心的矩形)
  2. 对该邻域做规定的运算,通常是将滤波后的像素值赋值给新创建图像中的对应位置,以容纳滤波的结果
    如果执行线性操作,将可以在频域找到对应操作,如果采用非线性操作,频域则无对应。一般掩膜使用奇数x奇数大小,因为这样中心为整数坐标:
    一般来说,使用大小为m*n的滤波器对大小为M*N的图像进行线性空间滤波,线性计算如下:

    w为模板,f为图像;m=2a+1,n=2b+1;x,y是可变的,以便w中的每一个像素可访问f中的每一个像素。
    示意图:

    
空间相关与卷积
    与卷积相似的计算,叫做相关,相关时模板从图像上划过,计算模板与图像每个位置对应的乘积并求和,赋值给中心位置,卷积类似但是要将模板旋转180°,如果将模板按照线性存储,简单的做法就是将数组倒置,最后变最前。对于图像边缘的像素,卷积无法覆盖的地方采用外围补0的方法。
    截个图,来解释下上面的话,或者看前面关于卷积的理解的博客:
空域滤波基础_第1张图片
空域滤波基础_第2张图片
    需要注意一下几点:
  1. 卷积或相关是关于位移的函数
  2. 滤波模板w与只有一个1其他都是0的函数相关,得到一个旋转180°的拷贝,这个函数叫离散单位冲激。
  3. 如果模板关于原点对称,那么相关和卷积结果相同
  4. 滤波时使用卷积,相关可以用于模板匹配
  5. 卷积是线性系统计算的基础
    
    需要指出的是,滤波器未必适用真正的卷积,有时不必区分相关与卷积的区别。
    接下来就是卷积模板的定义了,之前在频域中说过,一种线性模板可以是频域设计的然后ifft到空域,生成小模板,还有就是直接在空域设计,模板系数决定模板的用途,对于线性模板,唯一能做的是相乘后求和,所以计算方式规定了以后就只能有系数是可以设计的了。例如使用一个二维高斯函数生成模板。
    空域中定义一个滤波器以后,一般下需要到频域观察下其是否有其他频率影响,例如对于一个平滑滤波器,我们应该观察下其频域特性,是否在高频部分有旁瓣。不过对于一个离散模板来说,只要有截断,就会产生旁瓣。

空域滤波与频域比较

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

总结

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

你可能感兴趣的:(图像处理)