文章目录
1.低通滤波器2.高通滤波器3.同态滤波器
图像的频域滤波增强是利用图像变换方法将原来图像空间中的图像以某种形式转换到其它空间中,然后利用该空间的特有性质再进行图像处理,最后转换回原来的图像空间中,从而得到处理后的图像。频域滤波增强的主要步骤如下:
(1)选择变换方法,将输入图像变换到频域空间;
(2)在频域空间中,根据目标设计一个转移函数并进行处理;
(3)将所得的结果用反变换得到图像的增强。
1.低通滤波器
图像在传递过程中,由于噪声主要集中在高频部分,为去除噪声改善图像质量,滤波器采用低通滤波器H(u,v)来抑制高频部分,通过低频部分,然后再进行傅里叶逆变换获得滤波图像,就可以达到平滑图像的目的。由卷积定理,低通滤波器数学表达式为 G(u,v)=F(u,v)H(u,v) 其中,F(u,v)为含有噪声的原图像的傅里叶变换域;H(u,v)为传递函数;G(u,v)为经低通滤波后输出图像的傅里叶变换。假定图像和信号成分在频率上可分离,且噪声表现为高频成分。低通滤波去除了高频成分,而低频信息基本无损失的通过。常用的低通滤波器有一下几种。 1.理想低通滤波器 设傅里叶平面上理想低通滤波器离开原点的截止频率为D0,则理想低通滤波器的传递函数为 式中, 表示点(u,v)到原点的距离,D0表示截止频率点到原点的距离。 2.巴特沃斯低通滤波器 n阶巴特沃斯低通滤波器的传递函数为 其特性是连续衰减,而不像理想滤波器那样陡峭变化。 3.梯形低通滤波器 梯形低通滤波器的转移函数为 4.指数低通滤波器 指数低通滤波器的转移函数的表达式为 对图像进行理想低通滤波
I=imread('tire.tif');
[f1,f2]=freqspace(size(I),'meshgrid');%生成频率序列矩阵
Hd=ones(size(I));
r=sqrt(f1.^2+f2.^2);
Hd(r>0.1)=0;%构造滤波器
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia01=ifft2(Ya);
Hd(r>0.2)=0;%构造滤波器
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia02=ifft2(Ya);
Hd(r>0.5)=0;%构造滤波器
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia05=ifft2(Ya);
subplot(221)
imshow(I)
title('原始图像')
subplot(222)
imshow(uint8(Ia01))
title('r为0.1时')
subplot(223)
imshow(uint8(Ia02))
title('r为0.2时')
subplot(224)
imshow(Ia05)
title('r为0.5时')
对图像进行巴特沃斯低通滤波
I=imread('cell.tif');
[f1,f2]=freqspace(size(I),'meshgrid');
D=0.4;%截止频率
n=1;
Hd=ones(size(I));
r=sqrt(f1.^2+f2.^2);
for i=1:size(I,1)
for j=1:size(I,2)
t=r(i,j)/(D*D);
Hd(i,j)=1/(t^n+1);%构造滤波函数
end
end
B=fft2(double(I));
B=fftshift(B);
Ba=B.*Hd;
Ba=ifftshift(Ba);
Ia1=ifft2(Ba);
n=2;
Hd=ones(size(I));
r=sqrt(f1.^2+f2.^2);
for i=1:size(I,1)
for j=1:size(I,2)
t=r(i,j)/(D*D);
Hd(i,j)=1/(t^n+1);%构造滤波函数
end
end
B=fft2(double(I));
B=fftshift(B);
Ba=B.*Hd;
Ba=ifftshift(Ba);
Ia2=ifft2(Ba);
n=6;
Hd=ones(size(I));
r=sqrt(f1.^2+f2.^2);
for i=1:size(I,1)
for j=1:size(I,2)
t=r(i,j)/(D*D);
Hd(i,j)=1/(t^n+1);%构造滤波函数
end
end
B=fft2(double(I));
B=fftshift(B);
Ba=B.*Hd;
Ba=ifftshift(Ba);
Ia6=ifft2(Ba);
subplot(221)
imshow(I)
title('原始图像')
subplot(222)
imshow(uint8(Ia1))
title('n为0时的滤波效果')
subplot(223)
imshow(uint8(Ia2))
title('n为13时的滤波效果')
subplot(224)
imshow(uint8(Ia6))
title('n为18时的滤波效果')
对图像进行指数低通滤波
clear all
clf
I =imread('gantrycrane.png');
[f1,f2]=freqspace(size(I),'meshgrid');
D=10/size(I,1);
Hd=ones(size(I));
r=f1.^2+f2.^2;
for i=1:size(I,1)
for j=1:size(I,2)
t=r(i,j)/(D*D);
Hd(i,j)=exp(-t);
end
end
E=fft2(double(I));
E=fftshift(E);
Ea=E.*Hd;
Ea=ifftshift(Ea);
Ia10=ifft2(Ea);
D=40/size(I,1);%D为40时
Hd=ones(size(I));
r=f1.^2+f2.^2;
for i=1:size(I,1)
for j=1:size(I,2)
t=r(i,j)/(D*D);
Hd(i,j)=exp(-t);
end
end
E=fft2(double(I));
E=fftshift(E);
Ea=E.*Hd;
Ea=ifftshift(Ea);
Ia40=ifft2(Ea);
D=100/size(I,1);%D为100时
Hd=ones(size(I));
r=f1.^2+f2.^2;
for i=1:size(I,1)
for j=1:size(I,2)
t=r(i,j)/(D*D);
Hd(i,j)=exp(-t);
end
end
E=fft2(double(I));
E=fftshift(E);
Ea=E.*Hd;
Ea=ifftshift(Ea);
Ia100=ifft2(Ea);
subplot(221)
imshow(I)
title('原始图像')
subplot(222)
imshow(uint8(Ia10))
title('D为10时')
subplot(223)
imshow(uint8(Ia40))
title('D为40时')
subplot(224)
imshow(uint8(Ia100))
title('D为100时')
利用各种低通滤波器对图像进行滤波
clear all
clf
[I,map]=imread('canoe.tif');
noisy=imnoise(I,'gaussian',0.02);
[M,N]=size(I);
F=fft2(noisy);
fftshift(F);
Dcut=100;
D0=150;
D1=250;
for u=1:M
for v=1:N
D(u,v)=sqrt(u^2+v^2);
BUTTERH(u,v)=1/(1+(sqrt(2)-1)*(D(u,v)/Dcut)^2);
EXPOTH(u,v)=exp(log(1/sqrt(2))*(D(u,v)/Dcut)^2);
if D(u,v) |