前面的章节我们介绍了图像的灰度变换以及空间域滤波,本章我们介绍图像的频域滤波。
什么是频率?
频率我们可以直观的理解为空间或者时间的变化率。
对于图像来说,傅里叶变换中的频率与图像中的亮度变化直接联系。傅里叶变换的原点表示直流分量或者说是图像的平均灰度。例如,房间中的墙和地板,没有云朵的蔚蓝的天空等等,这些场景中图像变化缓慢,或者几乎不变,这里就对应着傅里叶变换的原点分量或者低频分量。而对于各种纹理、物体的边缘等灰度急剧变化的地方而言,则对应于傅里叶变换的高频分量。
频率域滤波流程
图像的频域滤波可以理解为:将图像进行傅里叶变换,使空间域变换到频率域,然后在频率域进行相关滤波操作,最后通过傅里叶逆变换得到滤波后的图像。整个流程如图所示。
傅里叶变换操作
下面我们简单以一张图片为例说明傅里叶变换。由图像直观来看,图像基本为单色调,除去白色矩形边框,几乎没有颜色变化,因此该图像的傅里叶变换几乎主要集中在原点处。
我们首先对该图直接进行FFT
clear
clc
data = imread('Fig0424(a)(rectangle).jpg');
data = rgb2gray(data);
figure(1)
imshow(data)
title('原图像')
F = fft2(data);
S = im2uint8(mat2gray(abs(F)));
figure(2)
imshow(S)
title('傅里叶变换-在4个角显示亮点的谱')
我们可以得到下图,注意该图的4个角显示有亮点,其值就是为傅里叶变换的原点。
这是因为在图像的傅里叶变换中,傅里叶变换为周期函数和对称函数,如下图所示,在原点以左的半个周期中,变换的幅度值从M/2到M-1重复。因为一维FFT仅在M个点上实现,所以在该区域计算机一维变换将产生两个紧邻的半周期。而我们希望在区间[0,M-1]内得到一个完整且正确排序的周期。而我们可以采用在计算前让f(x)乘以(-1)^x来得到。这样做可以将变换的原点移动到点u=M/2处。