赞
踩
1频率域滤波与空间域滤波殊途同归
空间域图像增强与频率域图像增强是两种截然不同的技术,实际上在相当程度上说它们是在不同的领域做相同的事情,是殊途同归的,,只是有些滤波更适合在空间域完成,而有些则更适合在频率域中完成
2傅里叶变换基础知识
傅里叶级数:法国数学家傅里叶发现任何周期函数只要满足一定条件(狄利赫里条件),都可以用正弦函数和余弦函数构成无穷级数,却以不同频率的正弦和余弦函数的加权来表示,称为傅里叶级数。
傅里叶变换的实质——基的转换:对于给定函数f(x),关键是选择合适的基,使得f(x)在这组基下,表现出需要的特性。当某一组基不满足要求时,就需要通过变换函数转换到另一组基下
3快速傅里叶变换及其实现
fft2()函数:该函数用于执行二维快速傅里叶操作,因此可以直接用于图像处理
Y=fft2(X)
Y=fft2(X,m,n)
X为输入图像,m和n分别用于将X的第一和第二维规整到指定的长度,当m和n均为2 的整数次幂时算法的执行速度要比m和n为素数时更快。
Y是计算得到的傅里叶频谱,是一个复数矩阵
注意:计算abs(Y)可以得到幅度谱,计算angle(Y)可以得到相位谱
fftshift()函数:利用了频谱的周期性特点,将输出图像的一半平移到另一端,从而使零频被移动到图像的中间。
Y=fftshift(X)
Y=fftshift(X,dim)
X为要平移的频谱,dim指出了在多维数组的哪个角度上执行平移操作。Y是经过平移的频谱
ifft2()函数:该函数用于对图像(矩阵)执行逆傅里叶变换。输出矩阵的大小与输入矩阵相同。
Y=ifft2(X)
Y=ifft2(X,m,n)
X为要计算反变换的频谱;m,n的意义与fft2()中相同;Y是反变换后得到的原始图像
matlab实现(幅度谱的意义示例)
I1=imread('cell.tif');%读入原图像
fcoef=fft2(I1);%做fft变换
spectrum=fftshift(fcoef);%将零点移到中心
temp=log(1+abs(spectrum));%对幅值做对数变换以压缩动态范围
subplot(1,2,1);
imshow(temp,[]);
title('FFF');
subplot(1,2,2);
imshow(I1);
title('Source');
I2=imread('circuit.tif');%读入原图像
fcoef=fft2(I2);%做fft变换
spectrum=fftshift(fcoef);%将零点移到中心
temp=log(1+abs(spectrum));%对幅值做对数变换以压缩动态范围
figure;
subplot(1,2,1);
imshow(temp,[]);
title('FFF');
subplot(1,2,2);
imshow(I2);
title('Source');
美女与猫——交换两幅图像的相位谱
A=imread('beauty.jpg');
B=imread('cat.jpg');
%求傅里叶变换
Af=fft2(A);
Bf=fft2(B);
%分别幅度谱和相位谱
AfA=abs(Af);
AfB=angle(Af);
BfA=abs(Bf);
BfB=angle(Bf);
%交换相位谱并重建复数矩阵
AfR=AfA .*cos(BfB)+AfA .*sin(BfB) .*i;
BfR=BfA .*cos(AfB)+BfA .*sin(AfB) .*i;
%傅里叶反变换
AR=abs(ifft2(AfR));
BR=abs(ifft2(BfR));
%显示图像
subplot(2,2,1);
imshow(A);
title('美女原图像');
subplot(2,2,2);
imshow(B);
title('猫的原图像');
subplot(2,2,3);
imshow(AR,[]);
title('美女的幅度谱与猫的相位谱组合');
subplot(2,2,4);
imshow(BR,[]);
title('猫的幅度谱与美女的相位谱组合');
4频域滤波基础
频域滤波与空间域滤波的关系:傅里叶变换可以将图像从空域变换到频域,而傅里叶反变换则可以将图像的频谱逆变换为空域图像,也即人可以直接识别的图像。
注意:将频谱原点移至图像中心,因此需要构造对应的原点在中心的滤波器,并在滤波之后使用iffshift()函数将原点移回以进行反变换
5频率域低通滤波器
理想低通滤波器:最容易想到的衰减高频成分的方法就是在一个称为“截止频率”的位置“截断”所有的高频成分,将图像频谱中所有高于这一截止频率的频谱成分设为0,低于截止频率的成分保持不变。
高斯低通滤波器:
I=imread('baby_noise.bmp');
%生成滤镜
ff=imgaussflpf(I,20);
%应用滤镜
out=imfreqfilt(I,ff);
figure(1);
subplot(2,2,1);
imshow(I);
title('Source');
%计算FFT并显示
temp=fft2(I);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);
subplot(2,2,1);
imshow(temp,[]);
title('Source');
figure(1);
subplot(2,2,2);
imshow(out);
title('Gauss LPF,sigma=20');
%计算FFT并显示
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);
subplot(2,2,2);
imshow(temp,[]);
title('Gauss LPF,sigma=20');
%生成滤镜
ff=imgaussflpf(I,40);
%应用滤镜
out=imfreqfilt(I,ff);
figure(1);
subplot(2,2,3);
imshow(out);
title('Gauss LPF,sigma=40');
%计算FFT并显示
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);
subplot(2,2,3);
imshow(temp,[]);
title('Gauss LPF,sigma=40');
%生成滤镜
ff=imgaussflpf(I,60);
%应用滤镜
out=imfreqfilt(I,ff);
figure(1);
subplot(2,2,4);
imshow(out);
title('Gauss LPF,sigma=60');
%计算并显示
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);
subplot(2,2,4);
imshow(temp,[]);
title('Gauss LPF,sigma=60');
6频率域高通滤波器:图像锐化可以通过衰减图像频谱中的低频成分来实现,这就建立了空间域图像锐化与频域高通滤波器之间的对应关系。
matlab实现
I=imread('coins.png');
%生成滤镜
ff=imgaussfhpf(I,20);
%应用滤镜
out=imfreqfilt(I,ff);
figure(1);
subplot(2,2,1);
imshow(I);
title('Source');
%计算FFT并显示
temp=fft2(I);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);
subplot(2,2,1);
imshow(temp,[]);
title('Source');
figure(1);
subplot(2,2,2);
imshow(out);
title('Gauss HPF,sigma=20');
%计算FFT并显示
temp=fft2(I);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);
subplot(2,2,2);
imshow(temp,[]);
title('Gauss HPF,sigma=20');
%生成滤镜
ff=imgaussfhpf(I,40);
%应用滤镜
out=imfreqfilt(I,ff);
figure(1);
subplot(2,2,3);
imshow(out);
title('Gauss HPF,sigma=40');
%计算FFT并显示
temp=fft2(I);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);
subplot(2,2,3);
imshow(temp,[]);
title('Gauss HPF,sigma=40');
%生成滤镜
ff=imgaussfhpf(I,60);
%应用滤镜
out=imfreqfilt(I,ff);
figure(1);
subplot(2,2,4);
imshow(out);
title('Gauss HPF,sigma=60');
%计算FFT并显示
temp=fft2(I);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);
subplot(2,2,4);
imshow(temp,[]);
title('Gauss HPF,sigma=60');
高斯高通滤波器可以较好的提取图像中的边缘信息,sigma取值越小,边缘提取越不精确,会包含越多的非边缘信息;sigma取值越大,边缘提取越精确,但可能包含不完整的边缘信息。
频域拉普拉斯滤波器
I=imread('coins.png');
ff=imlapf(I);
out=imfreqfilt(I,ff);
figure(1);
subplot(1,2,1);
imshow(I);
title('Source');
temp=fft2(I);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);
subplot(1,2,1);
imshow(temp,[]);
title('Source');
figure(1);
subplot(1,2,2);
imshow(out);
title('Laplace Filter');
temp=fft2(out);
temp=fftshift(temp)
temp=log(1+abs(temp));
figure(2);
subplot(1,2,2);
imshow(temp,[]);
title('Laplace Filter');
7利用频域滤波消除周期噪声
频域带阻滤波器:阻止频谱中某一频带范围的分量通过,其他频率成分则不受影响。
添加周期性噪声前后对比图:
O=imread('pout.tif');
[M,N]=size(O);
I=O;
for i=1:M;
for j=1:N;
I(i,j)=I(i,j)+20*sin(20*i)+20*sin(20*j);%添加周期噪声
end
end
subplot(1,2,1);
imshow(O);
title('Source');
subplot(1,2,2);
imshow(I);
title('Added Noise');
频谱分析:
i_f=fft2(I);
i_f=fftshift(i_f);
i_f=abs(i_f);
i_f=log(1+i_f);
o_f=fft2(O);
o_f=fftshift(o_f);
o_f=abs(o_f);
o_f=log(1+o_f);
figure(1);
imshow(o_f,[]);
title('Source');
figure(2);
imshow(i_f,[]);
title('Added Noise');
8频率域滤波与空间域滤波之间的内在联系
频域滤波较空域滤波而言更为直观,频域下滤波器表达了一系列空域(平滑、锐化等)的本质,即对高于/低于某一特定频率的灰度变化信息予以滤除,而对其他的灰度变化信息基本保持不变。这种直观性增加了频域滤波器设计的合理性。
补充:高频与低频的区别
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。