首先附上MATLAB代码:
% 读入RGB图像并将其转换成灰度图像 I=imread(‘pic12.jpg‘); I=rgb2gray(I); subplot(1,2,1); imshow(I) title(‘原始图像‘) % 数据类型转换,MATLAB不支持无符号数学的计算 f=double(I); % 傅里叶变换 k=fft2(f); g=fftshift(k); [M,N]=size(g); % 二阶巴特沃思高通滤波器,截止频率为25 nn=2; d0=25; 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==0) h=0; else h=1/(1+0.414*(d0/d)^(2*nn)); end result(i,j)=h*g(i,j); end end result=ifftshift(result); J2=ifft2(result); J3=uint8(real(J2)); subplot(1,2,2); imshow(J3); title(‘滤波之后的结果‘)
另外一种指数高通滤波器相关程序如下:
% 读入图像,并将其转换成灰度图像 I=imread(‘pic13.jpg‘); I=rgb2gray(I); subplot(1,2,1); imshow(I),title(‘原始图像‘); % 数据类型转换,MATLAB不支持无符号整型的数学计算 f=double(I); % 进行傅里叶变换 k=fft2(f); g=fftshift(k); [N1,N2]=size(g); % 构造一阶截止频率为5的指数高通滤波器 n=1; d0=5; u0=round(N1/2); v0=round(N2/2); for i=1:N1 for j=1:N2 d=sqrt((i-u0)^2+(j-v0)^2); h=exp(-(d0/d)^n); y(i,j)=h*g(i,j); end end % 进行傅里叶逆变换 y=ifftshift(y); E1=ifft2(y); % 显示处理结果 E2=uint8(real(E1)); subplot(1,2,2); imshow(E2),title(‘滤波后的结果‘);
时间: 2024-11-08 20:07:52