ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:794.93KB ,
资源ID:7387621      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7387621.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(图像处理matlab.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

图像处理matlab.docx

1、图像处理matlab 钦州学院课程设计报告课程名称:数字图像处理 系 部:XXX 专业班级:XXX 学生姓名:XXX指导教师:XXX 完成时间:2011-6-13 报告成绩: 评阅意见: 评阅教师 日期 目录一、 课程设计目的3二、 课程设计目的方法3三、 课程设计的内容和要求3四、 程序需求和功能分析3五、 总体设计4六、 具体设计56.1、 文件56.1.1、打开56.1.2、保存56.1.3、退出66.2、图像66.2.3、截图66.2.2、亮度与对比度66.2.4、三次内插值算法放大、缩小86.8、形态学操作96.8.1、膨胀106.8.2、腐蚀10七、 程序调试及结果分析10八、 心

2、得体会16九、 参考文献17一十、 附录18基于Matlab的图像处理课程设计报告一、课程设计目的1)熟悉和掌握MATLAB 程序设计方法2)掌握MATLAB GUI 程序设计3)学习和熟悉MATLAB图像处理工具箱4)学会运用MATLAB工具箱对图像进行处理和分析二、课程设计目的方法综合运用MATLAB工具箱实现图像处理的GUI程序设计。三、 课程设计的内容和要求要求利用MATLAB或VC设计图形用户界面,并实现以下图像处理功能:(1)实现图像文件的打开、保存、另存为、打印功能;(2)用户能对图像进行任意的亮度、对比度的调整,并显示调整前后的两幅图像;(3)用户能够用鼠标选取图像中感兴趣区域

3、,显示和保存该选择区域;(4)利用三次内插值法实现图像的放大和缩小操作;(5)选择某种结构元素,对图像进行膨胀、腐蚀操作(可以利用STREL函数)。四、程序需求和功能模块分析信息化社会中,计算机在各种信息处理中发挥着重要的作用。我们可以借助计算机,对数字图像进行处理,以达到不同的效果。根据题目的要求,除了实现要求的功能外,还有很多的功能需要用到。(1)、将一个RGB图像转换为灰度图像。(2)、可以对图像做各种变换,如旋转等。(3)、有时并不需要图像显示其细节部分,只要其轮廓,这时候不要很高的灰度级。可以把图像转换为二值图像,进行图像腐蚀,或是创建索引图像等。(4)、分析一个图像的频谱特征,利用

4、傅里叶变换,将图像从空间域变换到频域,然后进行各种处理,经过高通滤波器或是低通滤波器。(5)、为了科学地定量描述和使用颜色,人们提出了各种颜色模型,按用途可分为三类:计算颜色模型,视觉颜色模型和工业颜色模型。有时为了不同的需要,要对颜色模型进行转换。五、 总体设计 由于要实现的功能并不是很多,所以在排版的过程中,把各个功能都安排在目录栏上,整体安排如下图所示: 进入后总体的设计界面如下图所示:六、 具体设计6.1、 文件6.1.1、打开为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框

5、自动列出当前路径下的目录和文件,由于这个GUI程序的操作对象是图像文件,所以设置这里的缺省后缀名为“.bmp”。Uigetfile函数的调用格式为name,path=yigetfile(), 在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“name”和“path”中。如果按下取消按钮或是发生错误,则返回值是0。 根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量handles.img。操作打开得到如下对话框:6.1.2、保存、另存为同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名

6、和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,把数据i存到指定的文件。操作保存和另存为得到如下图:6.1.3、退出退出比较简单,程序如下所示:delete(handles.figure1); 6.2、 图像6.2.1、 裁剪在MATLAB中,用函数imcrop实现对图像的剪切操作。该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。Imcrop函数的调用格式如下: y=imcrop(original_image);下图就是对二维图像的截图:6.2.2、亮度用imadjust函数,

7、其调用格式如下:g=imadust(f,low_in high_in,low_out high_out),gamma)gamma 表示映射性质,默认值是1 表示线性映射。由于该函数有五个参数需要输入,为了方便用户改变,所以这里设计一个输入对话框,用户通过对话框把五个参数赋值给low_in high_in,low_out high_out,gamma这五个参数,如下一组命令建立了如图所示的输入对话框:prompt=input parameter1,input parameter2,input parametergamma; defans=0 0.7,0 1,1;p=inputdlg(prompt

8、,input parameter,1,defans);但是,这种方法并不能很好的让用户能够对图像进行任意的亮度和对比度变化调整,有时并不事先知道参数的值要多少,也不关心,而是任意调节的,直到满意为止。所以应该用滑动条来调节图像的亮度和对比度,这样更适合用户的使用习惯。由于imadjust函数有五个参数,所以原则上需要设计五个滑动条来调节对比度,这对用户来说显然比较麻烦,因此在设计的时候固定其中的三个参数,通过调节两个参数的值来改变亮度和对比度。 0 handles.beta,0 1,handles.gm,这里的变量handles.beta和handles.gm就通过滑动条得到,滑动条设计如下图

9、:亮度调整的tag名为Id,取值范围01,gamma值的tag名为gamma,取值范围为05。获取滑动条参数的程序如下:handles.beta=get(handles.Id,value);handles.gm=get(handles.gamma,value);执行该操作,调节滑动条到上图所示位置,结果如下图:6.2.4、缩放在MATLAB中,用函数imresize来实现对图像的放大或缩小。插值方法可选用三种方法,最近邻插值,双线性插值,双三次插值。该函数的调用格式如下:Bimresize(A,m,method)其中:参数method用于指定插值的方法,可选的值为“nearest”(最近邻法)

10、,“bilinear”(双线性插值)、“bicubic”(双三次插值),缺省值为“nearest”。Bimresizee(Am,method)表示返回原图A的m倍放大图像(m小于1时实际上是缩小);下图就是采用三次内插值法的放大和缩小图像,参数值保持默认设置:放大后的效果: 虽然处理后看不出放大的效果,这是由于坐标轴限制的原因,如果把处理后的图片保存起来,再把处理后的文件打开,就可以看到比较明显的放大效果。缩小后的结果如下:6.3、 形态学操作使用strel函数创建结构元素,其调用格式如下:structure_element = strel(rectangle, structure_eleme

11、nt_length, structure_element_width);使用imerode函数进行结构元素对图像的腐蚀处理,其格式如下:modified_image = imerode(original_image, structure_element);使用imdilate函数进行结构元素对图像的膨胀处理,其格式如下:modified_image = imdilate(original_image, structure_element);为了让用户能够对膨胀或腐蚀的结构元素进行任意的长和宽变化调整,这里给用户提供了使用了文本输入结构元素的长和宽的值,这样更适合用户的使用习惯。6.3.1腐蚀处

12、理后6.3.2、膨胀处理后七、 程序调试及结果分析在程序设计过程中,碰到很多的问题。a) 一个函数只能对灰度图像处理,不能对RGB图像处理,那么如何才能对RGB图像处理呢?这主要是对MATLAB函数的不够清楚,用到的很多函数是针对二维数据的,而RGB图像的数据是一个三维矩阵,所以处理要与灰度图像不同,在开始的时候,我认为应该找一个能够应用于三维矩阵的函数,结果却没找到,后来想到可以把三维数据进行降维处理,同样使用二维的函数,只要是同样处理三次。比如,彩色图像的滤波处理,直方图均衡等。b) 同一个操作对灰度图像可以使用,当用户选择的是彩色图像时,该操作就会出错?这是由于设计程序时,本身程序是有针

13、对性的,有些程序只能对灰度图像有效,有些对彩色图像有效,但是用户并不清楚这些,所以在设计的过程中就要考虑全面,要分开设计。在本次课程设计中,我均对每个程序的开始时,用if isrgb(x)进行判断。c) 在没有加入噪声的情况下,点击“中值滤波”或是其它滤波,会提示错误?这是由于在滤波程序设计的过程中,开始用到的变量是handles.noise_img,而这个变量是在加入噪声时候才定义的,所以在没有加入噪声的情况下,点击各个滤波就会弹出变量没有定义的错误,解决方法就是在文件打开的时候就给定义handles.noise_img=x。d) 本次设计存在一个比较大的问题,就是每次操作都是独立的,比如:

14、要对图像加入噪声,然后在此基础上进行亮度调整,截图,频谱分析等等就不行。我认为应该是整个程序设计过程中对变量的设置没有做好,应该每次操作后,把处理后的数据保存在一个全局变量,这样还要对处理后的数据进行在处理时,只要把这个全局变量作为原始数据带入就可。八、 心得体会1、我们小组首先要解决的问题是如何开始做,怎样做。我们开始遇到的问题是应该解决界面问题,先把基本的界面弄出来才能进行下面的设计。经过讨论,我们根据题目的要求,把所有的功能都一一写出来,再统一意见。接下来,到图书馆或网上找相关资料,分工好每个人做些功能,遇到问题再讨论。在整个课程设计的过程中,最难的是,函数的调用问题和变量的定义。经过不

15、断的调试和查找错误,先做好一个功能菜单,再进行下一个的设计。函数的调用是很麻烦的,稍微不注意就出错。每个人做好了自己的功能板块了,再综合起来,这个步骤也是比较难的,因为每个人运用的变量是不一样的,又要重新统一,一一对照。最终,经过大家的努力,终于完成了所有的设计。2、在理工科的专业应用背景下,用matlab 进行相关计算与仿真编程的优势非常突出。特定的问题处理算法,我们通常都以M文件的文本形式给定最终的解决方案,自己设计的程序是在MATLAB环境下,用MATLAB语言编写的,这对于有安装MATLAB软件的计算机上运行并不存在什么问题,关键是一般的计算机很少有去安装MATLAB软件的,那么要在这

16、些机子上运行该程序要怎么办呢,难道要先安装MATLAB软件,这显然太麻烦了,对于一个通用的,比较成熟的解决方案,我们当然期望它能应用到更多的场合,而.exe (可执行)文件可运行于所有的通用WINDOWS操作系统,为此,将M文件转换成.exe文件倒是个不错的想法。通过查找资料,了解到在生成可执行性文件之前,需要进行一系列编译环境方面的配置:要将用Matlab语言编写的函数文件编译成可独立执行的*.exe文件(即可脱离Matalab环境的执行程序),首先要安装和配置好Matlab Compiler,一般来说,在安装Matlab时就已经安装了相应版本的Matlab Compiler。只是不同版本的

17、Matlab,其编译器的使用方法有一定的差异,这一点要引起一定的注意。在确定安装好Matlab Compiler后,还需要对Compiler进行适当的配置,方法是在Matlab命令窗口输入:Mbuild setup然后根据提示执行相应的操作,使用者可根据自己计算机中现有编译器的情况选择合适的编译器,如VC+ 6.0、VC+7.0、Bland C的编译器等,目前Matlab好象还不支持VC+8.0(我计算机安装的就是VC+2005,Matlab就无法识别)。当然,如果你的计算机里根本就没有安装其他任何语言的编译器,也可选择Matlab自带的Lcc编译器,其实这个编译器对大多数用户已经够用了(我就

18、是选择的Matlab自带的Lcc编译器)。配置好编译器后,自然就是对自己编写的M文件进行编译了。将M文件编译为独立可执行文件的语法是:mcc m fun1.m fun2.m.其中fun1就是最后的可执行文件的名称。3、通过本次课程设计,使自己对MATLAB GUI设计流程有了比较深刻的体会。在设计过程中碰到了很多的问题,通过这些问题,使自己分析问题,解决问题的能力得到了较大的提高。部分代码附录:function varargout = DI(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Sing

19、leton, gui_Singleton, . gui_OpeningFcn, DI_OpeningFcn, . gui_OutputFcn, DI_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );get(0,screensize);if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfc

20、n(gui_State, varargin:);end-function open_menu_item_Callback(hObject, eventdata, handles)%打开图像global original_image FileName,PathName = uigetfile(*.jpg; *.bmp; *.gif; *.png; *.tif; *.cur; *.hdf, *.ico; *.pbm; *.pcx; *.pgm; *.pnm; *.ppm; *.ras; *.xwd);if isequal(FileName, 0) Archivo = PathName, FileN

21、ame; original_image = imread(Archivo); axes(handles.axesl); imshow(original_image); set(handles.structure_element, Visible, off); end-function save_menu_item_Callback(hObject, eventdata, handles)%保存图像程序global modified_imageFileName,PathName = uiputfile(*.jpg; *.bmp; *.gif; *.png; *.tif; *.cur; *.hdf

22、, *.ico; *.pbm; *.pcx; *.pgm; *.pnm; *.ppm; *.ras; *.xwd);Archivo = PathName, FileName;imwrite(modified_image, Archivo);-function saveas_menu_item_Callback(hObject, eventdata, handles)%图片另存为filename,pathname = uiputfile(*.bmp,save as);_if isequal(filename,pathname,0,0) errordlg(no file saved,error);

23、 return;elsefile=strcat(pathname,filename);(handles.axesr);i=getimage(gca);imwrite(i,file);end-function print_menu_item_Callback(hObject, eventdata, handles)%打印处理global file;printdlg;-function close_menu_item_Callback(hObject, eventdata, handles)%退出程序delete(handles.figure1);-下面是图像菜单:-function cut_me

24、nu_item_Callback(hObject, eventdata, handles)%截图并保存处理global original_imageglobal modified_imageset(handles.structure_element, Visible, off);axes(handles.axesr);modified_image = imcrop(original_image);imshow(modified_image);imwrite(modified_image,cut.jpg); title(截图并保存);-function brightness_menu_item_

25、Callback(hObject, eventdata, handles)%亮度、对比度处理set(handles.uipanel3, Visible, on);axes(handles.axesr);global original_imageglobal modified_imageprompt=input parameter1,input parameter2,input parametergamma; defans=0 0.7,0 1,1; p=inputdlg(prompt,input parameter,1,defans); p1=str2num(p1); p2=str2num(p2

26、); p3=str2num(p3); gamma=p3; x=(original_image); modified_image=imadjust(x,p1,p2,gamma); axes(handles.axesr); imshow(modified_image); title(亮度、对比度处理);function Id_Callback(hObject, eventdata, handles)%亮度滑动处理global original_imageglobal modified_imageaxes(handles.axesr);x=(original_image);handles.beta=

27、get(handles.Id,value);handles.gm=get(handles.gamma,value);modified_image=imadjust(x,0 handles.beta,0 1,handles.gm); imshow( modified_image);title(亮度、对比度处理后);-function Id_CreateFcn(hObject, eventdata, handles)usewhitebg = 1;if usewhitebg set(hObject,BackgroundColor,.9 .9 .9);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);end-function gamma_Callback(hObject, eventdata, handles)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1