回 帖 发 新 帖 刷新版面

主题:求教:对图象进行低通滤波

小弟的毕业设计马上就要答辩了,现有一程序不会实现:
需要对原图象进行低通滤波(用butterworth,和理想低通滤波器),要求用matlab程序来实现。希望能够得到解答,谢谢了,时间很紧的就在这几天了。[em10]

回复列表 (共2个回复)

沙发

看这个  应该有很大的帮助的.....理想低通我按公式写的 正确性不敢保证哦  你自己看一下运行效果
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);  

板凳

真的是非常感谢,即使是运行不出来我想你编的这个程序对我也是 非常有用的!

我来回复

您尚未登录,请登录后再回复。点此登录或注册