频域和空域滤波的比较

时间:2024-04-11 10:31:28

一,空域滤波器
空域滤波是在图像空间中借助模板对图像进行领域操作,处理图像每一个像素的取值都是根据模板对输入像素相应领域内的像素值进行计算得到的。空域滤波基本上是让图像在频域空间内某个范围的分量受到抑制,同时保证其他分量不变,从而改变输出图像的频率分布,达到增强图像的目的。空域低通滤波器是应用模板卷积方法对图像每一像素进行局部处理。模板就是一个滤波器,设它的响应为 w(s,t) ,于是滤波输出的数字图像g(x,y)可以用离散卷积表示
频域和空域滤波的比较
1.1空域低通滤波器

1.1.1平滑滤波器

f=imread('C:/experiment/test1.jpg');
>> f=rgb2gray(f);
>> J = imnoise(f,'salt & pepper',0.02);
>> subplot(131),imshow(f);title('原图');
>> subplot(132),imshow(J);title('加入椒盐噪声');
>> k1=filter2(fspecial('average',3),J);
>> subplot(133),imshow(uint8(k1));title('3*3平滑滤波');

平滑滤波的结果
频域和空域滤波的比较
1.1.2中值滤波器

 k2=medfilt2(J);
>> subplot(133),imshow(uint8(k2));title('中值滤波');

中值滤波的结果
频域和空域滤波的比较
1.1.3高斯滤波器

t=imnoise(f,'gaussian');
>> subplot(131),imshow(f);title('原图');
>> subplot(132),imshow(t);title('加入高斯噪声');
>> h=fspecial('gaussian');
>> g=filter2(h,t,'same');
>> subplot(131),imshow(f);title('原图');
>> subplot(132),imshow(t);title('加入高斯噪声');
>> subplot(133),imshow(uint8(g));title('高斯滤波');

空域高斯滤波的结果
频域和空域滤波的比较

1.2空域高通滤波器

f=imread('C:/experiment/test1.jpg');
>> f=rgb2gray(f);
>> f=im2double(f);
>> [height width R]=size(f);
>> for i=2:height-1
      for j=2:width-1
        R(i,j)=abs(f(i+1,j+1)-f(i,j))+abs(f(i+1,j)-f(i,j+1));
end
end
>> T=R;
>> for i=1:height-1
for j=1:width-1
if (R(i,j)<0.25)
R(i,j)=1;
else R(i,j)=0;
end
end
end
>> subplot(121),imshow(f);
>> subplot(122),imshow(R);

空域高通滤波对人物图像的结果
频域和空域滤波的比较
空域高通滤波对建筑物图像的结果
频域和空域滤波的比较

二、频域滤波器
频域滤波是图像经傅里叶变换以后,边缘和其他尖锐变化(如噪音)在图像的灰度级中主要处于傅里叶变换的高频部分。因此,平滑可以通过衰减指定图像傅里叶变换中高频成分的范围来实现。频域低通滤波的数学表达式为:G(u,v)= H(u,v)F(u,v)
其中F(u,v)是原始图像f(x,y)的傅里叶变换;G(u,v)是低通滤波处理后的图像g(x,y)的傅里叶变换;H(u,v)是频域低通滤波器的传递函数,选择不同的H(u,v) 可产生不同的平滑效果。

2.1频域低通滤波器

f=imread('C:/experiment/test1.jpg');
>> f=rgb2gray(f);
>> t=imnoise(f,'gaussian');
>> s=fftshift(fft2(t));
>> imshow(log(1+abs(s)),[]);
>> [M,N]=size(s);
>> d0=50;
>> n1=floor(M/2);
>> n2=floor(N/2);
>> for i=1:M
for j=1:N
d=sqrt((i-n1)*2+(j-n2)*2);
h(i,j)=1*exp(-1/2*(d^2/d0^2));
s(i,j)=h(i,j)*s(i,j);
end
end
>> s=ifftshift(s);
>> s=uint8(real(ifft2(s)));
>> imshow(s);
>> figure,imshow(t);

得到的图像加噪后的FFT,加噪后的图像,滤波后的图像如下:
频域和空域滤波的比较

2.2频域高通滤波器

f=imread('C:/experiment/test1.jpg');
f=rgb2gray(f);
>> F=double(f);
G=fft2(F);
G=fftshift(G);
[M,N]=size(G);
nn=2;
d0=5;
m=fix(M/2);
>>  n=fix(N/2);
>> for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
if(d==0)
h==0;
else
h=1/(1+0.414*(d0/d)^(2*nn));
end
result(i,j)=h*G(i,j);
end
end
>> result=ifftshift(result);
>> J2=ifft2(result);
>> J3=uint8(real(J2));
> subplot(121),imshow(f),title('原图像');
>> subplot(122),imshow(J3),title('高通滤波后的图像');

频域高通滤波对人物图像处理的结果
频域和空域滤波的比较
频域高通滤波对建筑物图像处理的结果
频域和空域滤波的比较
空域滤波和频域滤波的比较
通过比较以上空域、频域低通滤波器对同一图片的滤波效果可知,使用空间域滤波和频域滤波对存在图像噪声有一定的减弱作用和对边缘的检测效果。
而空域滤波和频域滤波之间有存在着各自的特点,从空域和频域低通滤波器对图片的滤波效果来看,空域滤波中,平滑滤波器算法简单,处理速度快,但在降低噪声的同时使图像产生模糊,特别是在边缘和细节处。而中值滤波器对椒盐噪声的抑制比较好,但对点,线较多的图像不太合适。空域低通滤波对椒盐噪声过滤效果较差,图像较为模糊。而在频域滤波中,去噪的同时将会导致图像边缘信息损失而使图像边缘模糊,并且存在振铃效应,而且计算量大,计算时间长。
从空域和频域高通滤波器对图片的滤波效果来看,空域滤波的算法比较简单,处理速度快,在锐化方面效果明显,线条突出;频域滤波中,算法复杂,计算慢,由些许振铃效应,图像效果显示比较平缓。