function [f_filt]=freq_filter(f,h)
f=mat2gray(f); % 归一化 转化为double
h=double(h);
pad_h=zeros(size(f)+size(h)-1); % 在频率域滤波 空域的图像和滤波器都要填充,如果不填充会产生缠绕误差,填充后的大小
pad_f=pad_h; % 填充后滤波器的大小与填充后图像的大小是相同的
%但是填充零的话,相当于在空域乘以了一个距函数 即f(x,y)*rect(x,y),那么在频域等价于
%conv2(F(u,v),F(rect(x,y))[卷积定理] 众所周知 F(rect(x,y)) 是一个sinc(x,y) 函数
%sinc(x,y) 函数是向两边无限延伸的函数,造成有sinc 函数的高频分量导致的频率泄漏,泄漏会在图像上产生块效应
%填充零是一种急剧过渡,后来人们就使用各种窗,来平滑过渡
n=size(pad_h,1); %
m=size(pad_h,2);
nf1=fix((n-size(f,1))/2);
mf1=fix((m-size(f,2))/2);
nf2=fix((n+size(f,1))/2);
mf2=fix((m+size(f,2))/2);
np1=fix((n-size(h,1))/2);
mp1=fix((m-size(h,2))/2);
np2=fix((n+size(h,1))/2);
mp2=fix((m+size(h,2))/2);
pad_h(np1:np2-1,mp1:mp2-1)=pad_h(np1:np2-1,mp1:mp2-1)+h; % 填充算符(滤波器)
pad_f(nf1:nf2-1,mf1:mf2-1)=pad_f(nf1:nf2-1,mf1:mf2-1)+f;% 图像填充
f_filt=if
频率滤波(2)
最新推荐文章于 2023-10-04 22:11:34 发布
本文深入探讨了傅里叶变换在信号处理中的应用,详细阐述了如何利用MATLAB进行频率滤波操作,包括滤波器的设计与实现,以及不同类型的滤波效果分析。通过对滤波原理的解析,帮助读者更好地理解和掌握信号处理的关键技术。
摘要由CSDN通过智能技术生成