数字图像处理——第四章 频率域图像增强

频率域图像增强

1. 傅里叶变换

1.1 一维傅里叶变换

单变量连续函数f(x)的傅里叶变换F(u)定义为等式:
在这里插入图片描述
反变换可以定义为:
在这里插入图片描述
上述这两个式子,就反映了通过一个函数可以做变换求到其傅里叶变换,或已知傅里叶变换可以完全地求出原始函数。

单变量离散函数f(x)(其中x=0,1,2,…,m-1)的傅里叶变换由以下等式给出:
在这里插入图片描述
同样,若给出F(u),能用反DFT来获得:
在这里插入图片描述
F(u)的值的范围覆盖的域(u的值)称为频率域,因为u决定了变换的频率成分。F(u)的M项中的每一个被称为变换的频率分量。

1.2 二维傅里叶变换

二维连续函数f(x, y)的傅里叶变换F(u, v)定义为:
在这里插入图片描述
由此可以得它的反变换:
在这里插入图片描述
对于图像尺寸为M*N的函数f(x, y)的二维离散傅里叶变换为:
在这里插入图片描述
给出F(u, v),可通过反DFT得到f(x, y)如下:
在这里插入图片描述
注:u和v是频率变量,x和y是空间或图像变量。

2. 频率域滤波

傅里叶变换的结果,与图像中的强度变化模式具有一定的联系。 例如,变化最慢的频率成分(u=v=0)对应一幅图像的平均灰度级
在这里插入图片描述反映的是对图像每个像素点的灰度级求和然后除以MN,得到平均灰度级。低频对应着图像的总体灰度级的显示,高频对应图像中变化快的分量(图像的细节)。

频率域滤波的步骤:

  1. 用(-1)^(x+y)乘以输入图像来进行中心变换
  2. 由(1)计算图像的DFT,得到F(u,v)
  3. 用滤波器函数H(u, v)乘以F(u, v)
  4. 计算(3)中结果的反DFT
  5. 得到(4)中结果的实部
  6. 用(-1)^(x+y)乘以(5)中的结果

注:在(3)中并不是矩阵和矩阵的相乘,而是点和点的相乘。最后一步中的(-1)^(x+y)用以抵消(1)中的操作。

在MATLAB中,DFT的基本步骤如下,其中f是将被滤波的图像,g为结果,假设滤波器函数H与填充后的图像大小相同:

  1. 使用函数tofloat把输入图像转换为浮点图像:[f, revertclass] = tofloat(f);
  2. 使用函数paddedsize获得填充参数:PQ = paddedsize(size(f));
  3. 得到有填充图像的傅里叶变换:F = fft2(f, PQ(1), PQ(2));
  4. 生成一个大小为PQ(1)*PQ(2)的滤波器函数并且令H = ifftshift(H);
  5. 用滤波器乘以该变换:G = H .* F;
  6. 获得G的IFFT:g = ifft2(G);
  7. 将左上部的矩形修剪为原始大小:g = g(1 : size(f, 1), 1 : size(f, 2));
  8. 需要时,将滤波后的图像转换为输入图像的类:g = revertclass(g);

2.1 陷波滤波器及其性质

图像的平均值由F(0, 0)给出,若在频率域中设置此项为0,并进行反变换,那么结果图像的平均值将为0。滤波函数可以选为:
在这里插入图片描述
此滤波器可以设置F(0, 0)为零,而保留其他傅里叶变换的频率成分不变。处理后的图像可以通过对H(u, v)F(u, v)进行傅里叶反变换来获得。这一类滤波器除了原点处有凹陷外其他均为常量。

2.2 空间域滤波与频率域滤波之间的对应关系

空间域和频率域之间最基本的联系是由卷积定理的有关结论建立的。

在空间域中将滤波的模板在图像中逐像素移动,并对每个像素进行指定数量的计算的过程就是卷积过程。形式上,大小为M*N的两个函数f(x, y)和h(x, y)的离散卷积表示和定义如下:
在这里插入图片描述
由该式可以看出,除了前面的常数、负号以及求和的上下限之外,整个表达式与空间域的线性滤波相似。特别是负号只说明函数h关于原点镜像对称。这是卷积定义中自带的。

上式是一种实现:

  1. 关于原点翻转函数
  2. 通过改变(x,y)的值相对于一个函数移动到另外一个函数
  3. 对每一个(x,y)的位移值,计算所有m和n值成绩的和。((x,y)的位移值是以整数增加的,当函数不再重叠时停止)

用F(u,v)和H(u,v)分别表示f(x,y)和h(x,y)的傅里叶变换,卷积定理说明f(x,y)*h(x,y)和F(u,v)H(u,v)组成傅里叶变换对。类似的结果是频率域的卷积简化为空间域的乘法,形式上表示如下:
在这里插入图片描述
注意,前述的所有函数均为相同尺寸。因此,在实际中,指定一个频率域的滤波器,然后进行反变换以计算相同尺寸的空间域的相应滤波器,但这种方法从计算的角度来看并不能解决太大问题。如果两个滤波器是相同尺寸,那么通常在频率域进行滤波计算更为有效。 但是,在空间域更适用于更小的滤波器。这正是我们所感兴趣的联系。滤波器在频率域中更为直观,但在空间域使用更小的滤波器模板更为明智。由此,可以在频率域指定滤波器,做反变换,然后在空间域使用结果滤波器作为在空间域构建更小的空间滤波模板的指导。

2.2.1 空间域滤波器与频率域滤波器的转换

图像处理工具箱函数freqz2可以完成空间域滤波器和频率域滤波器的等同,并输出为相应的频率域滤波器。

函数freqz2的语法形式为:H = freqz2(h, R, C)。其中,h是一个二维空间滤波器,H是相应的二维频率域滤波器。R是行数,C是我们希望滤波器H所具有的的列数。若freqz2被写成没有输出参量的形式,则H的绝对值在MATLAB桌面上显示为三维透视图。

考虑使用600*600像素的图像f,生成频率域滤波器H。

>> f = imread("C:\Users\86158\Desktop\DIP3E_Original_Images_CH04\Fig0438(a)(bld_600by600).tif");
>> imshow(f);
>> f = tofloat(f);
>> F = fft2(f);
>> S = fftshift(log(1 + abs(F)));
>> figure, imshow(S, [ ]);

如图为f和f的傅里叶频谱:
在这里插入图片描述

图1 一幅灰度图及其傅里叶谱

在这里插入图片描述
图2 空间域滤波和频率域滤波的比较

在空间域中使用imfilter函数生成滤波后的图像,如图2-1。在使用函数dftfilt得到频率域处理得到的滤波后的图像,如图2-2。图像中的灰色调是由于gs和gf的负数值引起的,通过标定命令imshow,负数值会使得图像的平均值增大。图2-3和2-4是将生成的sobel模板h通过使用响应的绝对值来检测图像的边缘,这样显示计算出的图像的绝对值会更有意义。在通过创建一幅经阈值处理的二值图像,可使边缘更清晰。选用乘数0.2的目的是仅显示强度比gs和gf的最大值打20%的边缘。

2.3 平滑的频率域滤波器

在空间域讨论过平滑的滤波器,需要抑制图像中的细节。而在频率域中,这些细节,如边缘和其他尖锐变化在图像灰度级中主要出于傅里叶变换的高频成分,因此频率域的平滑,可以通过衰减指定图像傅里叶变化中高频成分的范围来实现。 目标是选择一个滤波器变换函数H(u,v)以通过衰减F(u,v)的高频成分产生G(u,v)。

2.3.1 理想低通滤波器

理想低通滤波器是最简单的低通滤波器,它“截断”傅里叶变换中的所有高频成分,这些成分处在距变换原点的距离比指定距离D0要远的多的位置。其变换函数为:
在这里插入图片描述
其中,D0是指定的非负数值,D(u,v)是(u,v)点距频率矩形原点的距离。由于变换被中心化了,如果要研究的图像尺寸为M*N,从点(u,v)到傅里叶变换中心的距离为:
在这里插入图片描述
理想低通滤波器的模糊和振铃特性可参考卷积定理来解释。卷积定理指出在空间域的相应过程:g(x,y)=h(x,y)*f(x,y),其中h(x,y)是滤波器变换函数H(x,y)的反变换。滤波器h(x,y)有两个主要特性:在原点处的一个主要成分,及中心成分周围呈周期性的成分。中心成分主要决定模糊,周期性的成分主要决定了理想滤波器振铃现象的特性。 中心成分的半径和距原点每单位距离上周期的数量都与理想滤波器的截止频率成反比。

下面对一幅500*500像素的图像f应用一个理想低通滤波器处理结果如下:

>> Fimg=fft2(double(f));
>> Fimg=fftshift(Fimg);
>> [M,N]=size(f);
>> dist1=5; 
>> z1=zeros(M,N);  
>> for i=1:M 
    for j=i:N 
       if(sqrt(((i-M/2)^2+(j-N/2)^2))<dist1) 
           z1(i,j)=1; 
        end 
    end 
end  
>> g1=Fimg.*z1;  
>> g1=ifftshift(g1); 
>> img1=real(ifft2(g1)); 
>> imshow(img1);

在这里插入图片描述

图3 理想低通滤波器处理后的图像

由图可以看出,图3-2对所有的实际目的没有意义,除非模糊的目的是为了消除所有的细节。随着滤波器半径的增大,消除的功率越来越少,导致的模糊也越来越弱。可以明显看出,在图3-3和3-4中,有振铃的效果存在,随着被消除的高频部分的数量减少,图像的纹理变得越来越清晰,在半径更大的处理中,滤波的截止频率很大,虽然有振铃存在,但是没有那么明显了。

2.3.2 布特沃斯低通滤波器

n阶布特沃斯低通滤波器(BLPF)的传递函数(且截止频率距原点的距离为D0)的定义如下:
在这里插入图片描述
布特沃斯低通滤波器变换函数在通带与被滤除的频率之间没有明显的截断。
一个一阶布特沃斯滤波器没有振铃,在二阶中振铃通常很微小,但阶数增高时振铃便成为一个重要因素。相比于理想低通滤波器,布特沃斯滤波器减少了振铃现象,高低频率之间的过渡比较平滑。但其平滑处理的效果常不如理想低通滤波器。需要根据平滑效果和振铃现象这种选择布特沃斯滤波器的阶数。并且其计算量大于理想低通滤波器。

2.3.3 高斯低通滤波器

二维高斯低通滤波器(GLPF)的形式由下式给出:
在这里插入图片描述
其中,D0是截止频率。当D(u,v)=D0时,滤波器下降到它最大值的0.607处。高斯滤波器有一个重要的特性,那就是在高斯滤波器中是没有振铃的。其平滑效果常不如布特沃斯低通滤波器。

下面对一幅500*500像素的图像f应用一个高斯低通滤波器,D0的取值分别为5,15,30和230,处理结果如下:

>> [f, revertclass] = tofloat(f);
>> PQ = paddedsize(size(f));
>> [U, V] = dftuv(PQ(1), PQ(2));
>> D = hypot(U, V);
>> D0 = 0.05 * PQ(2);
>> F = fft2(f, PQ(1), PQ(2));
>> H = exp(-(D.^2)/(2 * (D0^2)));
>> g = dftfilt(f, H);
>> g = revertclass(g);
>> imshow(g);

在这里插入图片描述

图5 高斯低通滤波处理后的图像

对比原来的图像,相比于理想低通滤波和布特沃斯滤波,没有其模糊的严重,并且没有振铃的情况存在。一个图像在频率域是高斯函数,在空间域同样也是高斯函数。

2.4 频率域锐化滤波器

灰度级的边缘和其他地方的急剧变化与高频成分有关,图像的锐化能够在频率域用高通滤波处理实现,而衰减低频成分并不会扰乱傅里叶变换的高频信息。

高通滤波器,可以通过对低通滤波器进行精确的反操作来得到。

2.5 频率域的拉普拉斯算子

频率域的拉普拉斯算子可由如下滤波器实现:
在这里插入图片描述
但这个公式在处理数字图像时,还需进行比例的变换。例如对于大小为M*N的数字图像f(x, y),实际的频率域拉普拉斯算子为:
在这里插入图片描述
如果不做这个处理,u和v的取值范围从0至M-1和0至N-1的,u^2 + v^2其实是一个非常大的值,这样不适合在数字图像中做处理的。

计算F(u,v)时需要先中心化,也就是将中心移到M/2和N/2处,则此时为:
在这里插入图片描述

总结

在这一部分,仅处理有限域内的函数(图像),傅里叶技术提供了一个有意义的和实际的研究以及实现图像增强的主要途径。

为什么要在频率域研究图像增强?可以利用频率成分和图像外表之间的对应关系。一些在空间域表述困难的增强任务,在频率域中变得非常普通;滤波在频率域更为直观,它可以解释空间域滤波的某些性质;可以在频率域指定滤波器,做反变换,然后在空间域使用结果滤波器作为空间域滤波器的指导;一旦通过频率域滤波试验选择了空间滤波,通常实施都在空间域进行。

频率域滤波是基于傅里叶变换所做的处理,它对傅里叶变换后产生的反映频率信息的图像进行处理,主要有频率域低通滤波器和频率域高通滤波器。

由于图像中的噪声主要集中在图像的高频部分,为了去除噪声,改善图像质量,可以采用低通滤波器来抑制高频部分,然后再进行傅里叶反变换获得滤波图像,可以达到图像平滑的目的,常用的频率域低通滤波器有理想低通滤波器、布特沃斯低通滤波器和高斯低通滤波器。这三种滤波器中理想滤波器平滑效果最好,但是高斯滤波器中没有振铃现象。通过对低通滤波器的反操作,可以得到高通滤波器。

猜你喜欢

转载自blog.csdn.net/weixin_42262128/article/details/106757965