灰度图像的频率域滤波——理想低通滤波器(Matlab)

clc;
clear all;
close all;

%读入图像,并转换为double型
I=imread('D:\Gray Files\4-41.tif');
I_D=im2double(I);
%获得图像的高度和宽度
[M,N]=size(I_D);
%图像中心点
M0=M/2;
N0=N/2;
J=fft2(I_D);
J_shift=fftshift(J);

%%%%%%%=================理想低通滤波器(Ideal Lowpass)====================
%定义圆的半径,也可以理解为截断频率
r=160;
%沿图像中心取出(2n+1)*(2n+1)的矩形
filter_circle=J_shift(M0-r:M0+r,N0-r:N0+r);
%计算是否在半径为n的圆内,圆点为n+1,利用二象限的值,确定一、三、四象限
n2=r^2;
%获取矩阵的宽度
w=length(filter_circle);
for x=1:r+1
    x2=(x-r+1)^2;
    for y=1:r+1
        y2=(y-r+1)^2;
        if x2+y2>n2
           filter_circle(x,y)=0;
           filter_circle(w-x+1,y)=0;
           filter_circle(w-x+1,w-y+1)=0;
           filter_circle(x,w-y+1)=0;
        end
    end
end
J_shift=zeros(M,N);
J_shift(M0-r:M0+r,N0-r:N0+r)=filter_circle;

J=ifftshift(J_shift);
I_D_rep=ifft2(J);
imshow(I_D_rep,[]);

 

你可能感兴趣的:(图像处理)