基于MATLAB GUI的数字图像处理_第1页
基于MATLAB GUI的数字图像处理_第2页
基于MATLAB GUI的数字图像处理_第3页
基于MATLAB GUI的数字图像处理_第4页
基于MATLAB GUI的数字图像处理_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字视音频技术课程设计报告题 目:基于MATLAB GUI的数字图像处理专业名称: 电子信息工程 班 级: 电信 092 学 号: 910706201 姓 名: XXX 2012年 11月基于MATLAB GUI的数字图像处理XXX中文摘要:本文以MATLAB软件的图形用户界面(GUI)开发环境和图像处理工具箱为平台设计了数字图像综合处理系统,通过编写不同的按钮代码,实现数字图像的翻转、旋转、亮度调节、对比度调节和反色、浮雕、复古、连环画等功能,操作简单且美观。关键词: MATLAB 数字图像处理 GUI1 设计内容和环境条件在MATLAB中,GUI1是一个包含多种对象的图形窗口,并为GUI开

2、发提供一个方便高效的集成开发环境GUIDE。GUIDE主要是一个界面设计工具集,MATLAB将所有GUI支持的控件都集成在这个环境中,并提供界面外观、属性和行为响应方式的设置方法。GUIDE将设计好的GUI保存在一个FIG文件中,同时还生成M文件框架。其中FIG文件包括GUI图形窗口及其所有FIG文件包含序列化的图形窗口对象;M文件包括GUI设计、控制函数以及定义为子函数的用户控件回调函数。GUI创建包括界面设计和控件编程两部分,主要步骤如下:通过设置GUIDE应用程序的选项来运行GUIDE;使用界面设计编辑器进行界面设计;编写控件行为响应控制(即回调函数)代码。在MATLAB中,GUIDE提

3、供多个模板来定制GUI。这些模板均已包括相关的回调函数,可以通过修改相应的M文件函数实现指定功能。2 方案论证 本设计涉及到MATLAB中GUIDE工具的使用,通过创建菜单型界面,来实现图像的处理。该设计打算通过编写不同的按钮代码,实现数字图像的翻转、旋转、亮度调节、对比度调节和反色、浮雕、复古、连环画等功能。 旋转是指图像绕图像原点进行任一角度的几何变换,本设计通过建立两个不同的界面,通过界面间数据传递的方法来实现对图像的不同角度的旋转。本设计用到了MATLAB中提供的imrotate函数。图像的翻转,包括图像的上下翻转和左右翻转。对于彩色图像,上下翻转利用flipud函数实现,左右翻转使用

4、liplr函数实现。而对于二值图像则通过矩阵间的关系来实现。在进行亮度调节和对比度调节时,虽然可以以对话框的形式输入调节的比例系数,但实际效果不好,操作也不方便,故选择滚动条来调节。图像的亮度调节即对图像明亮程度的调节,通过加大或减小每个像素的三色数来调节。应用公式:V = V'x(1 + d),其中,(-1 d 1),式中:V为调整后颜色值,V为原颜色值,d为亮度调整系数。图像的对比度调节,利用函数g=127+(f-127)(1+d)加强黑到白的渐变。在图像特效方面,所谓图像反色就是将原图像灰度值翻转,简单说来就是使黑变白,使白变黑。假设对灰度级范围是0,L-1的图像求反,就是通过变

5、换将0,L-1变换到L-1,0。实现图像浮雕效果,一般是将图像上每个像素点与其对角线的像素点形成差值,使相似颜色值淡化,不同颜色值突出,从而产生纵深感,达到浮雕的效果。其他图像特效的实现均是通过自编函数达成的,将在设计过程中说明。3 设计过程3.1界面设计 在命令窗口中直接输入guide命令,弹出如图1所示的窗口,在弹出的guide quick start窗口中,在Create New GUI选项卡中选择Blank GUI(default),并点击确定按钮,进入图形用户界面来设计系统静态界面,图2就是Guide提供的图形界面设计工具集【3】,在此界面下就可以利用控件组件、文本菜单、排列工具等对

6、系统的界面进行设计。 图1 创建GUI 图2 空白界面各控件的放置如图3所示,并通过属性检查器等对各控件进行相应的设置。 图3 设计界面效果图3.2程序设计3.2.1文件右击“打开”按钮,选择“callback”跳转到回调函数的编写。在Matlab中,创建文件打开对话框的函数是uigetfile。其主要代码如下:filename, pathname = uigetfile('*.bmp; *.jpg; *.png; *.jpeg; *.tif; *.gif', 'Image Files', '打开图像'); %设置显示打开的图像类型if iseq

7、ual(filename, 0) | isequal(pathname, 0) %图像路径的合法性判断 return;end图像的保存,同样通过对话框的形式来保存图像数据。通过uigetfile函数选择文件名和路径,最后用imwrite函数,把数据im存到指定的文件。其代码如下: if filterindex = 0 %选择取消,不保存图像 return; else %图像另存为 str = pathname filename; imwrite(im, str); end“原图”的设置,通过再次获取原图的路径后进行读取显示,使其恢复到原图状态。3.2.2翻转和旋转 对图像进行上下、左右翻转时,

8、必须先进行图像性质的判断(二值图像还是彩色图像),而后进行相应的翻转代码的实现,左右翻转代码如下:if (length(size(im) = 3) %判断图像是否是彩色图像 height,width = size(im); im_flip = zeros(height,width); for i = 1 : width im_flip(:,i) = im(:,width-i+1); end im = uint8(im_flip); axes(handles.axes1); imshow(im);else %利用fliplr函数进行图像的左右变换 im(:,:,1) = fliplr(im(:,

9、:,1); im(:,:,2) = fliplr(im(:,:,2); im(:,:,3) = fliplr(im(:,:,3); axes(handles.axes1); imshow(im);end左右翻转所实现的效果如图4所示。 图4 左右翻转效果图 上下翻转代码的设计同左右翻转代码的设计类似。实现上下翻转就要把顶部的第一个像素值通过中间变量赋值给原最底部像素值所在的位置,从上到下通过中间变量依次赋值直到最底部的像素值赋值给原最顶部像素值所在的位置。其彩色图像可利用flipud函数实现。效果如图5所示。 图5 上下翻转效果图图像旋转,是通过两个界面间数据传递的方法来实现对图像的不同角度的

10、旋转。故必须建立一个新的FIG界面,并命名为“image_rotate.fig”,界面设置效果如图6所示。主界面的“旋转”按钮通过image_rotate函数来调用图6所示界面。点击“确认”按钮的旋转效果是利用imrotate函数实现,代码如下:angle=get(handles.edit1,'string');handles.im1=imrotate(handles.im1,str2num(angle);guidata(hObject,handles);uiresume(handles.figure1);若输入角度为45,其旋转效果图如图7所示。 图6 旋转界面设计 图7 旋

11、转效果图3.2.3 基本调节 亮度调节和对比度调节是利用滚动条实现的。亮度调节通过自编函数实现代码如下:function INew, globalImage = brighter(globalImage, pre, d) INew = globalImage*(d + 0.5)/(pre + 0.5); globalImage = INew; index = find(INew > 255); INew(index) = 255; INew = uint8(INew);效果如图8所示。 对比度调节的自编函数代码如下:function IContrast = imContrast(I,d)

12、; I = double(I); INew = 127 + (I-127)*(1+d); index= find(INew >255); INew(index) = 255; index= find(INew <0); INew(index) = 0; IContrast = uint8(INew);效果如图9所示。 图8 亮度调节效果图 图9 对比度调节效果图 3.2.4图像特效 设计图像的反色效果,是通过反色回调函数的effectFunInverse函数实现的;浮雕效果是通过自编的effectFunSculpt函数实现的;复古效果是通过自编的effectFunSepia函数实现

13、的;而连环画效果是通过自编的effectFunComic函数实现的。整体效果如图10所示。 图10 整体效果图4 程序调试和分析在程序运行和使用的工程中,发现在开始运行此数字图像处理系统时,应该设置只能点击“打开”按钮,而禁止其他按键的触发,以免程序出错,故应把其他控件的Enable属性初始值设置为off。在触发“打开”按钮时,要通过判断所选图片的类型,将能触发的按钮的Enable属性值设为on。该设计经调试能稳定使用且美观大方。唯一的不足是特效的使用是对原图的特效显示,而不是对操作后的图像进行特效变换,代码尚待改进。5 总结在此次课程设计的过程中,更深一步领略了MATLAB软件GUI功能的强

14、大性。但由于对MATLAB图像处理的函数不熟悉和对一些全局变量的使用比较模糊,导致走了很多弯路,使自己了解到了自己知识储备的缺乏和实践能力的薄弱,今后更有目的地往这方面学习和训练,以期达到更好效果。参考文献:1杨杰.数字图像处理及MATLAB实现,电子工业出版社,20102姚敏. 数字图象处理:机械工业出版,20113 施晓红.MATLAB精通GUI图形界面编程,北京大学出版社,2003附 录(论文中未提到的重要代码)%定义全局变量global im;global imPath;global IInverse;global ISculpt;global ISepia;global IComic

15、;global globalImage;%自编图像反色函数function IInverse = effectFunInverse(I)I = double(I);IInverse = 255 - I;IInverse = uint8(IInverse);%自编图像浮雕效果函数function ISculpt = effectFunSculpt(I)I = im2double(I);height,width ,depth=size(I);ISculpt = zeros(height,width);h = -1 0 0; 0 0 0; 0 0 1;ISculpt = imfilter(I,h,&

16、#39;replicate')+0.5;ISculpt = rgb2gray(ISculpt);ISculpt = uint8(255*ISculpt);%自编图像复古效果函数function ISepia=effectFunSepia(I)I = im2double(I);temp= rgb2gray(I);height,width,depth=size(I);ISepia = zeros(size(I); for i = 1:height for j=1:width ISepia(i,j,1)= (101*I(i,j,1)+197*I(i,j,2)+48*I(i,j,1)/255;

17、 ISepia(i,j,2)= (89*I(i,j,1)+176*I(i,j,2)+43*I(i,j,3)/255; ISepia(i,j,3)= (70*I(i,j,1)+137*I(i,j,2)+34*I(i,j,3)/255; endendISepia = uint8(ISepia* 255);%自编图像连环画效果函数function IComic = effectFunComic(I)I = im2double(I);height,width,depth=size(I);IComic = zeros(size(I); for i = 1:height for j=1:width IComic(i,j,1)= (I(i,j,2)-I

温馨提示

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

评论

0/150

提交评论