数字图像处理完整MATLAB代码在我的资源可以看到,为方便下载,下面是百度网盘资源:

链接:https://pan.baidu.com/s/17S7PZJwwvb3PFMFVxqEY5w 
提取码:HUAT

滤波代码:

function l_f = low_filter(img,fre)
%此函数用于对图像进行滤波
%主要原理为在图像平移后频谱图进行圈定范围(面积)操作,面积外的设为0(滤除高频成分)
%img为图像平移后频谱图,fre为圈定的频谱范围
[a,b] = size(img);
a0 = round(a/2);
b0 = round(b/2);
for i=1:afor j=1:bdistance = (i-a0)^2+(j-b0)^2;if distance<freh = 1;elseh = 0;endl_f(i,j) = h*img(i,j);end
endend

一、灰度图像滤波

具体处理过程如下:

1.Imread函数读取图像数据

2.RGB图像转换为灰度二维图

3.调用fft2函数对灰度二维图像进行DFT处理

4.调用abs函数取得频谱采用log处理,进行灰度压缩

5.调用fftshift函数中心化处理

6.利用理想低通滤波器low_filter(现有多种低通滤波器,自己可以进行选择设计)对图像频谱进行滤波,滤除高频成分

在我看来, 这里的低通滤波器设计原理其实很简单,就是在步骤5处理后,图像频谱图的分布规律为:图像的低频信息位于图像频谱图的中心,自图像频谱图中心向外延申,图像所包含的信息的频率越高(而噪声的频率也很高),这也就可以通过保留靠近频谱图中心的部分(图像包含的低频信息),舍去远离频谱图中心的部分(高频噪声),滤除图像中的噪声。下面是圆形低通滤波器的代码,以及滤波前后的图像频谱图。

        

(1).步骤5处理后的图像频谱图           (2).理想低通滤波器low_filter滤除高频后的图像频谱图

7.调用ifftshift函数去中心化处理

8.对输出结果ifft2反变化得到滤波后的图像

下面是滤波的过程结果,左侧滑块功能为调节低通滤波器的滤波范围。

global My_GUI_handles;
fre=get(hObject,'Value');
set(handles.text_l_f1,'String',num2str(fre));axes(My_GUI_handles.axes_dst);
img_src=getimage(My_GUI_handles.axes_src);
img_src=rgb2gray(img_src);%转换为灰度二维
img_src1=double(img_src);  %数据类型转换
% % img_src2=fft2(img_src1);%快速傅里叶变换
% % img_src3=fftshift(img_src2);%频谱平移
% % img_src4=abs(img_src3);%计算I的幅度谱img_src2=abs(fftshift(fft2(img_src1)));
imshow(log(img_src2),[]);
title('图像傅里叶变换取对数所得频谱');axes(My_GUI_handles.axes_src1);
[a,b] = size(img_src1);
s_max = min(a/2,b/2);
s_max = s_max^2;
set(handles.slider_l_f1,'Max',double(s_max));img_src5= low_filter(fftshift(fft2(img_src1)),fre);
imshow(log(abs(img_src5)),[]);
title('低通滤波频谱');axes(My_GUI_handles.axes_dst1);
new_img = uint8(real(ifft2(ifftshift(img_src5))));
imshow(new_img,[]);
title('低通滤波后的图像');set(handles.slider_l_f2,'Enable','off');

二、彩色图像(RGB)滤波

我们知道一般对于RGB图像频域滤波都需要先转换成灰度二维图,才能进行频域低通滤波,这也导致最终显示的图像也只能是灰度图。分析其原因可知,这是由于我们对于图像处理需要用到fft2等函数造成的。那么如何才能对RGB图像进行频域滤波后,让它显示为RGB图像呢?在参考了网上一篇北京交通大学王潇的《利用MATLAB对彩色图像进行低通滤波》的文章后,得知可以对图像的R、G、B图像分别进行上述滤波后,再将R、G、B滤波后的图合成一张显示出来,以此达到对RGB图像进行频域滤波后依然可以显示滤波后的RGB图像。具体过程如下。

1.Imread函数读取图像

2.将RGB图像拆分为R、G、B三张单色图

3.调用fft2函数对R、G、B单色图分别进行进行DFT处理

4.调用abs函数取得频谱采用log处理,进行灰度压缩

5.调用fftshift函数中心化处理

6.利用理想低通滤波器low_filter对图像频谱进行滤波,滤除高频成分

7.调用ifftshift函数去中心化处理

8.对输出结果ifft2反变化得到滤波后的R、G、B图像

9.将分别处理后的R、G、B图像合成为一幅图像,然后进行显示,得到频域滤波后的RGB图像

下面是滤波的过程结果,第一行第二列和第二行第一列分别为:R单色图滤波后的频谱图、G单色图滤波后的频谱图。左侧滑块功能为调节低通滤波器的滤波范围。

global My_GUI_handles;
fre=get(hObject,'Value');
set(handles.text_l_f2,'String',num2str(fre));axes(My_GUI_handles.axes_dst);
img_src=getimage(My_GUI_handles.axes_src);
[a,b] = size(img_src);
s_max = min(a/2,b/2);
s_max = s_max^2;
set(handles.slider_l_f2,'Max',double(s_max));for i=1:3A=img_src(:,:,i);B=double(A);C= low_filter(fftshift(fft2(B)),fre);D = uint8(real(ifft2(ifftshift(C))));img_src(:,:,i)=D;
end
img_src_R= low_filter(fftshift(fft2(double(img_src(:,:,1)))),fre);
imshow(log(abs(img_src_R)),[]);
axes(My_GUI_handles.axes_src1);
img_src_G= low_filter(fftshift(fft2(double(img_src(:,:,2)))),fre);
imshow(log(abs(img_src_G)),[]);
axes(My_GUI_handles.axes_dst1);
imshow(img_src);
set(handles.slider_l_f1,'Enable','off');

MATLAB图像的频域低通滤波(灰度图像滤波+彩色图像滤波)相关推荐

  1. matlab 图像 幅度谱 低通滤波_数字图像处理期末复习2018-12-21

    数字图像处理期末复习2018-12-21 愉快先生 0.204 · 字数 5547 · 阅读 1834 2018-12-22 19:35 (数字图像冈萨雷斯第二版教材) 一.基本原理 图像的读取.存储 ...

  2. 图像算法四:【图像增强--频率域】傅里叶变换、快速傅里叶变换、频域滤波、频域低通滤波、频域高通滤波

    频率域滤波与空间域滤波殊途同归,空间域图像增强与频率域图像增强是两种截然不同的技术,实际上在相当程度上说它们是在不同的领域做相同的事情,只是有些滤波更适合在空间域完成,而有些则更适合在频率域中完成. ...

  3. 数字图像处理笔记(七):频域低通滤波平滑图像

    1 - 傅里叶变换 在前面我们对空间滤波做了重点的研究,现在我们来介绍一下涉及频率域中的各种滤波技术.图像从空间域转换到频率域使用的是二维傅里叶变换,一个像素为M*N的图像f(x,y)进行傅里叶变换得 ...

  4. matlab 二维高斯滤波 傅里叶_机器视觉 03.2 频域低通滤波

    本文介绍常见三种频域低通滤波器:理想低通.布特沃斯.高斯低通滤波器 (1)理想低通滤波器(ILPF) 小于截止频率的全部保留 其中 表示点(u,v)到频域原点的距离,D0表示截止频率. 对图像分别用不 ...

  5. matlab lc滤波,基于MATLAB的LC二阶低通滤波网络频域分析

    [收稿日期]2009207223 [作者简介]周习祥(19792),男,2001年大学毕业,硕士,讲师,现主要从事DC /DC 电源.分布式控制系统方面的研究工作. 基于MA T LAB 的LC 二阶 ...

  6. 基于MATLAB实现LFP(低通滤波)和MF(匹配滤波)

    文章目录 前言 一.理论部分 二.仿真 1.生成2PAM信号 2.模拟信号的匹配滤波仿真 3.LFP的仿真 4.MF的仿真 三.拓展知识 1."假"的[1,1,1,0,1,0,0] ...

  7. lpf去镜像 matlab,二阶反向型低通有源滤波器(LPF) 的传递函数,怎么推导呀?谢谢各位大侠了(在线等)...

    回复[3楼]smartzou  笨笨 ----------------------------------------------------------------------- matlab有fd ...

  8. 数字图像处理频域滤波实现低通与高通滤波(包含matlab代码)

    低通滤波器 理想低通滤波 作用:保留频谱图中圆内低频分量,截断频谱图中圆外高频分量 函数表示: 假设频谱中心在 (M/2,N/2)处,则任意频谱成分(u,v) 到中心(原点)的距离D(u,v) 定义为 ...

  9. 读入一幅图像,对图像分别进行高斯低通、巴特沃兹低通、高斯高通和巴特沃兹高通频域滤波,比较其锐化和平滑效果。

    ↵ 1.高斯低通 二维高斯低通滤波器定义如下: D0为截止频率与原点的距离,D(u,v)是点(u,v)与原点的距离. 图像表示: 读入图片并得到频谱图,后续搭建高斯低通滤波器如下. [m,n]=siz ...

最新文章

  1. zsh 每次打开Terminal都需要source bash_profile问题
  2. ARM汇编:加载和存储指令集(六大类)---LDR(ADR)、LDRB、LDRH、STR、STRB、STRH
  3. django 获取环境变量_Django 安装和配置环境变量
  4. 关于相对布局RelativeLayout的各种属性介绍
  5. lacp静态和动态区别_lacp静态与动态区别
  6. 计算机语言平均数怎么算,使用python怎么求三个数的平均值
  7. java 线程分组_Java多线程可以分组,还能这样玩!
  8. js按钮频繁提交解决方案:
  9. PHP+Mysql+jQuery实现发布微博程序(PHP篇)
  10. LIO-SAM探秘之文章索引
  11. word中设置多级标题
  12. 第九讲 Linux I2C子系统及mma8653重力传感器驱动编写
  13. Excel合并单元格如何分组排序?
  14. java开发工具(3)你真的会用IDEA么?(下)keyMap、Project Structure功能介绍
  15. PS改变图像尺寸和分辨率保存为tif图片颜色变成黑色-解决办法
  16. 痞子衡职场经验与感悟分享 - 索引
  17. 巨头押注的全屋智能,正在驱动海信、华为、小米们「自我革命」
  18. openlayers摸爬滚打 1.入门
  19. oracle的几个服务含义,oracle 的几个服务
  20. SaaS、CRM、OA、ERP、HR、进销存究竟是什么?

热门文章

  1. 【C#公共帮助类】枚举独特类
  2. 原生Winows7系统添加USB3.0的驱动
  3. WebView加载失败或网络异常时,替换WebView的错误界面;
  4. 【即时通讯软件系统——开题报告 分享(仅供参考呀)】
  5. mac 重置系统关机启动参数,重置电脑闪存数据
  6. 51单片机基础——串口通信发送字符ab控制流水灯
  7. Elastic:使用 Elastic Stack 来监督系统日志及指标
  8. 安装Ubuntu VMware Workstation 不可恢复错误
  9. kafka linux 脚本测试,kafka shell命令操作
  10. 仿B站首页头部动画的实现