1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 频域低通滤波器(数字图像处理与机器视觉P210-P220)

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

时间:2021-07-02 00:57:13

相关推荐

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

一、理想低通滤波

%%理想低通滤波

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。