频域低通滤波器(数字图像处理与机器视觉P210-P220)

来源:互联网 发布:qq会员永久软件 编辑:程序博客网 时间:2024/05/16 02:59

一、理想低通滤波
%%理想低通滤波
function out=imidealflpf(I,freq)
% imidealflpf 函数 构造理想的频域低通滤波器
% I参数 输入的灰度图像
% freq 参数 低通滤波器的截止频率
% 返回值 out -指定的理想低通滤波器
[M,N]=size(I);
out = ones(M,N);
for i=1:M
for j=1:N
if (sqrt(((i-M/2)^2+(j-N/2)^2))>freq)
out(i,j)=0;
end
end
end
end

二、高斯低通滤波
%% 高斯低通滤波
function out=imgaussflpf(I,sigma)
%imgaussflpf函数 构造频域高斯低通滤波器
%I参数 输入的灰度图像
%sigma参数 高斯函数的sigma参数

[M,N]=size(I);
out=ones(M,N);
for i=1:M
for j=1:N
out(i,j)=exp((-(i-M/2)^2-(j-N/2)^2)/(2*sigma^2));
end
end
end

三、对灰度图像进行频域滤波
function out=imfreqfilt(I,ff)
%imfreqfilt 函数 对灰度图像进行频域滤波
%参数I 输入的空域图像
%参数ff 应用的与原图等大的频域滤镜

if (ndims(I)==3)&&(size(I,3)==3)%RGB图像
I=rgb2gray(I);
end

if (size(I)~=size(ff))
msg1=sprintf(‘%s:滤镜与原图像不等大,检查输入’,mfilename);
msg2=sprintf(‘%s:滤波操作已经取消’,mfilename);
eid=sprintf(‘Images:%s:ImageSizeNotEquqal’,mfilename);
error(eid,’%s %s’,msg1,msg2);
end

%快速傅里叶变换
f=fft2(I);

%移动原点
s=fftshift(f);

%应用滤镜及反变换
out=s.*ff;%对应元素相乘实现频域滤波
out=ifftshift(out);
out=ifft2(out);

%求模值
out=abs(out);

%归一化以便显示
out=out/max(out(:));
end

0 0