主题:求教:对图象进行低通滤波
			
 流浪的风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				
				真的是非常感谢,即使是运行不出来我想你编的这个程序对我也是 非常有用的!
							 
									
			
我来回复