matlab二维高通滤波器,Matlab实现基于频域对二维信号的低通滤波

基于频域的低通滤波(二维信号——图像)

算法分析

傅里叶变换,将灰度图由f(x,y)->F(u,v)(空域转频域),得到图像在频域中的频谱(在频谱中低频信号分布在频谱的四个角落,其余部分为高频信号,这样的分布难以滤出高频或低频信号)

中心化,将频谱F(u,v)中心化,将低频点移到频谱中心(这样就可以通过设置一个截止频率D0,来过滤信号)

遍历频谱图,使用巴特沃兹低通滤波器和高斯高斯低通滤波器进行低通滤波,计算滤波器函数h(u,v)与F(u,v)的乘积G(u,v),直到频谱图遍历完

巴特沃兹低通滤波器和高斯低通滤波器,计算公式

反中心化, 对滤波后的频谱G(u,v)的低频点移回到频谱的四周

傅里叶反变换,将第4步的结果傅里叶反变换G(u,v)->g(x,y),取g(x,y)实数部分作为最后滤波之后的结果,虚数部分是浮点运算存在的误差造成的(虚数部分的绝对值很小,可以忽略不计),得到滤波后的空域图像

伪代码

x = 读入灰度图,若是对彩色图处理,将彩色图先转为灰度图

y = 图像加噪

f = 将y的数据类型转换成double,便于运算

F = 二维傅里叶变换(这里可以直接调用fft2函数),得到图像在频域里的频谱

F1 = 对频谱你中心化,将低频频谱由四周转换到中心,距离中心越远的频率越高

[M, N] = 求得频谱的大小

n = 巴特沃斯低通滤波器的阶数

D0 = 设置截止频率

m = 频谱中心行坐标

你可能感兴趣的:(matlab二维高通滤波器)