martinawd
2009-09-22, 17:24
看到一个巴特沃斯低通滤波器的程序,程序代码如下
I=imread('7.bmp');
J=imread('5.bmp');
K=imabsdiff(I,J);
figure,imshow(K,[]);
L=rgb2gray(K);
f=double(L);
g=fft2(f);
g=fftshift(g);
[N1,N2]=size(g);
n=2;
d0=50;
n1=fix(N1/2);
n2=fix(N2/2);
for i=1:N1;
for j=1:N2;
d=sqrt((i-n1)^2+(j-n2)^2);
h=1/(1+0.414*(d/d0)^(2*n));
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
X2=ifft2(result);
X3=uint8(real(X2));
figure,imshow(X3)
我想请问的是巴特沃斯低通滤波器的函数式是H(u,v)=1/(1+(D/D0)^2n),但是程序中计算h的时候为什么多了个0.414
I=imread('7.bmp');
J=imread('5.bmp');
K=imabsdiff(I,J);
figure,imshow(K,[]);
L=rgb2gray(K);
f=double(L);
g=fft2(f);
g=fftshift(g);
[N1,N2]=size(g);
n=2;
d0=50;
n1=fix(N1/2);
n2=fix(N2/2);
for i=1:N1;
for j=1:N2;
d=sqrt((i-n1)^2+(j-n2)^2);
h=1/(1+0.414*(d/d0)^(2*n));
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
X2=ifft2(result);
X3=uint8(real(X2));
figure,imshow(X3)
我想请问的是巴特沃斯低通滤波器的函数式是H(u,v)=1/(1+(D/D0)^2n),但是程序中计算h的时候为什么多了个0.414