本文主要绘制常用滤波器的透视图,包括低通,带阻和带通滤波器。而这三类滤波器又各自包含了理想、巴特沃兹和高斯滤波器。如,低通滤波器就可以分为理想低通滤波器、n阶巴特沃兹滤波器和高斯低通滤波器。
第一:低通滤波器
1)理想低通滤波器
传递函数:
透视图结果:
代码:
a=100; b=100; U=0:a; V=0:b; M=length(U);N=length(V); D0=10;%W=200;%D0是频带的中心半径;W是频带的宽度 x1=50;y1=50; x0=-50;y0=-50; m=fix(M/2); n=fix(N/2); H=zeros(M,N); n=8; for u=1:M for v=1:N a=sqrt((U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50));%D(u,v)的值 if(a<=D0)%理想陷波器 H(u,v)=1; else H(u,v)=0; end end end %在绘制高斯曲面的时候,加上下述代码,显示得美观 figure; surf(U,V,H)
2)n阶巴特沃兹低通滤波器
传递函数:
透视图结果:
代码:
a=100; b=100; U=0:a; V=0:b; M=length(U);N=length(V); D0=10;%W=200;%D0是频带的中心半径;W是频带的宽度 x1=50;y1=50; x0=-50;y0=-50; m=fix(M/2); n=fix(N/2); H=zeros(M,N); n=8; for u=1:M for v=1:N a=sqrt((U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50));%D(u,v)的值 b=1+(a/D0)^2*n; H(u,v)=1/b;%尝试下,非理想滤波器,如巴特沃兹或者高斯 end end figure; surf(U,V,H) title('n=8')
3)高斯低通滤波器
传递函数:
透视图结果:
代码:
a=100; b=100; U=0:a; V=0:b; M=length(U);N=length(V); D0=10; %D0是频带的中心半径;W是频带的宽度 x1=50;y1=50; x0=-50;y0=-50; m=fix(M/2); n=fix(N/2); H=zeros(M,N); for u=1:M for v=1:N D1=((u-m-x0)^2+(v-n-y0).^2)^0.5; D2=((u-m+x0)^2+(v-n+y0).^2)^0.5; D11=((u-m-x1)^2+(v-n-y1).^2)^0.5; D21=((u-m+x1)^2+(v-n+y1).^2)^0.5; %高斯低通曲面 H(u,v) = (U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50); end end %在绘制高斯曲面的时候,加上下述代码,显示得美观 fangcha=50; H = -H/(2*fangcha); H = exp(H) / (sqrt(2*pi) * sqrt(fangcha)); surf(U,V,H)
1)理想带阻滤波器
传递函数:
透视图结果:
代码:
% %绘制函数剖面线 % [u,v] = meshgrid(-400:400, -400:400); a=100;%图像的尺寸,长 b=100;%图像的尺寸,宽 U=0:a; V=0:b; M=length(U);N=length(V); D0=30;%W=200;%D0是频带的中心半径;W是频带的宽度 x1=50;y1=50; x0=-50;y0=-50; m=fix(M/2);n=fix(N/2); H=zeros(M,N); % n=8; W=10;%W是频带的宽度 for u=1:M for v=1:N % D1=((u-m-x0)^2+(v-n-y0).^2)^0.5; % D2=((u-m+x0)^2+(v-n+y0).^2)^0.5; % D11=((u-m-x1)^2+(v-n-y1).^2)^0.5; % D21=((u-m+x1)^2+(v-n+y1).^2)^0.5; % % %设计带阻滤波器 % H(u,v)=1-exp(-0.5*((D(u,v)^2-D0^2)/(D(u,v)*W))^2); D=sqrt((U(u) - m) .* (U(u)-m) + (V(v) - n) .* (V(v) - n));%D(u,v)的值 if((D<D0-W/2) || (D>D0+W/2))%理想带阻滤波器 H(u,v)=1; else H(u,v)=0; end % H(u,v)=1-exp(-0.5*((D1*D2/D0^2)));%尝试下,非理想滤波器,如巴特沃兹或者高斯 % a=sqrt((U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50));%D(u,v)的值 % b=1+(a/D0)^2*n; % H(u,v)=1/b;%尝试下,非理想滤波器,如巴特沃兹或者高斯 end end %在绘制高斯曲面的时候,加上下述代码,显示得美观 % fangcha=50; % H = -H/(2*fangcha); % H = exp(H) / (sqrt(2*pi) * sqrt(fangcha)); figure; surf(U,V,H) title('理想带阻滤波器:D0=30,W=10') % [X,Y] = meshgrid(-2:.2:2, -2:.2:5); % Z = X .* exp(-X.^2 - Y.^2); % surf(X,Y,Z)
传递函数:
透视图结果:
代码:
% %绘制函数剖面线 % [u,v] = meshgrid(-400:400, -400:400); a=100;%图像的尺寸,长 b=100;%图像的尺寸,宽 U=0:a; V=0:b; M=length(U);N=length(V); D0=30;%W=200;%D0是频带的中心半径;W是频带的宽度 x1=50;y1=50; x0=-50;y0=-50; m=fix(M/2);n=fix(N/2); H=zeros(M,N); n1=1;%巴特沃兹的阶数 W=10;%W是频带的宽度 for u=1:M for v=1:N % D1=((u-m-x0)^2+(v-n-y0).^2)^0.5; % D2=((u-m+x0)^2+(v-n+y0).^2)^0.5; % D11=((u-m-x1)^2+(v-n-y1).^2)^0.5; % D21=((u-m+x1)^2+(v-n+y1).^2)^0.5; % % %设计带阻滤波器 % H(u,v)=1-exp(-0.5*((D(u,v)^2-D0^2)/(D(u,v)*W))^2); D=sqrt((U(u) - m) .* (U(u)-m) + (V(v) - n) .* (V(v) - n));%D(u,v)的值 % if((D<D0-W/2) || (D>D0+W/2))%理想带阻滤波器 % H(u,v)=1; % else % H(u,v)=0; % end temp=1+(D*W/(D^2-D0^2))^2*n1; H(u,v)=1/temp; % H(u,v)=1-exp(-0.5*((D1*D2/D0^2)));%尝试下,非理想滤波器,如巴特沃兹或者高斯 % a=sqrt((U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50));%D(u,v)的值 % b=1+(a/D0)^2*n; % H(u,v)=1/b;%尝试下,非理想滤波器,如巴特沃兹或者高斯 end end %在绘制高斯曲面的时候,加上下述代码,显示得美观 % fangcha=50; % H = -H/(2*fangcha); % H = exp(H) / (sqrt(2*pi) * sqrt(fangcha)); figure; surf(U,V,H) title('1阶巴特沃兹带阻滤波器:D0=30,W=10') % [X,Y] = meshgrid(-2:.2:2, -2:.2:5); % Z = X .* exp(-X.^2 - Y.^2); % surf(X,Y,Z)3)高斯带阻滤波器
传递函数:
透视图:
代码:
% %绘制函数剖面线 % [u,v] = meshgrid(-400:400, -400:400); a=100;%图像的尺寸,长 b=100;%图像的尺寸,宽 U=0:a; V=0:b; M=length(U);N=length(V); D0=30;%W=200;%D0是频带的中心半径;W是频带的宽度 x1=10;y1=10; u0=-20;v0=20;%(u0,v0)的值对应移动中心 m=fix(M/2);n=fix(N/2); H=zeros(M,N); n1=2;%巴特沃兹的阶数 W=10;%W是频带的宽度 for u=1:M for v=1:N % D1=((u-m-u0)^2+(v-n-v0).^2)^0.5;%() % D2=((u-m+u0)^2+(v-n+v0).^2)^0.5; % D1=((U(u)-m-u0)^2+(V(v)-n-v0)^2)^0.5;%() % D2=((U(u)-m+u0)^2+(V(v)-n+v0)^2)^0.5; % D11=((u-m-x1)^2+(v-n-y1).^2)^0.5; % D21=((u-m+x1)^2+(v-n+y1).^2)^0.5; % % %设计带阻滤波器 % H(u,v)=1-exp(-0.5*((D(u,v)^2-D0^2)/(D(u,v)*W))^2); % D=sqrt((U(u) - m) .* (U(u)-m) + (V(v) - n) .* (V(v) - n)); D=sqrt((U(u) - m) .* (U(u)-m) + (V(v) - n) .* (V(v) - n));%D(u,v)的值 % if((D<D0-W/2) || (D>D0+W/2))%理想带阻滤波器 % H(u,v)=1; % else % H(u,v)=0; % end temp=-0.5*((D^2-D0^2)/(D*W))^2; H(u,v)=1-exp(temp); % H(u,v)=1-exp(-0.5*((D1*D2/D0^2)));%尝试下,非理想滤波器,如巴特沃兹或者高斯 % a=sqrt((U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50));%D(u,v)的值 % b=1+(a/D0)^2*n; % H(u,v)=1/b;%尝试下,非理想滤波器,如巴特沃兹或者高斯 end end %在绘制高斯曲面的时候,加上下述代码,显示得美观 % fangcha=50; % H = -H/(2*fangcha); % H = exp(H) / (sqrt(2*pi) * sqrt(fangcha)); figure; surf(U,V,H) title('高斯带阻滤波器:D0=30,W=10')
第三:陷波器
1)理想陷波器
传递函数:
透视图:
代码:
% %绘制函数剖面线 % [u,v] = meshgrid(-400:400, -400:400); a=100;%图像的尺寸,长 b=100;%图像的尺寸,宽 U=0:a; V=0:b; M=length(U);N=length(V); D0=10;%W=200;%D0是频带的中心半径;W是频带的宽度 x1=10;y1=10; u0=-30;v0=30;%(u0,v0)的值对应移动中心 m=fix(M/2);n=fix(N/2); H=zeros(M,N); n1=2;%巴特沃兹的阶数 W=10;%W是频带的宽度 for u=1:M for v=1:N % D1=((u-m-u0)^2+(v-n-v0).^2)^0.5;%() % D2=((u-m+u0)^2+(v-n+v0).^2)^0.5; D1=((U(u)-m-u0)^2+(V(v)-n-v0)^2)^0.5;%() D2=((U(u)-m+u0)^2+(V(v)-n+v0)^2)^0.5; % D11=((u-m-x1)^2+(v-n-y1).^2)^0.5; % D21=((u-m+x1)^2+(v-n+y1).^2)^0.5; % % %设计带阻滤波器 % H(u,v)=1-exp(-0.5*((D(u,v)^2-D0^2)/(D(u,v)*W))^2); % D=sqrt((U(u) - m) .* (U(u)-m) + (V(v) - n) .* (V(v) - n)); % D=sqrt((U(u) - m) .* (U(u)-m) + (V(v) - n) .* (V(v) - n));%D(u,v)的值 if((D1<=D0) || (D2<=D0))%理想带阻滤波器 H(u,v)=0; else H(u,v)=1; end % temp=-0.5*((D^2-D0^2)/(D*W))^2; % H(u,v)=1-exp(temp); % H(u,v)=1-exp(-0.5*((D1*D2/D0^2)));%尝试下,非理想滤波器,如巴特沃兹或者高斯 % a=sqrt((U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50));%D(u,v)的值 % b=1+(a/D0)^2*n; % H(u,v)=1/b;%尝试下,非理想滤波器,如巴特沃兹或者高斯 end end %在绘制高斯曲面的时候,加上下述代码,显示得美观 % fangcha=50; % H = -H/(2*fangcha); % H = exp(H) / (sqrt(2*pi) * sqrt(fangcha)); figure; surf(U,V,H) title('理想带阻滤波器:D0=10,u0=-30;v0=30') % [X,Y] = meshgrid(-2:.2:2, -2:.2:5); % Z = X .* exp(-X.^2 - Y.^2); % surf(X,Y,Z)
2)n阶巴特沃兹陷波器:
传递函数:
透视图:
代码:
a=100;%图像的尺寸,长 b=100;%图像的尺寸,宽 U=0:a; V=0:b; M=length(U);N=length(V); D0=20;%W=200;%D0是频带的中心半径;W是频带的宽度 x1=10;y1=10; u0=-30;v0=30;%(u0,v0)的值对应移动中心 m=fix(M/2);n=fix(N/2); H=zeros(M,N); n1=2;%巴特沃兹的阶数 W=10;%W是频带的宽度 for u=1:M for v=1:N D1=((U(u)-m-u0)^2+(V(v)-n-v0)^2)^0.5; D2=((U(u)-m+u0)^2+(V(v)-n+v0)^2)^0.5; temp=1+(D0^2/(D1*D2))^n1; H(u,v)=1/temp; end end figure; surf(U,V,H) title('2阶巴特沃兹陷波器:D0=20,u0=-30;v0=30')
3)高斯陷波器
传递函数:
透视图:
代码:
% %绘制函数剖面线 % [u,v] = meshgrid(-400:400, -400:400); a=100;%图像的尺寸,长 b=100;%图像的尺寸,宽 U=0:a; V=0:b; M=length(U);N=length(V); D0=10;%W=200;%D0是频带的中心半径;W是频带的宽度 x1=10;y1=10; u0=-20;v0=20;%(u0,v0)的值对应移动中心 m=fix(M/2);n=fix(N/2); H=zeros(M,N); n1=2;%巴特沃兹的阶数 W=10;%W是频带的宽度 for u=1:M for v=1:N % D1=((u-m-u0)^2+(v-n-v0).^2)^0.5;%() % D2=((u-m+u0)^2+(v-n+v0).^2)^0.5; D1=((U(u)-m-u0)^2+(V(v)-n-v0)^2)^0.5;%() D2=((U(u)-m+u0)^2+(V(v)-n+v0)^2)^0.5; % D11=((u-m-x1)^2+(v-n-y1).^2)^0.5; % D21=((u-m+x1)^2+(v-n+y1).^2)^0.5; % % %设计带阻滤波器 % H(u,v)=1-exp(-0.5*((D(u,v)^2-D0^2)/(D(u,v)*W))^2); % D=sqrt((U(u) - m) .* (U(u)-m) + (V(v) - n) .* (V(v) - n));%D(u,v)的值 % if((D<D0-W/2) || (D>D0+W/2))%理想带阻滤波器 % H(u,v)=1; % else % H(u,v)=0; % end temp=-0.5*(D1*D2/D0^2); H(u,v)=1-exp(temp); % H(u,v)=1-exp(-0.5*((D1*D2/D0^2)));%尝试下,非理想滤波器,如巴特沃兹或者高斯 % a=sqrt((U(u) - 50) .* (U(u)-50) + (V(v) - 50) .* (V(v) - 50));%D(u,v)的值 % b=1+(a/D0)^2*n; % H(u,v)=1/b;%尝试下,非理想滤波器,如巴特沃兹或者高斯 end end %在绘制高斯曲面的时候,加上下述代码,显示得美观 % fangcha=50; % H = -H/(2*fangcha); % H = exp(H) / (sqrt(2*pi) * sqrt(fangcha)); figure; surf(U,V,H) title('高斯陷波器:D0=10,u0=-20;v0=20') % [X,Y] = meshgrid(-2:.2:2, -2:.2:5); % Z = X .* exp(-X.^2 - Y.^2); % surf(X,Y,Z)