资源预览内容
第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
第9页 / 共32页
第10页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
类别_ 编 号_数字电视系统设计 课程项目报告 基于MATLAB GUI的数字图像处理程序设计 院 别 技术学院 专 业 电子信息工程 班 级 10电信 姓 名 第二组 指导教师 何光威中国大学南广学院2013年 10月29日摘 要基于数字信号处理原理,在数字滤波器设计理论和Matlab 编程技术及其GUI 图形用户界面设计的基础上,开发了具有交互式特点的数字图像处理GUI软件,界面操作简单方便。MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。根据它提供的500多个数学和工程函数,工程技术人员和科学工作者可以在它的集成环境互或编程以完成各自的计算。MATLAB中集成了功能强大的图像处理工具箱。由于MATLAB语言的语法特征与C语言极为相似,而且更加简单、更加符合科技人员对数学表达式的书写格式,而且可移植性好、可扩展性强,再加上其中有丰富的图像处理函数,所以MATLAB在图像处理的应用中具有很大的优势。关键词:Matlab GUI;数字图像处理;图形用户界面目 录摘 要I一、设计基本原理2(一)、GUIDE 操作界面的使用方法2二、GUI程序总体设计3(一)MATLAB GUI程序要实现的功能:3三、具体设计与实现43.1、文件操作43.1.1、打开43.1.2、保存43.1.3、退出43.2、编辑43.2.1、灰度43.2.2、亮度53.2.3、截图73.2.4、缩放73.3、旋转83.3.1、上下翻转83.3.2、左右翻转93.3.3、任意角度翻转93.4、加入噪声103.5、滤波103.6、直方图统计113.7、频谱分析123.7.1、频谱图123.7.2、通过高通滤波器133.7.3、通过低通滤波器133.8、灰度图像处理143.8.1、二值图像143.8.2、创建索引图像143.9、颜色模型转换153.10、操作界面设计15四、程序调试及结果分析16(一)在程序设计过程中遇到的问题16结 语17参考文献18附 录19一、设计基本原理图形用于界面(GUI)是提供人机交互的工具和方法。GUI 是包含图形对象(如窗口、图标、菜单和文本)的用户界面。MATLAB 的GUI 为开发者提供了一个不脱离MATLAB 的开发环境,有助于MATLAB 程序的GUI 集成。在MATLAB 中的GUIDE 就是图形用户 界面开发环境(Graphical User Interface Development Environment),它向用户提供了一系列的创建用户图形界面的工具。这些工具大大简化了GUI 设计和生成的过程。(一)、GUIDE 操作界面的使用方法 下面对GUIDE 的操作界面及使用方法做一简单介绍。 在命令窗口中直接键入guide, 启动GUIDE, 利用GUIDE 模板创建GUI,或者打开已经存在的GUI, GUIDE 把GUI 设计的容保存在两个文件中,它们在第一次保存或运行时生成。一个是FIG 文件,扩展名为Fig,它包含对GUI 和GUI 组件的完整描述;另外一个是M 文件,扩展名为.M,它包含控制GUI 的代码和组件的回调事件代码。这两个文件与GUI 显示和编程任务相对应。在版面设计器中创建GUI 时, 容保存在FIG 文件中;对GUI 编程时,容保存在M 文件中。用GUIDE 版面设计器,根据设计需要:首先拖拽两个图形窗口(Axes),一个作为待处理图片区域,另一个作为已处理图片区域;其次,拖拽五个电子按钮(Radio Button),作为边缘检测操作按钮;第三,拖拽五个按钮(Push Button),作为输入等的按钮;最后,将上面的所有按钮及图形窗口合理的布局,达到美观工整的效果,然后运行一下GUI,系统会自动生成GUI 文件。信息化社会中,计算机在各种信息处理中发挥着重要的作用。我们可以借助计算机,对数字图像进行处理,以达到不同的效果。根据题目的要求,除了实现要求的功能外,还有很多的功能需要用到。(1)、将一个RGB图像转换为灰度图像。(2)、可以对图像做各种变换,如旋转等。(3)、有时并不需要图像显示其细节部分,只要其轮廓,这时候不要很高的灰度级。可以把图像转换为二值图像,进行图像腐蚀,或是创建索引图像等。(4)、分析一个图像的频谱特征,利用傅里叶变换,将图像从空间域变换到频域,然后进行各种处理,经过高通滤波器或是低通滤波器。(5)、为了科学地定量描述和使用颜色,人们提出了各种颜色模型,按用途可分为三类:计算颜色模型,视觉颜色模型和工业颜色模型。有时为了不同的需要,要对颜色模型进行转换。二、GUI程序总体设计(一)MATLAB GUI程序要实现的功能:将一个RGB图像转换为灰度图像。可以对图像做各种变换,如旋转等。可以对图像进行任意的亮度和对比度调整,显示和对比变换前后的图像。通过最近邻插值和双线性插值算法,将用户所选取的图像区域,进行放大和缩小整数倍,并保存,比较几种插值的效果。对颜色模型进行转换。为了科学地定量描述和使用颜色,人们提出了各种颜色模型,按用途可分为三类:计算颜色模型,视觉颜色模型和工业颜色模型。有时为了不同的需要,要对颜色模型进行转换。 在调节亮度时,虽然可以用对话框的形式输入调节的比例系数,但是这样效果不好,不容易调节。因此这里考虑用滚动条来调节。总设计界面如上图所示。三、具体设计与实现3.1、文件操作3.1.1、打开为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文件,由于这个GUI程序的操作对象是图像文件,所以设置这里的缺省后缀名为“.bmp”。Uigetfile函数的调用格式为name,path=yigetfile(), 在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“name”和“path”中。如果按下取消按钮或是发生错误,则返回值是0。 根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量handles.img。3.1.2、保存同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,把数据i存到指定的文件。3.1.3、退出退出比较简单,程序如下所示:clc;close all;close(gcf); 3.2、编辑3.2.1、灰度由于RGB图像是三维图像,所以图像数据是一个三维数组,为了显示灰度图像,把三维图像降为二维,可以只取其中的二维数据,实现方法程序为:y=(handles.img(:,:,1); %当然也可以选择(:,:,2) 或(:,:,3) imshow(y);但是这样的话,根据程序所选的不同,图像数据也不同,显示也就不一样。另一种方法就是,运用rgb2gray函数实现彩色图像到灰度图像的转换。程序为:y=rgb2gray(handles.img); imshow(y);这个程序只能用于RGB图像转换灰度图像,当原始图像本来就是灰度图像时,运行该程序时就会出错,但是使用者在使用时有时并不知道这些,为了使该程序更加完善,应该在使用者原先图像时灰度图像时使用该功能时,应该要显示提示类信息。所以在开始时应该要有一个RGB图像或是灰度图像的判断过程。完整的程序如下: if isrgb(handles.img) y=rgb2gray(handles.img); imshow(y);else msgbox(这已经是灰度图像,转换失败);end如果原图是RGB,执行该操作的结果如下图:如果原图本身已经是灰度图像了,执行该操作弹出如 右图所示的提示对话框3.2.2、亮度用imadjust函数,其调用格式如下: g=imadust(f,low_in high_in,low_out high_out),gamma)gamma 表示映射性质,默认值是1 表示线性映射。由于该函数有五个参数需要输入,为了方便用户改变,所以这里设计一个输入对话框,用户通过对话框把五个参数赋值给low_in high_in,low_out high_out,gamma这五个参数,如下一组命令建立了如图所示的输入对话框:prompt=输入参数1,输入参数2,输入gamma;defans=0 0.7,0 1,1;p=inputdlg(prompt,输入参数,1,defans);但是,这种方法并不能很好的让用户能够对图像进行任意的亮度和对比度变化调整,有时并不事先知道参数的值要多少,也不关心,而是任意调节的,直到满意为止。所以应该用滑动条来调节图像的亮度和对比度,这样更适合用户的使用习惯。由于imadjust函数有五个参数,所以原则上需要设计五个滑动条来调节对比度,这对用户来说显然比较麻烦,因此在设计的时候固定其中的三个参数,通过调节两个参数的值来改变亮度和对比度。 0 handles.beta,0 1,handles.gm,这里的变量handles.beta和handles.gm就通过滑动条得到,滑动条设计如下图:亮度调整的tag名为ld,取值围01,gamma值的tag名为gamma,取值围为05。获取滑动条参数的程序如下:handles.beta=get(handles.ld,value);handles.gm=get(handles.gamma,value);执行该操作,调节滑动条到上图所示位置,结果如下图:3.2.3、截图在MATLAB中,用函数imcrop实现对图像的剪切操作。该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。Imcrop函数的调用格式如下: y=imcrop(handles.img);不管handles.img是三维的还是二维数据,该函数都能进行操作。下图就是对三维图像的截图:3.2.4、缩放在MATLAB中,用函数imresize来实现对图像的放大或缩小。插值方法可选用三种方法,最近邻插值,双线性插值,双三次插值。该函数的调用格式如下:Bimresize(A,m,method)其中:参数method用于指定插值的方法,可选的值为“nearest”(最近邻法),“bilinear”(双线性插值)、“bicubic”(双三次插值),缺省值为“nearest”。Bimresizee(
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号