1 .1 通过空间滤波器生成频域滤波器
给定一个空间滤波器h,生成一个频域滤波器H的方法为:
H=fft2(h,PQ(1),PQ(2))
其中向量PQ的值取决于我们想要对其滤波的图像的大小。
函数freqz2用于计算FIR滤波器的频率响应,结果是我们希望的频域滤波器。
语法:H=freqz2(h,r,c)
%得到图像的傅里叶频谱
f=imread('university.jpg')%读取图像
F=fft2(f);%将图像进行傅里叶变换
s=fftshift(log(1+abs(F)));%将变换原点移到频域矩阵的中心
s=gscale(s,[]);%将图像标度在全尺度
imshow(s);%显示图像的傅立叶频谱
h=fspecial('sobel');%生成空间滤波器
freqz2(h);%查看频域滤波器的图形
%生成频域滤波器
PQ=paddedsize(size(f));
H=freqz2(h,PQ(1),PQ(2));
H1=ifftshift(H);
imshow(abs(H),[]);
figure,imshow(abs(H1),[]);
%滤波操作,设置默认的边界选项,零填充
gs=imfilter(double(f),h);
%进行频域处理,得到滤波后的图像
gf=dftfilt(f,H1);
imshow(gs,[]);
figure,imshow(gf,[]);
%消除负值,显示图像
figure,imshow(abs(gs),[]);
figure,imshow(abs(gf),[]);
%创建一幅阀值图像,可清楚看到边缘
fi