主题:求教:对图象进行低通滤波
流浪的风2007
[专家分:0] 发布于 2007-06-05 17:25:00
小弟的毕业设计马上就要答辩了,现有一程序不会实现:
需要对原图象进行低通滤波(用butterworth,和理想低通滤波器),要求用matlab程序来实现。希望能够得到解答,谢谢了,时间很紧的就在这几天了。[em10]
回复列表 (共2个回复)
沙发
matlab爱好者 [专家分:30] 发布于 2007-06-08 19:58:00
看这个 应该有很大的帮助的.....理想低通我按公式写的 正确性不敢保证哦 你自己看一下运行效果
I=imread('123.gif');
imshow(I);
f=double(I);
g=fft2(f);
g=fftshift(g);
[M,N]=size(g);
nn=2; % 二阶巴特沃斯(Butterworth)低通滤波器
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);
h=1/(1+0.414*(d/d0)^(2*nn));
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
J2=ifft2(result);
J3=uint8(real(J2));
Y=imresize(J3,[200 200] )
imwrite(J3,'a.bmp');
figure,imshow(Y);
I=imread('123.gif');
imshow(I);
f=double(I);
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>=d0)
h=0;
else
h=1; % 计算低通滤波器传递函数
end
g(i,j)=h*g(i,j);
end
end
g=ifftshift(g);
J2=ifft2(g);
J3=uint8(real(J2));
figure,imshow(J3);
板凳
流浪的风2007 [专家分:0] 发布于 2007-06-10 08:05:00
真的是非常感谢,即使是运行不出来我想你编的这个程序对我也是 非常有用的!
我来回复