1、武汉理工大学 Matlab 课程设计 报告 I Matlab 课程设计 任务书 学生姓名: 专业班级: 指导教师: 工作单位: 武汉理工大学 题 目 : 基于 Matlab 的二维信号滤波设计 基础强化训练目的 1理论目的 数字信号处理课程设计的目的之一是为了巩固课堂理论学习,并能用所学理论知识正确分析数字信号处理的基本问题和解释数字信号处理的基本现象。 2实践 目的 数字信号处理课程设计的目的之二是通过设计具体的各种滤波器掌握滤波器设计方法和步骤。 训练内容和要求 利用 MATLAB图像处理工具箱,( 1)设计中值滤波器( medfilt2)对二维信号(数字图像)滤波器,并且显示原图像和滤波
2、结果。( 2)对二维信号(数字图像)进行 FFT,然后进行低通滤波(即去掉高频分量),然后再反变换,得到滤波图像,然后反过来,进行高通滤波。 初始条件 1 MATLAB 软件 2 数字信号处理与图像处理基础知识 时间安排: 第 18 周,安排任务 第 18 周,仿真设计 第 18 周,完成 指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日 武汉理工大学 Matlab 课程设计 报告 II 目录 摘 要 . III Abstract . IV 1 二维信号数字图像 数据 采集 . 1 1.1 图像的选取 . 1 1.2 MATLAB 读取方法 . 1 1.2.1 编辑 M 文件
3、 . 1 1.2.2 图像的读取 . 2 1.2.3 查看图像的格式 . 3 1.2.4 灰度值的获取 . 4 2 中值滤波 处理 . 5 2.1 中值滤波 . 5 2.1.1 中值滤波 定义及原理 . 5 2.1.2 中值滤波的实现方法 . 5 2.2 中值滤波器( medfilt2)对二维信号(数字图像)滤波 . 5 3 快速 傅立叶变化 ( FFT) . 7 3.1 快速傅立叶变化( FFT) 的概念 . 7 3.1.1 快速傅立叶变化( FFT)原理及计算公式 . 7 3.1.2 函数应用 . 8 3.1.3 离散傅立叶逆变换( IFFT) . 9 3.2 二维信号(数字图像) 的 F
4、FT 及 其 逆变换 .10 3.3 对变换后的图像的说明 . 11 4 低通滤波处理 . 12 4.1 低通滤波器介绍 .12 4.1.1 巴特沃 斯滤波器 .12 4.1.2 切比雪夫滤波器 .13 4.2 二维信号(数字图像)的低通滤波处理 .13 4.3 结果分析 .16 5 高通滤波处理 . 17 5.1 高通滤波器介绍 .17 5.2 二维信号(数字图像)的高通滤波处理 .17 5.3 结果分析 .19 6 总结与体会 . 20 7 参考文献 . 21 武汉理工大学 Matlab 课程设计 报告 III 摘 要 MATLAB 是一种直观、高效的计算机语言 ,同时又是一个科学计算平台
5、。它 为数据分析和数据可视化、 算法和应用程序开发提供了最核心的数学和高级图形 工具。 根据它提供的 500 多个数学和工程函数,工程技术人员和科学工作者可以 在它的集成环境中交互或编程以完成各自的计算。 本次课程设计 主要是 利用 MATLAB图像处理工具箱, 对二维信号(数字图像)进行快速傅立叶变换 与反变换,并且 设计中值滤波器 、 低通滤波器和高通滤波器 对二维信号(数字图像) 进行 滤波 。 关键词: MATLAB 二维 数字图像处理 数字滤波器 中值滤波器 低通 滤波 高通 滤波 武汉理工大学 Matlab 课程设计 报告 IV Abstract MATLAB is an intu
6、itive, efficient computer language, is also a scientific computing platform. It is a data analysis and data visualization, algorithm and application development provides the core mathematics and advanced graphics tools. According to it, providing more than 500 mathematics and engineering functions,
7、engineering and technical personnel and scientific workers in its integrated environment interaction or programming to complete their calculation The curriculum design, mainly by using MATLAB-Image Processing Toolbox, for two-dimensional signal (digital images) for fast Fourier transform and inverse
8、 transform, and the design of median filter, low-pass filters and high-pass filter on the two-dimensional signal (digital image) for filtering. Key words:MATLAB two-dimensional digital image processing digital filter Median Filter Low-pass filter high-pass filter 武汉理工大学 Matlab 课程设计 报告 1 二维信号数字图像 数据
9、采集 1.1 图像的选取 选取一张图片 , 如图 1所示, 满足像素要求,但图像为三维彩图,不是灰度图,在下面的过程中会将彩图转换为灰度图。 图 1 选取的需要处理的原图 1.2 MATLAB 读取方法 1.2.1 编辑 M 文件 MATLAB 是解释型语言, 就是说 MATLAB 命令行中敲入的命令在当前 MATLAB 进程中被解释运行。有两种方法可以使 MATLAB 的力量得到扩展 脚本和函数。 这两种方法都用像 emacs 一样的文本编辑器中编写的 m 文件(因为扩展名是 .m所以这样命名, m文件还称点 m 文件)。 m 文件的好处在于它可以保存命令,还可以轻易地修改命令而无需重新敲入
10、整个命令行。 新建 m文件的方法为 File-New-M-File 武汉理工大学 Matlab 课程设计 报告 图 2 新建 M 文件的方法图 1.2.2 图像的读取 利用函数 imread()可完成图形图像文件的读取,语法: A=imread(filename,fmt) X,map=imread(filename,fmt) .=imread(filename) .=imread(filename,idx) (只对 TIF 格式的文件) .=imread(filename,ref) (只对 HDF 格式的文件) 通常,读取的大多数图像均为 8bit,当这些图像加 载到内存中时, Matlab
11、就将其存放在类 uint8 中。此为 Matlab 还支持 16bit 的 PNG 和 TIF 图像,当读取这类文件时, Matlab就将其存贮在 uint16 中。对于索引图像,即使图像阵列的本身为类 uint8 或类 uint16, imread函数仍将颜色映象表读取并存贮到一个双精度的浮点类型的阵列中。 MATLAB 代码为: P=imread(F:猫咪 .jpg); %读取图像路径 imshow(P);%显示图像 title(原图 ); 图 3 MATLAB 中 读取图像的效果图 武汉理工大学 Matlab 课程设计 报告 1.2.3查看图像的格式 使用 MATLAB 命令 isgra
12、y()判断图像是否为灰度图,如果是灰度图将返回为 1,不是将返回 0。 我所选图的图片用 isgray()判断后返回值为 0,证明不是灰度图,不符合题目的要求,所以要使用 rgb2gray()命令实现 RGB 图像到灰度图像的转化,转化后在使用命令 isgray()判断返回值为 1,证明已经转换成灰度图了。 MATLAB 命令: f=rgb2gray(P); isgray(f) 再用 MATLAB 命令: figure imshow(f) ; title(灰 白图像 ) 显示原图变成的灰度图 像 如图 4: 图 4 原图变为灰度图 像 武汉理工大学 Matlab 课程设计 报告 1.2.4 灰
13、度值的获取 直接在 MATLAB 命令行中 输入存储图像矩阵的名字 P即可得到灰度矩阵: 由于矩阵较大,因此只选取前 25 行如图 5所示 : 图 5 灰度矩阵图 武汉理工大学 Matlab 课程设计 报告 2 中值滤波 处理 2.1 中值滤波 2.1.1中值滤波 定义及原理 1) 中值滤波法是一种非线性平滑技术,它将每一象素点的灰度值设置为该点某邻域窗口内的所有象素点灰度值的中值 . 2) 中值滤波原理 中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值 滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个拎域中各点值的中值代替,让周围的像素值接近的真实值,从而消
14、除孤立的噪声点。方法是去某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为 g( x,y) =medf(x-k,y-l),(k,l W) ,其中 ,f(x,y), g(x,y)分别为原始图像和处理后图像。 W 为二维模板,通常为 2*2, 3*3 区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。 2.1.2 中值滤波的实现方法 1) 通过从图像中的某个采样窗口取出奇数个数据进行排序 ; 2) 用排序后的中值取代要处理的数据即可 。 中值滤波法对消除椒盐噪音非常有效,在光学测量条纹图象的相位分析处理方法中有特殊作用,
15、但在条纹中心分析方法中作用不大 . 中值滤波在图像处理中 ,常用于用来保护边缘信息 ,是经典的平滑噪声的方法 2.2 中值滤波器( medfilt2)对二维信号(数字图像)滤波 利用函数 medfilt2 可以完成对 二维信号(数字图像) 的 滤波 MATLAB 代码为: A=imread(F:猫咪 .jpg); B=rgb2gray(A); C=medfilt2(B); figure imshow(B); 武汉理工大学 Matlab 课程设计 报告 figure imshow(C); title(中值滤波后 ); 显示图像为灰白图像和中值滤波后图像 ,分别如图 6和图 7所示。 图 6 灰白图像显示 图 7 中值滤波后图像显示