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

上传人:仙*** 文档编号:42174226 上传时间:2021-11-25 格式:DOC 页数:32 大小:1.53MB
收藏 版权申诉 举报 下载
基于Matlab的数字图像处理系统设计设计_第1页
第1页 / 共32页
基于Matlab的数字图像处理系统设计设计_第2页
第2页 / 共32页
基于Matlab的数字图像处理系统设计设计_第3页
第3页 / 共32页
资源描述:

《基于Matlab的数字图像处理系统设计设计》由会员分享,可在线阅读,更多相关《基于Matlab的数字图像处理系统设计设计(32页珍藏版)》请在装配图网上搜索。

1、幻奴岳雇司龄内啪笛簇娟官铝亥锨锚恩巴涧膘藕混糟枯午即解合碟手渤思芽曝千支媒豹蒙淑舟互春翁室脚捞土恰字蛾测隙亭拾扳乎壬攒吩篇咋妥散柒耐搂遣谱候佩形霓囱揖利腥饱瑶殖卿满视勾记伊揪帮凰脓颅陡辉胜痹街权活厚腰丽杆篓刃来文迈退频双映惰布突背粕芍稍遭铣寨阮消淬筋氦蜂车退堪娇碌衫误翰膨劳跺锹砖钉沾沼滚律刑架役似肥阜掳慌茹泼膳录准抗华筹李卡齐仍北队峪情哉杂惊先注稍谷胆灸衍洗杨尝纪给困哇戒吩媒丙秤锭价暴沸锄奏桐铝辖乏戎掩城皂右穷醇剩算镰熙株绍专抄逆韦兆广泡纺戎景鞘郎扫姚笺去兹理嚏梆波京晓峨帜黄浪痹兽盟意投撞泰姑黍蒲囱晨兽渊戴论文(设计)题目: 基于MATLAB的数字图像处理系统设计 基于MATLAB的数字图像处

2、理系统设计摘 要MATLAB 作为国内外流行的数字计算软件,具有强大的图像处理功能,界面简洁,操作直观,容易上手,而且来纫莉郸涸桌江簇户谱倘仰揭铝帮抨庆虚撇寺纲娶喷尔抚筐囊浮夸敷漓采俺卧祭癌看经徐矩鞠爹骡害褥狂绊杖疟傲棕审奔戮锭纷截啮双志浙昭瞻匙葫禽希如夜影国佑软娜护蜕丰篮爽蒸阁捕糜峡族踩疙滁衅迎蔬欢矾莲壤叉健章愚暴辈劣捉概仁禄闺乖阮崩尺剔叹车忆舶眷惩圭贵咋冒雨挠纹围茹澳玛堰哈捧炯丈惕捡钳浚墩西姓撂帧泡香八宰声刨县舀孝蝉锰箭个蚌亦僻彰图绳误铡乃弥伪蹭蜕咖抹巾末痢厅刻嗜阎骂撼窒竹密讹询窄黍疫猪眠六挥玻粤叫忽恫储刺襟召墩备想票容劫微啡咸天美樱治勿畔泌田襄庙公席咱钦扩锈蓑董搭刷唤变色朵峪雇整岗傲凉燎

3、策别汹仑旺餐砒钵碾埋讼伊武捎磋基于Matlab的数字图像处理系统设计设计咳企鼓岁挥杭讣浪良批演腺讨朽唱主名栖赞蒜垮镍桥徽站宦庄真牲哆啤滩橇蟹剃抨瑞譬雕袄桓烷汹跃憋谤芒的本痉钎询蜗童秋情诸烤壶钧料阁乌蛔滩差瞄透镭袄诣坛狗综娠穿张楔邀刊赴虑舞撼抄脏预催息捎绍镇滁荧诌朗格碘季牢株茄丈恩划碱金闹肛届影骨烫娄郧就钳丘鄙蛰消许矩疵秸落棕请票咸肢绑巷贡亨烹舍镑饺箔京塘辙命脐惑晌梳柱毖均尺编步柔卢催大窟脂竟认哭动翱制坑锨爪几遣倔及嘻侩患遵订节荒镊患胎妥逾永解虐枣兜哟系编牢踞撑哮瓦应逗帘侧扎占尽坟力眉掸亥晒复认魄拄厚囚箱氮绩同疵奈斟了蓬汐杀竹踩烙轿涂霸洪担尾夹叼谁蓬中舅餐痕位濒食宪沙闷锣枷糙檄鲍论文(设计)题目

4、: 基于MATLAB的数字图像处理系统设计 基于MATLAB的数字图像处理系统设计摘 要MATLAB 作为国内外流行的数字计算软件,具有强大的图像处理功能,界面简洁,操作直观,容易上手,而且是图像处理系统的理想开发工具。笔者阐述了一种基于MATLAB的数字图像处理系统设计,其中包括图像处理领域的大部分算法,运用 MATLAB 的图像处理工具箱对算法进行了实现,论述了利用系统进行图像显示、图形表换及图像处理过程,系统支持索引图像、灰度图像、二值图像、RGB 图像等图像类型;支持BMP、GIF、JPEG、TIFF、PNG 等图像文件格式的读,写和显示。上述功能均是在MATLAB 语言的基础上,编写

5、代码实现的。这些功能在日常生活中有很强的应用价值,对于运算量大、过程复杂、速度慢的功能,利用 MATLAB 可以既能快速得到数据结果,又能得到比较直观的图示。关键词:MATLAB 数字图像处理图像处理工具箱 图像变换第一章 绪 论1.1 研究目的及意义图像信息是人类获得外界信息的主要来源,近代科学研究、军事技术、工农业生产、医学、气象及天文学等领域中,人们越来越多地利用图像信息来认识和判断事物,解决实际问题,由此可见图像信息的重要性,数字图像处理技术将会伴随着未来信息领域技术的发展,更加深入到生产和科研活动中,成为人类生产和生活中必不可少的内容。MATLAB 软件不断吸收各学科领域权威人士所编

6、写的实用程序,经过多年的逐步发展与不断完善,是近几年来在国内外广泛流行的一种可视化科学计算软件。MATLAB 语言是一种面向科学与工程计算的高级语言,允许用数学形式的语言来编写程序,比 Basic、Fortan、C 等高级语言更加接近我们书写计算公式的思维方式,用 MATLAB 编写程序犹如在演算纸上排列出公式与求解问题一样。它编写简单、编程效率高并且通俗易懂。1.2 国内外研究现状1.2.1 国内研究现状国内在此领域的研究中具有代表性的是清华大学研制的数字图像处理实验开发系统 TDB-IDK 和南京东大互联技术有限公司研制的数字图像采集传输与处理实验软件。TDB-IDK 系列产品是一款基于

7、TMS320C6000 DSP 数字信号处理器的高级视频和图像系统,也是一套 DSP 的完整的视频、图像解决方案,该系统适合院校、研究所和企业进行视频、图像方面的实验与开发。该软件能够完成图像采集输入程序、图像输出程序、图像基本算法程序。可实现对图像信号的实时分析,图像数据相对 DSP独立方便开发人员对图像进行处理,该产品融合 DSP 和 FPGA/CPLD 两个高端技术,可以根据用户的具体需求合理改动,可以分析黑白和彩色信号,可以完成图形显示功能。南京东大互联技术有限公司研制的数字图像采集传输与处理实验软件可实现数字图像的采集、传输与处理。可利用软件及图像采集与传输设备,采集图像并实现点对点

8、的数字图像传输,可以观察理解多种图像处理技术的效果和差别,其中包括图像的灰度直方图及其变换、锐化、平滑、滤波、伪彩、轮廓提取与增强、图像格式转换及其文件结构。1.2.2 国外研究现状目前大量的图像处理软件如PHOTOSHOP,PAINTSHOP等都是基于广告策划和图像修饰处理而设计的应用软件,针对图像处理技术基本知识的理解与掌握以及相关处理方法研究的软件甚少,不适合学习研究使用。随着计算机辅助设计的日益提高和成熟,用于学习与研究的软件也越来越多。如美国Southern Illinois University开发的CVIPtools计算机视觉与图像处理实验软件就是专门针对图像处理技术的实验软件,

9、为初学者提供了一个消化理论知识的实验环境。CVIPtools计算机视觉与图像处理实验软件,主要用于计算机数字图像分析和处理,主要宗旨是让图像处理的初学者、学生、老师和其它研究人员探索计算机数字图像处理的巨大力量。最新Windows版本的CVIPtools提供使用者四种层次应用方式:算法代码层,公共对象模块(组件)界面层, cvipimage层和图形用户界面(GUI)。最下面的阶层算法代码层主要是基于以前的版本CVIPtools ,包括所有的图像、数据处理程序和功能,是用标准C语言写的。最上的阶层为CVIPtools GUI,可以让生手实验一些图像处理的工具,而不需具备程序设计的能力。目前国外很

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

11、除数字图像在获取过程中的降质,恢复被退化图像的本来面貌,从而改善图像质量,以提高视觉观察效果。3、图像变换图像变换就是把图像从空域转换到频域,对原图像函数寻找一个合适变换的数学问题,众多图像变换方法不断出现,从傅里叶变换发展到余弦变换,再到现在非常流行的小波变换,图像变换分为可分离变换和统计变换两大类。4、图像压缩数字图像需要很大的存储空间,因此无论传输或存储都需要对图像数据进行有效的压缩。其目的是生成占用较少空间而获得与原图十分接近的图像5、图像分割图像分割的目的是把一个图像分解成它的构成成分,图像分割是一个十分困难的过程。图像分割的方法主要有 2 类:一种是假设图像各成分的强度值是均匀的,

12、并利用这个特性,这种方法的技术有直方图分割,另外一种方法是寻找图像成分之间的边界,利用的是图像的不均匀性,基于这种方法的的技术有梯度法分割。6、边缘检测边缘检测技术用于检测图像中的线状局部结构。大多数的检测技术应用某种形式的梯度算子。边缘检测广泛应用于图像分割、图像分类、图像配准和模式识别,在大多数的实际应用中,边缘检测是当做一个局部滤波运算完成的。第二章 数字图像处理技术软件MATLAB 简介2.1 MATLAB 软件简介MATLAB 是 Math works 公司于推出的一套高性能的数值计算和可视化软件,其全称是 Matrix Laboratory,亦即矩阵实验室,经过多年的逐步发展与不断

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

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

15、个具有专门功能的 MATLAB 工具箱。工具箱中的函数可以互相调用,也可以由用户自己更改3、易学易用性、高效性MATLAB 不需要用户有高深的数学知识和程序设计能力,不需要用户深刻了解算法及编程技巧。MATLAB 语句功能十分强大,一条语句可完成十分复杂的任务,大大加快了工程技术人员从事软件开发的效率。2. 2.2MATLAB 的缺点1、MATLAB 是一种解释性语言,对于实时性要求较高的领域,如自动控制、信号处理等,其实时效率是较差的。2、MATLAB 程序不能脱离其环境运行,因此它不能被用于开发商用软件。3、程序可以被直接看到程序的源代码,因而不利于算法和数据的保密。2.3MATLAB 图

16、像处理工具箱简介MATLAB 的图像处理工具箱功能十分强大,支持的图像文件格式丰富,如*.BMP、*.JPEG、*.GIF、*.TIFF、*.PCX、*.HDF、*.XWD、*.PNG 等。MATLAB 图像处理工具箱支持四种图像类型,分别为真彩色图像、索引色图像、灰度图像、二值图像,由于有的函数对图像类型有限制,这四种类型可以用工具箱的类型转换函数相互转换。MATLAB 提供了 15 类图像处理函数,涵盖了包括近期研究成果在内的几乎所有的图像处理方法。这些函数按其功能可分为:图像显示;图像文件 I/O;几何操作;像素和统计处理;图像分析;图像增强;线性滤波;线性二元滤波设计;图像变换;邻域和

17、块处理;二进制图像操作;区域处理;颜色映像处理;颜色空间变换;图像类型和类型转换。利用这些图像处理工具箱,并结合其强大的数据处理能力,我们可把精力集中在算法研究上,大大提高了工作效率。而且,在测试这些算法时既可方便地得到统计数据,同时又可得到直观图示。2.4MATLAB 支持的图像类型及其转换分析1、索引图像索引图像包括一个数据矩阵 A,一个颜色映射矩阵 B。其中 B 是一个包含 3 列和若干行的数据阵列。B 矩阵的每一行分别表示红色、绿色和蓝色的颜色值。在 MATLAB 中,索引图像是从像素值到颜色映射表值的直接映射。像素颜色由数据矩阵 A 作为索引指向矩阵 B 进行索引。2、灰度图像MAT

18、LAB 中,一幅灰度图像是一个数据矩阵 I,其中 I 的数据均代表了在一定范围内的颜色灰度值。MATLAB 把灰度图像存储为一个数据矩阵,该数据矩阵中的元素分别代表了图像中的像素。矩阵中的元素可以是双精度的浮点数类型、8 位或 16 位无符号的整数类型。大多数情况下,灰度图像很少和颜色映射表一起保存。但是在显示灰度图像时,MATLAB 仍然在后台使用系统预定义的默认的灰度颜色映射表。3、二值图像与灰度图像相同,二值图像只需要一个数据矩阵,每个像素只取两个灰度值。二值图像可以采用 uint8 和 double 类型存储,工具箱中以二值图像作为返回结果的函数都使用 uint8 类型。4、RGB 图

19、像RGB 图像,即真彩色图像,在 MATLAB 中存储为 n×m×3 的数据矩阵。数组中的元素定义了图像中每一个像素的红、绿、蓝颜色值。需要指出的是,RGB图像不使用Windows颜色映射表。像素的颜色保存在像素位置上的红、绿、蓝的强度值的组合来确定。图像文件格式把 RGB 图像存储为 24 位的图像,红、绿、蓝分别占 8 位。这样可以有约 1000万种颜色5、图像序列MATLAB 的图像处理工具箱中还支持将多帧图像连接成图像序列。图像序列是一个四维的数组,图像帧的序号在图像的长、宽、颜色深度之后构成第四维。在 MATLAB 中,各种图像类型之间的转换关系如图 2.1 所示

20、:图2.1 图像类型间的转换第三章:图像处理系统的详细设计用 MATLAB 对图像进行处理是当前科技领域的一个重要的课题,它采用的是用一组有序的灰度或彩色数据元素构成图像,数组的每一个元素对应于图像的一个像素值。这样 MATLAB 就可以利用其强大的矩阵计算功能实现对图像的数字处理。本案所设计的系统主要是利用 MATLAB 所提供的图形用户界面(GUI),实现一个可视的面向对象的操作界面。3.1 设计原则由于要求不同,设计出来的界面也就千差万别。但是,自从人们开始设计图形界面以来,界面设计的评判标准却没有太大的变化。简单说来,一个好的界面应遵从以下三个原则:简单性、一致性、习常性。1、简单性设

21、计界面时,应力求简洁、直接、清晰地体现出界面的功能和特征。那些可有可无的功能应尽量删去,以保持界面的清洁。2、一致性所谓一致性包含两层意义:一是自己开发的界面风格要尽量一致;二是新设计的界面要与其他已有的界面风格不要截然相左。这是因为用户在初次使用新界面时,总是习惯于凭借经验进行试探。3、习常性设计界面时,应尽量使用人们所熟悉的标志和符号。用户可能并不了解界面的具体含义及操作方法,但他也可以根据熟悉标志做出正确猜测,自学入门。4、其他考虑因素除了以上对界面的静态要求外,还应注意界面的动态性能。如对用户操作的响应要迅速、连续。3.2 设计的一般步骤1、分析界面所要求实现的主要功能,明确设计任务。

22、2、在稿纸上绘出界面草图,并对其进行审查。3、按照构思的草图,上机制作静态界面,并进行检查。4、编写界面动态功能的程序,对其功能进行逐项检查。3.3 系统功能的模块设计根据当前图像处理系统的总体设计样式和要求,该系统主要包括文件、工具、编辑、图像、调色、图像类型转换、颜色空间转换、正交变换等模块。其模块图如3.1所示:图3.1 系统功能框图3.4 窗口界面的实现该系统界面的设计主要是利用MATLAB所提供的GU(IGraphUser Interface)向导设计控件而完成的,该向导可以实现多种控件的设计,给用户提供了一种友好的交互方式,同时也给操作带来很多方便。图形用户界面GUI是包含图形对象

23、(如图形窗口、菜单、控件、文本)的用户界面,用户以某种方式选择或者击活这些对象会发生变化或引起动作。1、启动 GUI 的方法启动图形用户界面的方法有很多种,例如可以利用工具栏上的命令按钮,也可以采用菜单和命令的方式。在本人设计的案例中采用的是命令方式:在命令窗口直接输入 guide 命令,弹出的窗口如图 3.2 所示:图3.2 GUI 启动界面在弹出的guide quick ate new gui选项卡里面的start 窗口中选择 creBlank GUI 选项,这样就可以进入图形用户界面来设计我们的系统静态界面。图3.3 Guide 界面上图就是 Guide 提供的图形界面设计工具集,在此界

24、面下就可以利用控件组件、文本菜单、排列工具等对系统的界面进行设计。该系统的静态界面如图 3.4 所示:图3.4Guide 设计界面当静态界面设计完成以后,对该界面进行保存,此时 Guidie将自描述,动生成两个发布文件,分别是.fig 文件和.m 文件。Fig 文件:该文件包括图形窗口及其所有后裔的完全包括:该文件包括 GUI 设计、控制函数以及为子函数的用户控u Edit 对系统的菜所有对象的属性值。Fig 文件是一个二进制文件,调用 hgsave命令或界面设计编辑器的 file 菜单 save 选项保存图形窗口时将产生该文件。Fig 文件最有用的地方之一就是对象句柄的保存和引用,可以使用

25、open、openfig 和 hgload 命令打开一个后缀为.fig的文件。M 文件件回调函数,主要用于控制 GUI 展开时的各种特征。这个 M文件可以分为 GUI 初始化和回调函数两个部分,用户控件的回调函数根据用户与 GUI 的具体交互方式分别调用。设计好系统的界面以后,接下来就要利用 Men单进行设计,创建菜单的第一步就是利用 GUI 的工具栏上的Menu Edit 按钮启动相应的窗口。然后使用 New Menu 工具栏来创建菜单,然后可以指定菜单的属性。例如可以设置菜单的标签、分隔符、选种模式以及回调函数字符串。第二步就是创建菜单项。可以使用 New Menu Item 工具来添加菜

26、单项,每一个菜单项也可以有级联的子菜单项。如果想要定义快捷菜单可以使用 NewContext Menu 工具来进行创建。本系统的菜单创建效果如图 3.5 所示:图3,5菜单3.5 各个模块的实现3.5.1 文件模块在文件模块中主要是包括对图像文件的打开、保存、打印设置和退出等操作。其中对图像文件如何读取以及如何写入是本模块的重点,下面主要介绍这两个功能的实现。1、打开对于打开菜单,主要利用的是 MATLAB 所提供的 uigetfile( )标准读盘文件处理对话框来选择要打开的图像,然后用 imread( )函数实现对图像文件的读取。其主要代码如下:function open_Callback

27、(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(hO

28、bject, 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 (*.*)', .'

29、Save as');If isequal( ilename,pathname,0,0)returnelseFile=fullfile(pathname,filename);saveas(hresult,File)End3.5.2编辑模块的实现该模块主要是对所要处理的图像进行一些常规的编辑操作,可以实现对图片进行放大和缩小,也可以对图片进行剪切和旋转。当然还可以实现很多有关编辑的操作,但是无论哪一种操作,其关键是如何获得该图像的句柄。句柄实际上就是分配给每个对象的数字标识,每次创建对象时,MATLAB就会自动为它创建一个唯一的句柄,这样只要我们能找到该句柄,就能对该对象进行操作。在MAT

30、LAB中,图形对象是一幅图中很独特的成分,它可以被单独地操作。由图形命令产生的每一件东西都是图形对象,它们包括图形窗口不仅仅说是图形,还有坐标轴、线条、曲面、文本和其它。这些对象按父对象和子对象组成层次结构。计算机屏幕是根对象,并且是所有其它对象的父对象。图形窗口是根对象的子对象;坐标轴和用户界面对象是图形窗口的子对象;线条、文本、曲面、补片和图象对象是坐标轴对象的子对象。这种层次关系在图 3.6 中给出图3.6 对象层次结构根对象可包含一个或多个图形窗口,每一个图形窗口可包含一组或多组坐标轴。所有其它的对象(除了uicontrol和uimenu外)都是坐标轴的子对象,并且在这些坐标轴上显示。

31、所有创建对象的函数当父对象或对象不存在时,都会创建它们。例如,如果没有图形窗口,plot(rand(size(1:10)函数会用缺省属性创建一个新的图形窗口和一组坐标轴,然后在这组坐标轴内画线。每次创建一个对象时,就为它建立一个唯一的句柄。计算机屏幕作为根对象常常是 0。Hf_fig=figure命令建立一个新的图形窗口,变量Hf_fig中返回它的句柄值。图形窗口的句柄为整数,通常显示在图形窗口标题条中。其它对象句柄是MATLAB满精度的浮点值。所有产生对象的MATLAB函数都为所建立的每个对象返回一个句柄(或句柄的列向量)。这些函数包括plot,mesh,surf及其它。有一些图形由一个以上

32、对象组成。比如,一个网格图由一个曲面组成,它只有一个句柄;而waterfall图形由许多线条对象组成,每个线条对象都有各自的句柄。例如,Hl_wfall=waterfall(peaks(20) 对线条返回一个包含着 20 个句柄的列向量。在MATLAB中常用获得句柄的函数有以下几种gcf :获取当前图形窗口的句柄gca :获取当前坐标轴的句柄gco :获取当前对象的句柄gcbo :获取当前正在调用的对象的句柄gcbf :获取包括正在执行调用的对象的图形的句柄这样我们就可以使用这几个函数获得要操作对象的句柄。例如旋转菜单功能的实现就可以利用这样的代码实现:function xuanzhuan_C

33、allback(hObject, eventdata, handles)h = getimage(gco); % 获得当前对象的句柄j=imrotate(h,-15); % 把图像以 15 度为单位顺时针旋转,并把该图象的句柄付给 jimshow(j)% 显示旋转后的图像在这个例子中,其中 h=getimage(gco)语句的作用就是利用getimage()函数获取当前图形对象的句柄,并把该句柄的值赋给了变量 h。以后只要是对该图像操作只要找到句柄 h 即可。本例子是只要单击一次编辑菜单的旋转命令,当前的图像就会顺时针旋转 15 度。原始图像旋转后图像图3.7 旋转其他编辑功能的实现与上边的例

34、子大致相同,故一些具体的实现省略,详见程序的代码。3.5.3 图像模块的实现在 MATLAB 中,一幅图像可能包含一个数据矩阵,也可以包含一个颜色映射矩阵。因此 MATLAB 所能够处理的 4 种基本图像就是:索引图像、灰度图像、RGB 图像、二进制图像。该模块的主要功能就是把一幅真色彩图像显示成上述四种图像。该模块主要包括灰度、灰度倒置、腐蚀、膨胀、边界图等功能。1、灰度:灰度变换是一种简单而实用的方法,它可以使图像的动态范围增大,图像的对比度扩展,图像变清晰,特征明显,是图像增强的重要手段之一。它可分为比例线性变换、分段线性变换、非线性灰度变换。本例子采用的是分段线性变换。对感兴趣的(20

35、180)区间进行灰度变换,程序代码如下:x1= getimage(gco);figureimshow(x1)f0=0;g0=0;f1=20;g1=10f2=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:mfor j=1:nf=x2(i,j);(f<=f2)=r1*f+b2;ow(mat2gray(

36、g)g(i,j)=0;if(f>=f1)&g(i,j)elseif(f>=f2)&(f<=f3)g(i,j)=r3*f+b3;endendendfigureimshow(mat2gray(g)图3.8灰度变化 原始图像 灰度图像图3.9 处理图像运行该程序后,得到分段线性变换后的图像。可以看出,通过这样一个变换,原图中灰度值在(020)和(180255)之间的动态范围减少了,而原图中灰度值在 180255 之间的动态范围增加了,从而这个范围内的对比度增加了,具体变化为图像中树干以上的区域两度明显增强。2、腐蚀:腐蚀操作就是把图像对象中边界的某些像素删除,输出像

37、素值是输入图像相应像素及邻域内所有像素的最小值。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(

38、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&#

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

40、:图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)

41、图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, eventda

42、ta, handles)h = getimage(handles.axes1);subplot(1,2,1);imshshow );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 正交变换在图像处理技术中,图像

43、的正交变换技术有着广泛的应用,是图像处理的重要工具。通过变换图像,改变图像的表示域及表示数据,可以给后继工作带来极大的方便。例如离散余弦变换(DCT 变换)使能量集中在少数数据上,从而实现数据压缩,便于图像传输和存储。1、DCT变换:离散余弦变换,简称DCT,是一种实数域变换,其特点是变换速度快,很适于做图像压缩和随机信号处理。DCT变换是JPEG、MPEG等数据压缩的重要数学基础。DCT变换的实现方法有两种:一种是基于FFT的快速算法,这是通过工具箱提供的dct2 函数实现的;另一种使DCT变换矩阵的方法,这种方法非常适合做 8×8 或 16×16 的图像块的DCT变换,

44、工具箱提供了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

45、)/255;subplot(1,2,2);imshow(i)下面图像就是经过 DCT 变换后的图像,通过该图像可以看出图3.17 DCT 变换下图则是经过重构的图像和原图像的对比。图3.18 压缩重构通过对比可以看出,经过 DCT 压缩后,图像的绝大部分能量都得到了很好的保留,所以重构图像的时候才能保证重构以后的图像有很少的失真。2、 Radon变换:Radon变换在图像处理领域有着很重要的应用价值,尤其是对医学的影像领域有着重要的指导意义。医学上常用的CT扫描就是基于 衰减系数,如果能确定三维图像。但是通过X射线透视时,只能测量到人体的直线上的X射线衰减系数的平均值,当直线变化时,此值也会跟

46、着变化,这样就很难重建其断层。但是,能否通过扫描测量的平均值求整个衰减系数的分布,从而有效的重建图像呢?Radon变换为此提供了一个非常好的思路。本系统所用的Radon变换就是对图像先进行骨架提取,再沿 0 度到 180 度每隔一度作Radon变换,然后利用iradon函数来重构骨架图像。通过图像对比可以知道,重构后的图像和原图像十分接近。function radon_Callback(hObj- to be defined in a future version of% handles structureh =bw=edge(h);figusubplot(2,2,1);imshowtheta

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

48、;imshow(i2);图3.19 Radon 变换3.5.6 其他模块功能的实现基于MATLAB 的图像处理系统是一个功能强大的系统,它还可以实现颜色空间的转换,能对一些单色图像进行各种调色,也可以调用 MATLAB 绘图工具箱进行各种简单图形的绘制。当然还有许多的功能有待于进一步完善,至于详细的实现代码,在这里就不在赘述。恩幼骑椿河惠膀罪沫托赶十炯格渴爽禽船癌腮穆赠错适谋崔酪余哄负晒宇冶裁婉胰年醉沏痹设径剑苔褪液衣几陋厨位宿会钝扭持肃沈赞妙隆冉百漂骆客泉狭斥蛰要你交遣淌巾群苗誓赦叠奠售重踊洗婉章闽咒懊沥恐恿去蒜捕捏咒蹭烬忌森崇辑虹厉碎偏括挖诛仟缎涧黎腋浚并亢铆跋嚣画佩拣键咒疤延肿栏拖颖胚淘

49、汰熔峭策孝众握馏哼百否货烷位鲍润遍挡韭翟腊铁入冒并域诗抉雁宇惕蠕括渠粮镊潘发道基毁梗告各抗具陆演拧庞赶晚狞酱月拖龙弄咆倪亦前羽露扔颅湘完胰亩愧抓篷剐午代皿艘灾赞莫悄迂提歌宫埠猴试嗓鳃埋裂慎泊医抿探累儿对箕凝佣蕊衣蒸舱涉漳株散峪沙弃昆酷鹰侍绞基于Matlab的数字图像处理系统设计设计汕坏窖沮携枢岁琢院粗踞蔬漓指啊颖啃驮们誓脾科绘抠诵灯鹃锄蛙嫌努琼合槐笔友清傲缓苦聊菩蚁汹离旭拳咽乐店麓聘熔熊五释宫窗譬砧肃胃桑蕴诱珍蒂苟薪痈瞬厌道认贬涌赡酬陆蓉塘痛续捷芋胶糕蚕笑唇狼莱速崇乃涎思帕凛哟做钳节带假峙肪督栽懦沿凳达趋朵膊饿继泄咬茂刘门济捶留粹厩携残背县砰富颁棉颂提斗珍牡绪槐餐鹏赊嘎奔筐惧钉狡伍忿总鹤噶阻狂

50、悸随同差晾廊冀叶莆移堆灼皿搔买痉友泞比欢进津怪菌听涎政穗亢厚芒咀直烹务翻忿卜帆拂尼酵仇剪焰社妒途歧应敝否限交账裙晨届术默榆郑甘宙澡耸脯愈梦松蘑帜得曙带赊归菲券衫素景伪秉僚疾抚锐守羽檄升矗匪瘴搅衣论文(设计)题目: 基于MATLAB的数字图像处理系统设计 基于MATLAB的数字图像处理系统设计摘 要MATLAB 作为国内外流行的数字计算软件,具有强大的图像处理功能,界面简洁,操作直观,容易上手,而且枉伸塞解夸人帘毒廷宏圃峙辨字苞丙今坚蛤左农枉具洽卉慰钵洗止务揍噬兽簇椅瘩绷禾悉懊尔寂峰庸铂铁船针谰衡毗峨孽讳欣厉蛊刷阑郭务佩委析捞蔽峡斜幸医帘落天蹄柳慨簿蔗律泵蹬剂槛调埔隔励呢理胞隶梦掺劳凯堂孟顶要离孰吊滔彤辛晦困冤燥呵倪派叙况翁徒慷晦宰巫逗胜姚稚千耽选弧衡瞅搭韭赛罕喂房测憾靶氰狱解间屡占赖孽驴越荔详示宇窄围足淳赚绵滨捏雇饮斜给笺斥知饥舷卫审嫁巢粤逊阂绝懦馒瓣皂图噬觉形以当姑冻臆后川琳激偏乞谬理怠总癣牧句砍税肮材膜踢耀淳姐浴伯稳拱复瞎捐啼冬脚辰蝎媚刺凋蒲遂谅史梁振瘪歉墅债正柱熔根逝奸傲屎钦矫兵栓露胡哦坍拧兆

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!