kl800.com省心范文网

基于Matlab的数字图像处理系统设计


论文(设计)题目:

基于 MATLAB 的数字图像处理系统设计

姓 学 学 专 年

名 号 院 业 级

宋立涛 201211867 信息学院 电子与通信工程 2012级

2013年 6月 16日

基于 MATLAB 的数字图像处理系统设计
摘 要
MATLAB 作为国内外流行的数字计算软件,具有强大的图像处 理功能,界面简洁,操作直观,容易上手,而且是图像处理系统的理 想开发工具。 笔者阐述了一种基于 MATLAB 的数字图像处理系统设计,其中 包括图像处理领域的大部分算法, 运用 MATLAB 的图像处理工具箱 对算法进行了实现,论述了利用系统进行图像显示、图形表换及图像 处理过程,系统支持索引图像、灰度图像、二值图像、RGB 图像等 图像类型;支持 BMP、GIF、JPEG、TIFF、PNG 等图像文件格式的 读,写和显示。 上述功能均是在 MATLAB 语言的基础上,编写代码实现的。这 些功能在日常生活中有很强的应用价值,对于运算量大、过程复杂、 速度慢的功能, 利用 MATLAB 可以既能快速得到数据结果, 又能得 到比较直观的图示。 关键词:MATLAB 数字图像处理 图像处理工具箱 图像变换

第一章 绪 论
1.1 研究目的及意义
图像信息是人类获得外界信息的主要来源,近代科学研究、军事技术、工农 业生产、医学、气象及天文学等领域中,人们越来越多地利用图像信息来认识和 判断事物,解决实际问题,由此可见图像信息的重要性,数字图像处理技术将会 伴随着未来信息领域技术的发展,更加深入到生产和科研活动中,成为人类生产 和生活中必不可少的内容。 MATLAB 软件不断吸收各学科领域权威人士所编写的实用程序,经过多年 的逐步发展与不断完善, 是近几年来在国内外广泛流行的一种可视化科学计算软 件。MATLAB 语言是一种面向科学与工程计算的高级语言,允许用数学形式的 语言来编写程序,比 Basic、Fortan、C 等高级语言更加接近我们书写计算公式 的思维方式,用 MATLAB 编写程序犹如在演算纸上排列出公式与求解问题一 样。它编写简单、编程效率高并且通俗易懂。

1.2 国内外研究现状
1.2.1 国内研究现状 国内在此领域的研究中具有代表性的是清华大学研制的数字图像处理实验 开发系统 TDB-IDK 和南京东大互联技术有限公司研制的数字图像采集传输与 处理实验软件。 TDB-IDK 系列产品是一款基于 TMS320C6000 DSP 数字信号处理器的高 级视频和图像系统,也是一套 DSP 的完整的视频、图像解决方案,该系统适合 院校、研究所和企业进行视频、图像方面的实验与开发。该软件能够完成图像采 集输入程序、 图像输出程序、 图像基本算法程序。 可实现对图像信号的实时分析, 图像数据相对 DSP 独立方便开发人员对图像进行处理,该产品融合 DSP 和 FPGA/CPLD 两个高端技术,可以根据用户的具体需求合理改动,可以分析黑白 和彩色信号,可以完成图形显示功能。 南京东大互联技术有限公司研制的数字图像采集传输与处理实验软件可实 现数字图像的采集、传输与处理。可利用软件及图像采集与传输设备,采集图像 并实现点对点的数字图像传输,可以观察理解多种图像处理技术的效果和差别,

其中包括图像的灰度直方图及其变换、锐化、平滑、滤波、伪彩、轮廓提取与增 强、图像格式转换及其文件结构。 1.2.2 国外研究现状 目前大量的图像处理软件如 PHOTOSHOP,PAINTSHOP 等都是基于广告策 划和图像修饰处理而设计的应用软件, 针对图像处理技术基本知识的理解与掌握 以及相关处理方法研究的软件甚少,不适合学习研究使用。随着计算机辅助设计 的日益提高和成熟,用于学习与研究的软件也越来越多。如美国 Southern Illinois University 开发的 CVIPtools 计算机视觉与图像处理实验软件就是专门针对图像 处理技术的实验软件,为初学者提供了一个消化理论知识的实验环境。 CVIPtools 计算机视觉与图像处理实验软件,主要用于计算机数字图像分析 和处理,主要宗旨是让图像处理的初学者、学生、老师和其它研究人员探索计算 机数字图像处理的巨大力量。 最新 Windows 版本的 CVIPtools 提供使用者四种层 次应用方式:算法代码层,公共对象模块(组件)界面层, cvipimage 层和图形 用户界面(GUI)。最下面的阶层算法代码层主要是基于以前的版本 CVIPtools , 包括所有的图像、数据处理程序和功能,是用标准 C 语言写的。最上的阶层为 CVIPtools GUI,可以让生手实验一些图像处理的工具,而不需具备程序设计的 能力。目前国外很多大学、研究院在数字图像处理的实验研究中都应用此软件。

1.3 数字图像处理研究的内容
一般的数字图像处理的主要目的集中在图像的存储和传输,提高图像的质 量,改善图像的视觉效果,图像理解以及模式识别等方面。新世纪以来,信息技 术取得了长足的发展和进步,小波理论、神经元理论、数字形态学以及模糊理论 都与数字处理技术相结合, 产生了新的图像处理方法和理论。数字图像处理技术 主要包括: 1、图像增强 目前图像增强技术根据其处理的空间不同,可分为空域法和频域法两大类, 前者根据在图像所在的像素空间进行处理, 后者是通过对图像进行傅里叶变换后 在频域上间接进行的。 2、图像恢复 图像恢复, 也称为图像还原,其目的是尽可能地减少或者去除数字图像在获

取过程中的降质,恢复被退化图像的本来面貌,从而改善图像质量,以提高视觉 观察效果。 3、图像变换 图像变换就是把图像从空域转换到频域, 对原图像函数寻找一个合适变换的 数学问题,众多图像变换方法不断出现,从傅里叶变换发展到余弦变换,再到现 在非常流行的小波变换,图像变换分为可分离变换和统计变换两大类。 4、图像压缩 数字图像需要很大的存储空间, 因此无论传输或存储都需要对图像数据进行 有效的压缩。其目的是生成占用较少空间而获得与原图十分接近的图像 5、图像分割 图像分割的目的是把一个图像分解成它的构成成分, 图像分割是一个十分困 难的过程。图像分割的方法主要有 2 类:一种是假设图像各成分的强度值是均 匀的,并利用这个特性,这种方法的技术有直方图分割,另外一种方法是寻找图 像成分之间的边界, 利用的是图像的不均匀性,基于这种方法的的技术有梯度法 分割。 6、边缘检测 边缘检测技术用于检测图像中的线状局部结构。 大多数的检测技术应用某种 形式的梯度算子。边缘检测广泛应用于图像分割、图像分类、图像配准和模式识 别,在大多数的实际应用中,边缘检测是当做一个局部滤波运算完成的。

第二章 数字图像处理技术软件 MATLAB 简介
2.1 MATLAB 软件简介
MATLAB 是 Math works 公司于推出的一套高性能的数值计算和可视化软 件,其全称是 Matrix Laboratory,亦即矩阵实验室,经过多年的逐步发展与不断 完善, 现已成为国际公认的最优秀的科学计算与数学应用软件之一,是近几年来 在国内外广泛流行的一种可视化科学计算软件。它集数值分析、矩阵运算、信号 处理和图形显示于一体,构成了一个方便的、界面友好的用户环境,而且还具有 可扩展性特征,具有信号处理、控制系统、神经网络、图像处理、小波分析等 30 多个具有专门功能的工具箱,工具箱内的函数源程序也是开放性的,多为 M 文 件,用户可以查看这些文件的代码并进行更改,MATLAB 支持用户对其函数进 行二次开发,用户的应用程序也可以作为新的函数添加到相应的工具箱中。 MATLAB 中的数字图像是以矩阵形式表示的,这意味着 MATLAB 强大的矩阵 运算能力用于图像处理非常有利。 矩阵运算的语法对 MATLAB 中的数字图像同 样适用。

2.2.MATLAB 的主要优缺点
2.2.1 MATLAB 的主要优点 1、界面友好,编程效率高 MATLAB 是一种以矩阵为基本变量单元的可视化程序设计语言,它的语法 结构简单,数据类型单一,命令表达方式接近于常用的数学公式。不仅能免去大 量的经常反复的基本数学运算,而且它的编译和执行速度都远远超过了采用 C 和 Fortran 语言设计的程序。 2、功能强大,可扩展性强 MATLAB 语言不但提供了科学计算、数据分析与可视化、系统仿真等强大 的功能,而且具有可扩展性特征,具有自动控制、信号处理、图像处理、模糊逻 辑、神经网络、小波分析等 30 多个具有专门功能的 MATLAB 工具箱。工具 箱中的函数可以互相调用,也可以由用户自己更改 3、易学易用性、高效性 MATLAB 不需要用户有高深的数学知识和程序设计能力,不需要用户深刻

了解算法及编程技巧。MATLAB 语句功能十分强大,一条语句可完成十分复杂 的任务,大大加快了工程技术人员从事软件开发的效率。 2. 2.2 MATLAB 的缺点

1、MATLAB 是一种解释性语言,对于实时性要求较高的领域,如自动控 制、信号处理等,其实时效率是较差的。 2、MATLAB 程序不能脱离其环境运行,因此它不能被用于开发商用软件。 3、程序可以被直接看到程序的源代码,因而不利于算法和数据的保密。

2.3MATLAB 图像处理工具箱简介
MATLAB 的图像处理工具箱功能十分强大,支持的图像文件格式丰富,如 *.BMP、*.JPEG、*.GIF、*.TIFF、*.PCX、*.HDF、*.XWD、*.PNG 等。MATLAB 图像处理工具箱支持四种图像类型, 分别为真彩色图像、 索引色图像、 灰度图像、 二值图像, 由于有的函数对图像类型有限制,这四种类型可以用工具箱的类型转 换函数相互转换。 MATLAB 提供了 15 类图像处理函数,涵盖了包括近期研究成果在内的几 乎所有的图像处理方法。这些函数按其功能可分为:图像显示;图像文件 I/O; 几何操作;像素和统计处理;图像分析;图像增强;线性滤波;线性二元滤波设 计;图像变换;邻域和块处理;二进制图像操作;区域处理;颜色映像处理;颜 色空间变换;图像类型和类型转换。 利用这些图像处理工具箱,并结合其强大的数据处理能力,我们可把精力集中 在算法研究上,大大提高了工作效率。而且,在测试这些算法时既可方便地得到统 计数据,同时又可得到直观图示。

2.4MATLAB 支持的图像类型及其转换分析
1、索引图像 索引图像包括一个数据矩阵 A, 一个颜色映射矩阵 B。 其中 B 是一个包含 3 列和若干行的数据阵列。B 矩阵的每一行分别表示红色、绿色和蓝色的颜色 值。在 MATLAB 中,索引图像是从像素值到颜色映射表值的直接映射。像素 颜色由数据矩阵 A 作为索引指向矩阵 B 进行索引。 2、灰度图像

MATLAB 中, 一幅灰度图像是一个数据矩阵 I,其中 I 的数据均代表了在一 定范围内的颜色灰度值。MATLAB 把灰度图像存储为一个数据矩阵,该数据矩 阵中的元素分别代表了图像中的像素。矩阵中的元素可以是双精度的浮点数类 型、8 位或 16 位无符号的整数类型。大多数情况下,灰度图像很少和颜色映射 表一起保存。但是在显示灰度图像时,MATLAB 仍然在后台使用系统预定义的 默认的灰度颜色映射表。 3、二值图像 与灰度图像相同, 二值图像只需要一个数据矩阵, 每个像素只取两个灰度值。 二值图像可以采用 uint8 和 double 类型存储,工具箱中以二值图像作为返回结 果的函数都使用 uint8 类型。 4、RGB 图像 RGB 图像,即真彩色图像,在 MATLAB 中存储为 n×m×3 的数据矩阵。 数组中的元素定义了图像中每一个像素的红、绿、蓝颜色值。需要指出的是, RGB 图像不使用 Windows 颜色映射表。 像素的颜色保存在像素位置上的红、 绿、 蓝的强度值的组合来确定。 图像文件格式把 RGB 图像存储为 24 位的图像, 红、 绿、蓝分别占 8 位。这样可以有约 1000 万种颜色 5、图像序列 MATLAB 的图像处理工具箱中还支持将多帧图像连接成图像序列。图像序 列是一个四维的数组, 图像帧的序号在图像的长、 颜色深度之后构成第四维。 宽、 在 MATLAB 中,各种图像类型之间的转换关系如图 2.1 所示:

图 2.1 图像类型间的转换

第三章:图像处理系统的详细设计
用 MATLAB 对图像进行处理是当前科技领域的一个重要的课题, 它采用的是 用一组有序的灰度或彩色数据元素构成图像, 数组的每一个元素对应于图像的一 个像素值。 这样 MATLAB 就可以利用其强大的矩阵计算功能实现对图像的数字处 理。本案所设计的系统主要是利用 MATLAB 所提供的图形用户界面(GUI) ,实现 一个可视的面向对象的操作界面。

3.1 设计原则
由于要求不同,设计出来的界面也就千差万别。但是,自从人们开始设计图 形界面以来,界面设计的评判标准却没有太大的变化。简单说来,一个好的界面 应遵从以下三个原则:简单性、一致性、习常性。 1、简单性 设计界面时,应力求简洁、直接、清晰地体现出界面的功能和特征。那些可 有可无的功能应尽量删去,以保持界面的清洁。 2、一致性 所谓一致性包含两层意义: 一是自己开发的界面风格要尽量一致;二是新设 计的界面要与其他已有的界面风格不要截然相左。 这是因为用户在初次使用新界 面时,总是习惯于凭借经验进行试探。 3、习常性 设计界面时, 应尽量使用人们所熟悉的标志和符号。用户可能并不了解界面 的具体含义及操作方法,但他也可以根据熟悉标志做出正确猜测,自学入门。 4、其他考虑因素 除了以上对界面的静态要求外,还应注意界面的动态性能。如对用户操作的 响应要迅速、连续。

3.2 设计的一般步骤
1、分析界面所要求实现的主要功能,明确设计任务。 2、在稿纸上绘出界面草图,并对其进行审查。 3、按照构思的草图,上机制作静态界面,并进行检查。 4、编写界面动态功能的程序,对其功能进行逐项检查。

3.3 系统功能的模块设计
根据当前图像处理系统的总体设计样式和要求, 该系统主要包括文件、 工具、 编辑、图像、调色、图像类型转换、颜色空间转换、正交变换等模块。其模块图 如 3.1 所示:

图 3.1 系统功能框图

3.4 窗口界面的实现
该系统界面的设计主要是利用 MATLAB 所提供的 GU (IGraphUser Interface) 向导设计控件而完成的, 该向导可以实现多种控件的设计,给用户提供了一种友 好的交互方式, 同时也给操作带来很多方便。图形用户界面 GUI 是包含图形对象 (如图形窗口、菜单、控件、文本)的用户界面,用户以某种方式选择或者击活这 些对象会发生变化或引起动作。 1、启动 GUI 的方法 启动图形用户界面的方法有很多种,例如可以利用工具栏上的命令按钮,也 可以采用菜单和命令的方式。 在本人设计的案例中采用的是命令方式:在命令窗 口直接输入 guide 命令,弹出的窗口如图 3.2 所示:

图 3.2 GUI 启动界面

在弹出的 guide quick ate new gui 选项卡里面的 start 窗口中选择 creBlank GUI 选项,这样就可以进入图形用户界面来设计我们的系统静态界面。

图 3.3 Guide 界面

上图就是 Guide 提供的图形界面设计工具集,在此界面下就可以利用控件

组件、 文本菜单、 排列工具等对系统的界面进行设计。 该系统的静态界面如图 3.4 所示:

图 3.4

Guide 设计界面

当静态界面设计完成以后,对该界面进行保存,此时 Guidie 将自描述,动 生成两个发布文件,分别是.fig 文件和.m 文件。Fig 文件:该文件包括图形窗 口及其所有后裔的完全包括:该文件包括 GUI 设计、控制函数以及为子函数的 用户控 u Edit 对系统的菜所有对象的属性值。Fig 文件是一个二进制文件,调用 hgsave 命令或界面设计编辑器的 file 菜单 save 选项保存图形窗口时将产生该 文件。Fig 文件最有用的地方之一就是对象句柄的保存和引用,可以使用 open、 openfig 和 hgload 命令打开一个后缀为.fig 的文件。M 文件件回调函数,主要 用于控制 GUI 展开时的各种特征。这个 M 文件可以分为 GUI 初始化和回调 函数两个部分,用户控件的回调函数根据用户与 GUI 的具体交互方式分别调 用。 设计好系统的界面以后,接下来就要利用 Men 单进行设计,创建菜单的第 一步就是利用 GUI 的工具栏上的 Menu Edit 按钮启动相应的窗口。然后使用 New Menu 工具栏来创建菜单,然后可以指定菜单的属性。例如可以设置菜单的 标签、分隔符、选种模式以及回调函数字符串。第二步就是创建菜单项。 可以使用 New Menu Item 工具来添加菜单项,每一个菜单项也可以有级联

的子菜单项。如果想要定义快捷菜单可以使用 NewContext Menu 工具来进行创 建。本系统的菜单创建效果如图 3.5 所示:

图 3,5 菜单

3.5 各个模块的实现
3.5.1 文件模块 在文件模块中主要是包括对图像文件的打开、 保存、 打印设置和退出等操作。 其中对图像文件如何读取以及如何写入是本模块的重点, 下面主要介绍这两个功 能的实现。 1、打开 对于打开菜单,主要利用的是 MATLAB 所提供的 uigetfile( )标准读盘文件 处理对话框来选择要打开的图像,然后用 imread( )函数实现对图像文件的读取。 其主要代码如下: function open_Callback(hObject, eventdata, handles) [filename, pathname] = uigetfile({'*.jpg';'*.bmp';'*.tif'} S = imread([pathname filename]); handles.S = S; axes(handles.axes1); imshow(S);

handles.output = hObject; guidata(hObject, handles); 2、保存 保存菜单的实现主要应用 uiputfile()标准写盘处理对话框来实现,其代码如 下: function save_Callback(hObject, eventdata, handles) global hresult; [filename,pathname, filterindex] = uiputfile( ... {‘*.bmp;*.jpg;*.tif’,’Picture styles(*.bmp;*.jpg;*.tif)’; ‘*.bmp’,’Bitmap-files(*.bmp)’; ... '*.jpg','J-PEG (*.jpg)'; ... '*.tif','Gif-files (*.tif)'; ... '*.*', 'All Files (*.*)'}, ... 'Save as'); If isequal([ ilename,pathname],[0,0]) return else File=fullfile(pathname,filename); saveas(hresult,File) End 3.5.2 编辑模块的实现 该模块主要是对所要处理的图像进行一些常规的编辑操作, 可以实现对图片 进行放大和缩小, 也可以对图片进行剪切和旋转。当然还可以实现很多有关编辑 的操作,但是无论哪一种操作,其关键是如何获得该图像的句柄。句柄实际上就 是分配给每个对象的数字标识,每次创建对象时,MATLAB 就会自动为它创建 一个唯一的句柄,这样只要我们能找到该句柄,就能对该对象进行操作。在 MATLAB 中,图形对象是一幅图中很独特的成分,它可以被单独地操作。由图 形命令产生的每一件东西都是图形对象,它们包括图形窗口不仅仅说是图形,还 有坐标轴、 线条、 曲面、 文本和其它。 这些对象按父对象和子对象组成层次结构。

计算机屏幕是根对象, 并且是所有其它对象的父对象。图形窗口是根对象的子对 象;坐标轴和用户界面对象是图形窗口的子对象;线条、文本、曲面、补片和图 象对象是坐标轴对象的子对象。这种层次关系在图 3.6 中给出

图 3.6 对象层次结构

根对象可包含一个或多个图形窗口, 每一个图形窗口可包含一组或多组坐标 轴。所有其它的对象(除了 uicontrol 和 uimenu 外)都是坐标轴的子对象,并且 在这些坐标轴上显示。 所有创建对象的函数当父对象或对象不存在时,都会创建 它们。例如,如果没有图形窗口,plot(rand(size([1:10])))函数会用缺省属性创建 一个新的图形窗口和一组坐标轴,然后在这组坐标轴内画线。 每次创建一个对象时, 就为它建立一个唯一的句柄。计算机屏幕作为根对象 常常是 0。 Hf_fig=figure 命令建立一个新的图形窗口, 变量 Hf_fig 中返回它的句 柄值。图形窗口的句柄为整数,通常显示在图形窗口标题条中。其它对象句柄是 MATLAB 满精度的浮点值。 所有产生对象的 MATLAB 函数都为所建立的每个对 象返回一个句柄(或句柄的列向量) 。这些函数包括 plot,mesh,surf 及其它。 有一些图形由一个以上对象组成。比如,一个网格图由一个曲面组成,它只有一 个句柄;而 waterfall 图形由许多线条对象组成,每个线条对象都有各自的句柄。 例如,Hl_wfall=waterfall(peaks(20)) 对线条返回一个包含着 20 个句柄的列向

量。在 MATLAB 中常用获得句柄的函数有以下几种 gcf :获取当前图形窗口的句柄 gca :获取当前坐标轴的句柄 gco :获取当前对象的句柄 gcbo :获取当前正在调用的对象的句柄 gcbf :获取包括正在执行调用的对象的图形的句柄 这样我们就可以使用这几个函数获得要操作对象的句柄。 例如旋转菜单功能 的 实 现 就 可 以 利 用 这 样 的 代 码 实 现 : function xuanzhuan_Callback(hObject, eventdata, handles) h = getimage(gco); % 获得当前对象的句柄 j=imrotate(h,-15); % 把图像以 15 度为单位顺时针旋转,并把该图象的句柄 付给 jimshow(j)% 显示旋转后的图像在这个例子中,其中 h=getimage(gco)语句 的作用就是利用 getimage()函数获取当前图形对象的句柄,并把该句柄的值赋给 了变量 h。以后只要是对该图像操作只要找到句柄 h 即可。本例子是只要单击 一次编辑菜单的旋转命令,当前的图像就会顺时针旋转 15 度。

原始图像 图 3.7 旋转

旋转后图像

其他编辑功能的实现与上边的例子大致相同,故一些具体的实现省略,详见 程序的代码。 3.5.3 图像模块的实现 在 MATLAB 中,一幅图像可能包含一个数据矩阵,也可以包含一个颜色

映射矩阵。因此 MATLAB 所能够处理的 4 种基本图像就是:索引图像、灰度 图像、RGB 图像、二进制图像。该模块的主要功能就是把一幅真色彩图像显示 成上述四种图像。该模块主要包括灰度、灰度倒置、腐蚀、膨胀、边界图等功能。 1、灰度:灰度变换是一种简单而实用的方法,它可以使图像的动态范围增 大,图像的对比度扩展,图像变清晰,特征明显,是图像增强的重要手段之一。 它可分为比例线性变换、分段线性变换、非线性灰度变换。本例子采用的是分段 线性变换。对感兴趣的(20~180)区间进行灰度变换,程序代码如下: x1= getimage(gco); figure imshow(x1) f0=0;g0=0; f1=20;g1=10 f2=180;g2=230; f3=255;g3=255; figure,plot([f0,f1, r1=(g1-g0)/(f1-f0); b1=g0-r1*f0; r2=(g2-g1)/(f2-f1); b2=g1-r2*f1; r3=(g3-g2)/(f3-f2); b3=g2-r3*f2; [m,n]=size(x1); x2=double(x1); for i=1:m for j=1:n f=x2(i,j); (f<=f2) )=r1*f+b2; ow(mat2gray(g)) g(i,j)=0;

if(f>=f1)&g(i,j) elseif(f>=f2)&(f<=f3) g(i,j)=r3*f+b3; end end end figure imshow(mat2gray(g))

图 3.8 灰度变化

原始图像 图 3.9 处理图像

灰度图像

运行该程序后, 得到分段线性变换后的图像。 可以看出, 通过这样一个变换, 原图中灰度值在(0~20)和(180~255)之间的动态范围减少了,而原图中灰度 值在 180~255 之间的动态范围增加了,从而这个范围内的对比度增加了,具体 变化为图像中树干以上的区域两度明显增强。 2、腐蚀:腐蚀操作就是把图像对象中边界的某些像素删除,输出像素值是 输入图像相应像素及邻域内所有像素的最小值。 function fs_Callback(hObject, eventdata, handles) h = getimage(handles.axes1); se=strel('arbitrary',eye(10)); h1=imerode(h,se); figure; imshow(h1)

图 3.10 腐蚀

3、膨胀:膨胀一般是给图像中的对象边界添加像素。在膨胀操作时,输出 像素值是输入图像相应像素及邻域内所有像素的最大值。

function pz_Callback(hObject, eventdata, handles) h = getimage(handles.axes1); se=strel('square',5); h2=imdilate(h,se); figure; imshow(h2,'notruesize')

图 3.11 膨胀

4、边界图:又称为骨架提取,寻找二值图像的细化结构是图像处理的一个 基本问题。在图像识别和图像压缩中要经常用到这样的细化结构。例如,在识别 字符之前,往往要对字符做细化处理,求出字符的细化结构。 function ys_Callback(hObject, eventdata, handles) i=getimage(handles.axes1); BW=edge(i,'sobel'); imshow(BW)

图 3.12 边界提取

以上各种操作都是形态学图像处理经常要用到的一些基本操作, 他们对于形 态学重构有着重要的作用。 所谓形态学重构就是根据一幅图像的特征对另一幅图 像进行重复膨胀、或腐蚀等操作,直到该图像的像素值不再变化为止,用来强调 图像中与掩模图像中指定对象相一致的部分,同时忽略图像中的其他对象。这在 医学影像领域有着极其重要的作用。 3.5.4 图像类型转换模块的实现 要对一幅索引图像滤波,首先必须将它转换成真色彩图像,否则要的作用。 图像类型转换模块的实现在许多图像处理工作中,都对图像类型有特定的要求, 比如结果是毫无意义的。在 MATLAB 中,各种图像类型之间的转换关系如图所 示:

图 3.13 图像转换关系

MATLAB 的图像处理工具箱提供了许多图像类型转换函数,来实现各种图 像类型的转换。例如:dither 函数,该函数的功能是通过颜色抖动来增加输出图 像的颜色分辨率, 从而实现转换图像。 该函数的调用格式如下: X=dither(RGB,map) 表示将真色彩图像 RGB 按照指定的颜色映 抖动成索引图像 MATLAB 像表 map 抖动成索引图像 X。 BW=dither(I) 表示将灰度图像 I 抖动成二值图像 BW。 例: I=imread(‘trees.tif’); Subplot(1,2,1) Imshow(I) BW=dither(I); Subplot(1,2,2) Imshow(BW)

图 3.14 二值处理

因此在对图像的处理的过程中图像类型的转换变得尤为重要。 该模块以索引 图像、灰度图像和真色彩图像之间的相互转换为例,具体实现代码如下: 1、m2bw:该函数的功能是通过设置亮度阈值将真色彩、索引、灰度图像转 换成二值图。该函数的调用格式如下:

BW=im2bw(I,level) BW=im2bw(x,map,level) BW=im2bw(rgb,level) 分别表示将灰度图像、 索引图像和真色彩图像转换成二值图像 BW, level 是 归一化的阈值,取值在[0,1]之间。本系统所采用的是第一种调用格式,具体程 序如下: function im2bw_Callback(hObject, eventdata, handles) h = getimage(handles.axes1); subplot(1,2,1); imsh show ); ow(h); bw=im2bw(h,0.8); subplot(1,2,2); im (bw);

图 3.15 灰度到二值转换

2、rgb/ind:将 RGB 图像转换成索引图像 function rgb2ind_Callback(hObject, eventdata, handles) h = getimage(handles.axes1); [x,map]=rgb2ind(h,0.7); imshow(x,map)

图 3.16 真色彩至索引转换

3.5.5 正交变换 在图像处理技术中, 图像的正交变换技术有着广泛的应用,是图像处理的重 要工具。通过变换图像,改变图像的表示域及表示数据,可以给后继工作带来极 大的方便。例如离散余弦变换(DCT 变换)使能量集中在少数数据上,从而实 现数据压缩,便于图像传输和存储。 1、DCT 变换:离散余弦变换,简称 DCT,是一种实数域变换,其特点是变 换速度快,很适于做图像压缩和随机信号处理。DCT 变换是 JPEG、MPEG 等数 据压缩的重要数学基础。DCT 变换的实现方法有两种:一种是基于 FFT 的快速 算法, 这是通过工具箱提供的 dct2 函数实现的; 另一种使 DCT 变换矩阵的方法, 这种方法非常适合做 8×8 或 16×16 的图像块的 DCT 变换,工具箱提供了 dctmtx 函数来计算变换矩阵。 下面的例子将一幅图像进行余弦变换, 然后将 DCT 变换值小于 10 的系数设为 0,再利用 idt2 函数重构图像。 function dct_Callback(hObject, eventdata, handles) h = getimage(handles.axes1); g=rgb2gray(h); d=dct2(g);

figure; subplot(1,2,1); imshow(log(abs(d)),[]); 图像的绝大部分能量位于变换矩阵的左上角。 subplot(1,2,1); colormap(gray(4)); d(abs(d)<10)=0; i=idct2(d)/255; subplot(1,2,2); imshow(i) 下面图像就是经过 DCT 变换后的图像,通过该图像可以看出

图 3.17 DCT 变换

下图则是经过重构的图像和原图像的对比。

图 3.18 压缩重构

通过对比可以看出,经过 DCT 压缩后,图像的绝大部分能量都得到了很好 的保留,所以重构图像的时候才能保证重构以后的图像有很少的失真。 2、 Radon变换:Radon变换在图像处理领域有着很重要的应用价值,尤其 是对医学的影像领域有着重要的指导意义。医学上常用的CT扫描就是基于 衰减 系数,如果能确定三维图像。但是通过X射线透视时,只能测量到人体的直线上 的X射线衰减系数的平均值,当直线变化时,此值也会跟着变化,这样就很难重 建其断层。但是,能否通过扫描测量的平均值求整个衰减系数的分布,从而有效 的重建图像呢?Radon变换为此提供了一个非常好的思路。本系统所用的Radon 变换就是对图像先进行骨架提取,再沿 0 度到 180 度每隔一度作Radon变换, 然后利用iradon函数来重构骨架图像。通过图像对比可以知道,重构后的图像和 原图像十分接近。 function radon_Callback(hObj - to be defined in a future version of % handles structure h= bw=edge(h); figu subplot(2,2,1); imshow theta=0:2:178; [r,xp]=radon(bw

subplot(2,2,2); imagesc(theta,xp,r); colorm 不同物质的X射线 人体的衰减系数分布,就能重建其断层或 ect, eventdata, handles) % hObject handle to radon (see GCBO) % eventdata reserved MATLAB with handles and user data (see GUIDATA) getimage(handles.axes1); re; (bw); ,theta); ap(hot); axis off i2=iradon(r,2); subplot(2,2,3); imshow(i2);

图 3.19 Radon 变换

3.5.6 其他模块功能的实现 基于MATLAB 的图像处理系统是一个功能强大的系统,它还可以实现颜色 空间的转换,能对一些单色图像进行各种调色,也可以调用 MATLAB 绘图工 具箱进行各种简单图形的绘制。 当然还有许多的功能有待于进一步完善,至于详 细的实现代码,在这里就不在赘述。


赞助商链接

基于MATLAB的数字图像处理毕业设计(含源文件)

基于MATLAB的数字图像处理毕业设计(含源文件) - ………装………订………线...

基于MATLAB的数字图像处理的设计与实现

基于MATLAB的数字图像处理设计与实现 - 基于 MATLAB 的数字图像处理设计与实现 摘要 数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经 ...

基于MATLAB数字图像处理平台设计

基于MATLAB数字图像处理平台设计 - 本文主要介绍了基于MATLAB的图形用户界面(GUI)来设计一个简单实用的图像处理软件平台,其中具备图像处理的常用功能,以满足用户的使用...

数字图像处理课程设计 基于Matlab的数字图像处理

21 第2页 摘要本文主要介绍了一种采用基于 matlab 数字图像处理的图像识别技术, 对身份证原始图像中的序列号标示进行图像识别的方法。该系统通过图像 预处理、图像...

(强烈推荐)基于Matlab的数字图像处理系统设计_毕业论文

论文(设计)题目: 基于 MATLAB 的数字图像处理系统 设计 基于 MATLAB 的数字图像处理系统设计 摘要 MATLAB 作为国内外流行的数字计算软件, 具有强大的图 像处理功能...

【精品】基于Matlab的数字图像处理系统设计_毕业论文

【精品】基于Matlab的数字图像处理系统设计_毕业论文 - 单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文

基于MATLAB的数字图像处理的设计与实现毕业设计(含源文件)

基于MATLAB的数字图像处理设计与实现毕业设计(含源文件) - 本科毕业论 文 基于 MATLAB 的数字图像处理设计与实现 The designing and implementing...

毕业论文-基于MATLAB的数字图像处理

毕业论文-基于MATLAB的数字图像处理_电子/电路_工程科技_专业资料。摘要 数字图像...在设计研究单位和工业部门,MATLAB 被广泛用于科 学研究和解决各种具体问题。在...

(完整版)基于Matlab的数字图像处理系统毕业设计论文

(完整版)基于Matlab的数字图像处理系统毕业设计论文 - 单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文

基于MATLAB GUI的数字图像处理系统

基于MATLAB GUI的数字图像处理系统 - 基于 MATLAB GUI 的数字图像处理系统 小悠 中文摘要 本文以 MATLAB 软件的图形用户界面(GUI)开发环境和图像处理工具箱为平台设...