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

下载本文档

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

文档简介

1、仅供个人参考基于MATLAB数字图像处理平台设计摘要数字图像处理技术在各个行业得到广泛的应用,其交互式的图形界面是操作者方便使用这些技术的途径。本文主要介绍了基于MATLAB的图形用户界面(GUI)来设计一个简单实用的图像处理软件平台,其中具备图像处理的常用功能,以满足用户的使用。文章详细阐述了一下图像处理软件平台的设计过程。本文的GUI设计所制作的图像处理软件平台可以实现的功能有五个模块:图像变换、图像增强、图像分割、图像变形以及其它常用处理。其中也讲述了GUI的基本常用操作及文件的打开、保存及退出。文章基本介绍了以上的内容,关于软件还有许多未能实现的功能有待于日后的逐步开发和学习。关键词:

2、GUI;图像变换;图像增强;图像分割;图像变形;图像处理ABSTRACTDigitalimageprocessingtechnologyhasbeenwidelyusedinvariousindustries,theirinteractivegraphicalinterfaceisthewayoftheoperatoreaseofuseofthesetechnologies.Thisarticlemainlyintroducedthegraphicaluserinterface(GUI)basedonMATLABtodesignasimpleandpracticalplatformforthe

3、imageprocessingsoftware,Whichhavecommonlyusedimageprocessingfunction,inordertomeettheuser'suse.Thearticleexpoundsthedesignprocessoftheimageprocessingsoftwareplatform.ThispapermadetheGUIdesignofimageprocessingsoftwareplatformcanrealizethefunctionoffivemodules:imagetransformation,imageenhancement,

4、imagesegmentation,imagedistortionandothercommonlyusedprocessing.ThebasiccommonoperationsofwhichalsotellsthestoryofGUIandfileopen,save,andexit.Thecontentofthearticleintroducestheabovebasic,aboutsoftwareandmanyfailtorealizethefunctionofthesubjecttothegradualdevelopmentandlearninginthefuture.Keywords:G

5、UI;Imagetransformation;Imageenhancement;Imagesegmentation;Imagedeformation;Theimageprocessing不得用于商业用途仅供个人参考目录1 绪论错误!未定义书签。1.1 设计要求及目的错误!未定义书签。1.2 课题分析错误!未定义书签。1.3 总体设计错误!未定义书签。2 具体设计错误!未定义书签。2.1 菜单设计错误!未定义书签。2.2 图像的打开、保存及退出错误!未定义书签。2.2.1 图像打开错误!未定义书签。2.2.2 图像保存错误!未定义书签。错误!未定义书签。2.3 图像变换错误!未定义书签。2.3.

6、1 傅里叶变换错误!未定义书签。2.3.3 离散余弦变换错误!未定义书签。2.4 图像增强错误!未定义书签。2.4.1 空间域增强错误!未定义书签。2.4.2 频率域增强错误!未定义书签。2.5 图像分割错误!未定义书签。2.5.1 阈值分割错误!未定义书签。2.5.2 梯度分割错误!未定义书签。2.6 图像变形错误!未定义书签。2.6.1 翻转错误!未定义书签。2.6.2 旋转错误!未定义书签。2.7 其它常用处理错误!未定义书签。2.7.1 亮度错误!未定义书签。2.7.2 对比度错误!未定义书签。2.7.3 截图错误!未定义书签。2.7.4 底片效果错误!未定义书签。2.7.5 二值处理

7、错误!未定义书签。3 结果分析错误!未定义书签。4 心得体会错误!未定义书签。附录错误!未定义书签。不得用于商业用途仅供个人参考基于MATLAB数字图像处理平台设计MATLAB是近几年来国内外使用最为广泛的优秀科技软件之一。其语法结构简单,具有极强的数值计算、数据分析、图形绘制及图像处理等功能。具有高质量的图形可视化效果和强大的界面设计能力。因而在数字图像处理中有着其他语言所无法比拟的优势。图形用户界面(GUI)是提供人机交互的工具和方法。利用GUI制作图像处理软件能够实现图像处理的各个内容,主要有:图像空间变换:邻域和块操作;二值图像操作;线性滤波和滤波器设计;变换域处理;图像分析和增强;图

8、像恢复;图像压缩;形态学运算等。1绪论1.1 设计要求及目的设计要求:以MATLAB作为工具,开发一个图像处理软件。主要进行图像处理的常用算法。由以下模块组成:图像变换;图像增强;图像分割。按各个模块进行功能扩充,也可加入其它常用的图像处理功能。设计目的:MATLAB软件为数字图像处理提供了功能丰富的工具,应用MATLAB友好的界面和实用高效的指令及模块,可以使人较快地认识、理解图像处理的相关概念,逐步掌握图像处理的基本方法。此课题的设计目的是综合运用MATLAB工具箱实现图像处理的GUI程序设计,学会和掌握GUI的图像处理平台设计。1.2 课题分析图1.1整体功能框图图像处理的常用功能,以满

9、足用户的使用。程序实现的图像处理功能分为五个模块:图像变换、图像增强、图像分割、图像变形以及其它常用处理。如图1.1所示。除以上的数字图像处理的功能外,该程序还要实现图像的读取显示、图像的保存及退出等基本功能。从而实现完整的数字图像平台设计,具有更好的交互性。1.3 总体设计软件的总体设计界面主要分为两个部分:显示区域与操作区域。具体界面布局如图1.2所示。图1.2界面布局Forpersonaluseonlyinstudyandresearch;notforcommercialuse显示区域:定义两个图形区域,左面为待处理图片来显示载入的原图像,右面为通过处理后的图像。操作区域:通过菜单栏的编

10、辑实现对图像的各种处理,分为文件和编辑两大部分。通过文件中的打开操作显示出处理前的图像,在编辑中选择某个图像处理功能后,将在已处理图片下就会显示出处理后的图片。2具体设计2.1 菜单设计通过MenuEditor曾创建菜单栏如图2.1所示。菜单的设计主要分为两大部分:文件和编辑。文件包含图像的打开、保存和退出;编辑包含图像处理功能的五个模块:图像变换、图像增强、图像分割、图像变形及其它常用处理,还有各个模块的分支。通过此菜单来控制显示或隐藏功能键。以图2.1的傅里叶变换为例,当添加上某一菜单后,修改名称为傅里叶变换,句柄为FFT,从而会在M文件中自动生成傅里叶变换的功能函数functionFFT

11、_Callback(hObject,不得用于商业用途仅供个人参考eventdata,handles),在此函数下编写能够实现傅里叶变换的程序便能实现对图像的傅里叶变换rdftffr图2.1菜单栏2.2 图像的打开、保存及退出2.2.1 图像打开图像的打开主要是通过以下程序来实现的:filename,pathname=uigefile('*jpg''*bmp''*tif;'*',载入图像');"选择相应路径打开图像;file=pathname,filename;x=imread(file);“读取选中的图像;imshow(

12、x);”在显示区域上显示图像。具体操作如图2.2所示,选择 文件”菜单中的 打开”后,出现 裁入图像”,选中想要处图2.2图像的打开理的图片后点击打开”,即可在显示区域中显示出处理前的图片。2.2.2 图像保存图像的保存主要是通过以下程序来实现的:“sfilenam偿filepath=uipufile('*jpg''*bmp''*tif;'*','保存图像文件','untitled.jpg');"选择图像文件保存的路径与格式;Sfilefullname=sfilepath,sfilename;im

13、write(handles.img,sfilefullname);”实现对图像的保存。具体操作如图2.3所示,选择文件”菜单中的保存”后,出现保存图像文件”,修改文件名后点击保存”,即可将处理后的图像保存到keshe的文件夹下。图2.3图像的保存程序的退出是通过“clc;,”“closea,Close(gcf);",Clear;”这些指令来清除指令窗,窗口,内存变量及函数。具体操为选择文件”菜单中的退出”后,便关闭了执行界面的窗口并消除了指令窗的所有指令。2.3 图像变换2.3.1 傅里叶变换傅里叶变换(FFT)实际上是将信号f与一组不同频率的复正弦作内积,这一组复正弦是变换的基向量

14、,傅里叶系数或傅里叶变换是f在这一组基向量上的投影。在图像处理技术的发展过程中,FFT起着十分重要的作用。它是线性系统分析的一个有力工具,它能够定量地分析诸如数字图像之类的数字化系统。FFT主要分为连续傅里叶变换和离散傅里叶变换,在数字图像处理中经常用到的是二维离散傅里叶变换。程序中主要是通过二维离散傅里叶变换函数fft2(),变换后四个角部分对应于低频成分,中央部分对应于高频成分。若想使低频成分出现在中央位置,则通过函数fftshift()将图像频谱中心从矩阵的原点移到矩阵中心。从而实现图像的二维傅里叶变换。具体程序见附录。原图像及傅里叶变换后的图像如图2.4所示。不得用于商业用途待处理图片

15、已处理图片原图像偶里叶变撷西像图2.4傅里叶变换2.3.3 离散余弦变换离散余弦变换(DFT)在图像处理中占有重要的位置,它实际上是傅里叶变换的实数部分,但是它比傅里叶变换有更强的信息集中能力。对于大多数自然图像,DCT能将大多数的信息放到较少的系数上去,因此就更能提高编码的效率。程序中主要是通过灰度变换函数rgb2gray()及二维离散余弦变换函数dct2()来实现对图像的二维离散余弦变换,具体程序见附录。其变换后的图像低频能量都集中在左上角区域,而向着右下角方向,频率越来越高。原图像及离散余弦变换后的图像如图2.5所示。已处理图片待处理图片离散杂滨变换图像图2.5离散余弦变换2.4 图像增

16、强图像增强是图像处理中的一类基本技术,其主要的目的改善图像的视觉效果,提高图像的清晰度。图像增强能够扩展对比度,增强图像中对象的边缘,消除或抑制噪声或保留图像中感兴趣的某些特性而抑制另一些特性等。图像增强方法按其处理所进行的空间不同,可分为空间域法和频率域法。2.4.1 空间域增强空间域法是在空间域内直接对像素灰度值进行运算处理,常用的空间域法有图像的直接灰度变换和直方图均衡化,下面分别介绍两种空域上的图像增强方法。(1)灰度变换仅供个人参考通过灰度变换可使图像动态范围加大,图像对比度扩展,图像清晰,特征明显,大大改善人眼的视觉效果。程序中主要通过灰度处理函数rgb2gray()对图像进行灰度

17、变换,将彩色图像转换成灰度图像。原图像及灰度图像如图2.6所示。待处理图片P为卜那国防原图像安度图像不得用于商业用途图2.6灰度变换(2)直方图均衡化直方图均衡化是对原始图像中的像素灰度作某种映射变换,使变换后的图像灰度的概率密度是均匀分布的,即变换后图像是一幅灰度级均匀分布图像,这意味着图像灰度的动态范围得到了增加,从而可提高图像的对比度。程序中主要通过灰度处理函数rgb2gray()先对图像进行灰度变换,然后通过直方图均衡化处理函数histeq()对灰度图像进行直方图均衡化处理。原图像及直方图均衡化后的图像如图2.7所示。待处理图片原图掾已处理图片直力图均衡化后的图像图2.7直方图均衡化2

18、.4.2 频率域增强频率域法就是在图像的某种变换域内,对图像的变换值进行运算,然后通过逆变换获得图像增强效果。这是一种间接处理方法,一般采用二维数字滤波方法来进行频率域的图像增强。(1)低通滤波图像的边缘以及噪声干扰在图像的频域上对应于图像傅里叶变换中的高频部分,而图不得用于商业用途像的背景区则对应于低频部分,因此可以用频域低通滤波法去除图像的高频成分,以去掉噪声,使图像平滑。程序中采用二阶巴特沃斯低通滤波器,先用函数fft2()对图像进行二维离散傅里叶变换,然后通过低通滤波器进行滤波后,再对滤波后的图像数据通过ifft2()进行傅里叶反变换,从而得到低通滤波后的图像。如图2.8所示。待处理图

19、片已处理图片原图像低逋渊波图像图2.8低通滤波器(2)高通滤波图像中的边缘或线条与图像频谱中的高频分量相对应,因此采用高通滤波器让高频分量顺利通过,可以使图像的边缘或线条变得更清楚,可实现图像的锐化。程序中采用二阶巴特沃斯高通滤波器,与低通滤波过程相同,先进行傅里叶变换,然后通过高通滤波器,再进行傅里叶反变换,从而得到高通滤波后的图像,具体程序见附录原图像及滤波后的图像如图2.9所示。待处理图片已处理图片原图像高通滤波图僚图2.9高通滤波器2.5 图像分割图像分割是一种重要的图像分析技术。为了识别和分析图像中的目标,需要将它们从图像中分离提取出来,在此基础上才有可能进一步对目标进行测量和对图像

20、进行利用。图像分割就是指把图像分成各具特性的区域并提取出感兴趣目标的技术和过程。2.5.1 阈值分割灰度阈值法是把图像的灰度分成不同的等级,然后用设置灰度阈值的方法确定有意义的区域或欲分割物的边界,该方法中最简单的就是二值化的阈值分割。程序中先通过函数graythresh()即用Otsu方法计算出全局图像阈值,再通过函数im2bw(,)基于一定阈值将图像转换成二值图像。原图像及阈值分割后的图像如图2.10所待处理图片原图像已处理图片阙值分割图像图2.10阈值分割2.5.2 梯度分割梯度分割即对图像进行边缘检测,图像边缘对图像识别和计算机分析十分有用。边缘能勾划出目标物体,使观察者一目了然。边缘

21、蕴含了丰富的内在信息,是图像识别中抽取图像特征的重要属性。Roberts算子程序中先通过函数rgb2gray()对图像进行灰度变换,再通过函数edge(,'roberts')即用Roberts算子识别灰度图像的轮廓,从而实现对图像的边缘检测。如图2.11所示。图 2.11 Roberts 算子2 2)Canny算子程序中先通过函数rgb2gray()对图像进行灰度变换,再通过函数edge(,'canny')即用Canny算子识别灰度图像的轮廓,如图2.12所示。Sobel算子程序中先通过函数rgb2gray()进行灰度变换,再通过函数edge(,'sob

22、el')即用Sobel算子识别灰度图像的轮廓,从而实现对图像的边缘检测。如图2.13所示。待处理图片原图像已处理图片C 3 my算子图像图2.12 Canny算子待处理图片原图像已处理图片Sqgl算子图像图2.13 Sobel算子2.6 图像变形2.6.1 翻转上下翻转:程序中通过函数flipud()对图像数据矩阵进行上下翻转,由于彩色图像不能直接进行矩阵翻转,因此需要先将彩色图像通过灰度变换处理后再进行翻转,原图及翻转后的图像如图2.14所示。上下翻转后的图像已处理图片待处理图片图2.14上下翻转仅供个人参考不得用于商业用途左右翻转:与上下翻转相同,先将图像进行灰度变换后,通过函数f

23、liplr()将图像数据矩阵进行左右翻转,原图及翻转后的图像如图2.15所示。待处理图片原图像已处理图片左右翻转后的图像图2.15左右翻转2.6.2 旋转打开图片后,选择编辑”菜单图像变形”中的旋转”后,执行界面会出现调整角度的输入对话框,在对话框中输入任意角度,则原图像将会旋转任意角度,输入正数逆时针旋O转,输入负数顺时针旋转。以90为例,在对话框中输入90,则图像逆时针旋转90,如图2.16所示。在程序中由prompt='调整角度'来显示输入对话框,函数inputdlg()创建对话框和输入框,输入角度后通过函数imrotate()进行相应的旋转。待处理图片原图像已处理图片旋

24、转由的图像图2.16图像旋转2.7 其它常用处理2.7.1 亮度当在编辑”菜单中选择亮度”后,会出现调整倍数的输入对话框,默认值为1,在对话框中输入数值后图像便会相应变换亮度。输入数值小于1时,图像变亮,输入数值大于1时,图像变暗。程序中通过函数imadjust()来实现,即将原图像的亮度值以输入数值描述的曲线关系映射到新的数值中,从而实现亮度的变化。以输入值0.5为例,变换后的图像如图2.17所示。待处理图片已处理图片图2.17亮度调整亮度说整后的图像2.7.2 对比度对比度增强:选择菜单中对比度增强”后,弹出输入参数的对话框,以输入参数2为例,对比度增强后的图像如图2.18所示。程序中通过

25、乘法函数immultiply()将原图像数据与输入数值相乘,从而增强图像的对比度。已处理图片待处理图片对比度增强的图像图2.18对比度增强对比度减弱:选择菜单中对比度减弱”后,弹出输入参数的对话框,同样以输入参数2为例,对比度减弱后的图像如图2.19所示。程序中通过除法函数imdivide()将原图像数据与输入数值相除,从而减弱图像的对比度。待处理图片已处理图片图2.19对比度减弱对比度减弱的西像2.7.3 截图当选择完菜单中的截图”后,鼠标箭头会变成一个十字,能够选择想要截取的图像部分,选中后就会直接显示出截取后的图像,如图2.20所示。程序中通过函数imcrop()来实待处理图片已处理图片

26、原图像图2.20截图现的,即返回图像的一个裁剪区域,允许用户以交互方式使用鼠标选定要剪切的区域。2.7.4 底片效果程序中通过函数imcomplement()对图像数据矩阵进行取反运算,即可实现底片效果,原图像及底片效果的图像如图2.21所示。待处理图片已处理图片原图傀底片图像图2.21底片效果2.7.5 二值处理二值化即将彩色图像转换成只有0和1两个数值的图像,程序中通过二值转换函数im2bw()将彩色图像转换为二值图像。原图像及转换后的二值图像如图2.22所示图2.22二值处理仅供个人参考3 结果分析经过我们小组的不断调试,软件已经得到了完善,达到了课设的基本要求,基于MATLAB数字图像

27、处理平台设计能实现的全部功能如下:(1) 设计图形用户界面,实现了图像的打开、保存及退出(2) 实现了对图像的傅里叶变换及离散余弦变换,其中离散余弦变换只能对灰度图像处理。(3) 实现了图像空间域增强包括灰度变换和直方图均衡化,还有图像频率域增强包括低通滤波器和高通滤波器。其中直方图均衡化,低通滤波和高通滤波均只支持对灰度图像处理。(4)实现了图像分割:阈值分割和梯度分割,梯度分割有Roberts算子、Canny算子、Sobel算子。其中梯度分割需要对图像先进行灰度变换。(5) 实现了图像的翻转和旋转。图像的翻转只支持灰度图像。(6) 实现了图像的亮度,对比度的调整,能够对图像截图、做出底片效

28、果及二值化处理。实验程序虽然基本实现了以上这些功能,但遗憾的是有些功能只支持对灰度的图像处理,还不能直接对彩色图像进行处理。4心得体会通过两周的MATLAB课程设计实践,使我对MATLAB的使用有了进一步的了解和熟悉。还记得当初我们小组抽到这个题目的时候,每个人看到这个题目都无所适从。虽然曾经学过关于数字图像处理的课程,但对于MATLAB的数字图像处理的实际运用并不是很熟悉,特别是对此次GUI设计更是没有丝毫接触过的。虽然对课题感到很懵懂,但在指导老师的提示与指导后,我们开始找到了解决问题的路径。我们到图书馆借了几本相关的书,又从网上收集了大量的资料,为这次课设做了较为充分的准备,在参考了相关

29、材料及程序后,我对自己要做的课设内容有了进一步的了解,并对MATLAB的使用有了更深的体会。当然,在课设的进行过程中,我们还是遇到了不少问题。例如,起初由于我对句柄使用以及一些函数使用的不恰当,使得在对图像文件的保存上就遇到了问题,不过在我们小组的讨论研究下轻松的就解决了。随着课设的进行,对matlab的的熟悉度逐步加深。在基本功能已经完成的基础上,我们开始进行一些扩张功能的尝试,比如图像的旋转、翻转,图像亮度、对比度的调整,截图等功能,也实现了较为理想的结果。虽然这课题最终的功能还不是很完善,但是我还是较为满意的。本次的课程设计,不但鞭策着我去巩固MATLAB的理论知识,还提高了我对MATL

30、AB的实际操作运用,使得理论与实践相结合,为进一步学MATLAB打下了坚实的基础。附录functionvarargout=keshe(varargin)gui_Singleton=1;gui_State=struct('gui_Name',mfilename,.'gui_Singleton',gui_Singleton,.'gui_OpeningFcn',keshe_OpeningFcn,.'gui_OutputFcn',keshe_OutputFcn,.'gui_LayoutFcn',.'gui_Call

31、back',);ifnargin&&ischar(varargin1)gui_State.gui_Callback=str2func(varargin1);endifnargoutvarargout1:nargout=gui_mainfcn(gui_State,varargin:);elsegui_mainfcn(gui_State,varargin:);end%functionkeshe_OpeningFcn(hObject,eventdata,handles,varargin)handles.output=hObject;guidata(hObject,handle

32、s);%functionvarargout=keshe_OutputFcn(hObject,eventdata,handles)varargout1=handles.output;%functionopen_Callback(hObject,eventdata,handles)%hObjecthandletoopen(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)filename,pathname=uigetfile

33、('*.jpg''*.bmp''*.tif''*.*','载入图像');%选择路径打开图像ifisequal(filename,0)|isequal(pathname,0)%ffilename为0或pathname为0,即未选中文件errordlg('未选中文件','警告');建立一个名为警告的错误对话框,内容为朱选中文件return;elsefile=pathname,filename;%将文件名和目录名组合成一个完整的路径x=imread(file);%读入图像set(handl

34、es.axes1,'HandleVisibility','ON');%设置图形对象属性,可从命令窗口中和GUIs中访问axes(handles.axes1);%定义图形区域axes1imshow(x);%显示图像set(handles.axes1,'HandleVisibility','OFF');%设置图形对象属性,不可从命令窗口中和GUIs中访问axes(handles.axes2);%定义图形区域axes2imshow(x);%显示图像handles.img=x;%把图像发给handles.imgguidata(hObjec

35、t,handles);%把handles句柄更新end%functionsave_Callback(hObject,eventdata,handles)%hObjecthandletosave(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)sfilename,sfilepath=uipufile('*jpg''*bmp''*tif;'*','保存图像文件

36、','untitled.jpg');%返回要保存的图像文件if isequal(sfilename,sfilepath,0,0) sfilefullname=sfilepath ,sfilename; imwrite(handles.img,sfilefullname);elsemsgbox(取消保存?,保存图像文件);%如果不是取消保存%将文件名和目录名组合成一个完整的路径%保存图像%弹出一个名为保存图像文件的对话框,内 容为取消保存? ”不得用于商业用途end%functionexit_Callback(hObject,eventdata,handles)%hObj

37、ecthandletoexit(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)clc;%清除指令窗closeall;%关闭所有句柄可见的窗口close(gcf);%关闭当前窗口clear;%清除内存变量和函数%functionchange_Callback(hObject,eventdata,handles)functionenhance_Callback(hObject,eventdata,handles)func

38、tionfenge_Callback(hObject,eventdata,handles)functionfile_Callback(hObject,eventdata,handles)functionedit_Callback(hObject,eventdata,handles)functionfanzhuan_Callback(hObject,eventdata,handles)%functionFFT_Callback(hObject,eventdata,handles)%hObjecthandletoFFT(seeGCBO)%eventdatareserved-tobedefinedi

39、nafutureversionofMATLABaxes(handles.axes2);i1=handles.img;i2=im2double(i1);f1=fft2(i2);fc1=fftshift(f1);i=log(1+abs(fc1);imshow(i);%handlesstructurewithhandlesanduserdata(seeGUIDATA)%获取图像%图像矩阵转换成双精度浮点类型%对图像进行二维离散傅里叶变换%将变换后的图象频谱中心从矩阵的原点移到矩阵的中心%对变换后的图像矩阵数据求绝对值后取自然对数xlabel(傅里叶变换图像);handles.img=i;guidat

40、a(hObject,handles);%把handles句柄更新%functionDCT_Callback(hObject,eventdata,handles)%hObjecthandletoDCT(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%获取图像 %灰度变换 %对图像进行二维离散余弦变换 %对变换后的图像矩阵数据求绝对值后取自然对数%把handles句柄更新axes(handles.axes2);j1=ha

41、ndles.img;j2=rgb2gray(j1);d=dct2(j2);j=log(abs(d);imshow(j);xlabel('离散余弦变换图像');handles.img=j;guidata(hObject,handles);%functionhuidu_Callback(hObject,eventdata,handles)%hObjecthandletohuidu(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(

42、seeGUIDATA)globalT%定义全局变量axes(handles.axes2);%定义图形区域axes2T=getimage;%从坐标轴获取图像数据x=rgb2gray(handles.img);%利用rgb2gray函数对源图像进行灰度处理imshow(x);%显示图像xlabel('灰度图像');%x轴名为灰度图像”handles.img=x;%把图像发给handles.imgguidata(hObject,handles);%把handles句柄更新%functionzhifangtu_Callback(hObject,eventdata,handles)%hO

43、bjecthandletozhifangtu(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)axes(handles.axes2);%定义图形区域axes2T=getimage;%从坐标轴获取图像数据x=rgb2gray(handles.img);%对图像进行灰度处理h=histeq(x);%对图像进行直方图均衡化处理imshow(h);%显示图像xlabel('直方图均衡化后的图像');handle

44、s.img=h;guidata(hObject,handles);%把handles句柄更新%functionlow_Callback(hObject,eventdata,handles)仅供个人参考%hObjecthandletolow(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)axes(handles.axes2);y1=handles.img;x=rgb2gray(handles.img);f=double

45、(x);g=fft2(f);g=fftshift(g);M,N=size(g);nn=2;d0=50;m=fix(M/2); n=fix(N/2);%获取图像%灰度变换%数据类型转换为双精度数值%二维离散傅里叶变换%将变换后的图象频谱中心从矩阵的原点移到矩阵的中心%返回矩阵g的大小,即M为行数,N为列数%二阶巴特沃斯低通滤波器%截止频率50Hz%取矩阵g的行数和列数一半的整数fori=1:Mforj=1:N%循环d=sqrt(i-m)A2+(j-n)A2);h=1/(1+0.414*(d/d0)A(2*nn);%计算低通滤波器传递函数result(i,j)=h*g(i,j);%结果返回到res

46、ultendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2);imshow(y3);xlabel('低通滤波图像');handles.img=y3; guidata(hObject,handles); % %将图象频谱中心从矩阵的中心移到矩阵的原点%二维离散傅里叶反变换%把矩阵y2 实部转换成8 位无符号数据%显示低通滤波后的图像%把handles句柄更新function high_Callback(hObject, eventdata, handles)% hObject handle to high (s

47、ee GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles.axes2);x=handles.img;y=rgb2gray(handles.img);f=double(y);k=fft2(f);g=fftshift(k);M,N=size(g);nn=2;d0=25;m=fix(M/2); n=fix(N/2);for i=1:M%获取图像%灰度变换%数据类型转换

48、为双精度数值%二维离散傅里叶变换%将变换后的图象频谱中心从矩阵的原点移到矩阵的中心%返回矩阵 g 的大小,即 M 为行数, N 为列数%二阶%截止频率 25Hzfor j=1:N%循环d=sqrt(i-m)A2+(j-n)A2);endif d<=d0h=0;else h=1;endresult(i,j)=h*g(i,j);endendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2);imshow(y3);xlabel('高通滤波图像);handles.img=y3;guidata(hObject,handle

49、s);% %结果返回到 result% 将图象频谱中心从矩阵的中心移到矩阵的原点% 二维离散傅里叶反变换% 把矩阵 y2 实部转换成8 位无符号数据% 显示高通滤波后的图像%把handles句柄更新functionyuzhi_Callback(hObject,eventdata,handles)%hObjecthandletoyuzhi(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%从坐标轴获取图像数据%用 Ots

50、u 方法计算全局图像阈值%基于一定阈值把图像转换为二值图像%显示阈值分割后的图像%把handles句柄更新axes(handles.axes2);T=getimage;level=graythresh(T);BW=im2bw(T,level);imshow(BW);xlabel('阈值分割图像');handles.img=BW;guidata(hObject,handles);%functiontidu_Callback(hObject,eventdata,handles)functionkongyu_Callback(hObject,eventdata,handles)fun

51、ctionpinyu_Callback(hObject,eventdata,handles)functionbianxing_Callback(hObject,eventdata,handles)functionqita_Callback(hObject,eventdata,handles)functionduibidu_Callback(hObject,eventdata,handles)%functionroberts_Callback(hObject,eventdata,handles)%hObjecthandletoroberts(seeGCBO)%eventdatareserved-

52、tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)axes(handles.axes2);T=getimage;%从坐标轴获取图像数据R1=rgb2gray(T);%灰度变换R2=edge(R1,'roberts');%用roberts算子识别灰度图像的轮廓imshow(R2);%显示图像xlabel('Roberts算子图像');不得用于商业用途仅供个人参考handles.img=R2;guidata(hObject,handles)%把h

53、andles句柄更新%functioncanny_Callback(hObject,eventdata,handles)%hObjecthandletocanny(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)axes(handles.axes2);%从坐标轴获取图像数据%灰度变换%用 canny 算子识别灰度图像的轮廓%把handles句柄更新T=getimage;C1=rgb2gray(T);C2=edge(C1

54、,'canny');imshow(C2);xlabel('Canny算子图像');handles.img=C2;guidata(hObject,handles);%functionsobel_Callback(hObject,eventdata,handles)%hObjecthandletosobel(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLABaxes(handles.axes2);T=getimage;L1=rgb2gray(T);L2=edge(L1,'sobel&#

55、39;);%handlesstructurewithhandlesanduserdata(seeGUIDATA)%从坐标轴获取图像数据%灰度变换%用sobel算子识别灰度图像的轮廓imshow(L2);xlabel('Sobel算子图像');handles.img=L2;%把handles句柄更新guidata(hObject,handles);%functionxuanzhuan_Callback(hObject,eventdata,handles)%hObjecthandletoxuanzhuan(seeGCBO)%eventdatareserved-tobedefined

56、inafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)axes(handles.axes2);T=getimage;%从坐标轴获取图像数据prompt='调整角度'%用于显示可提示用户进行输入角度的对话框defans='0'%对话框内显示默认数值为0p=inputdlg(prompt,'input',1,defans);%创建并打开标题为input的输入对话框,包含“调整角度”,输入框为1行,对话框中默认显示数值为0p1=str2num(p1);%将字符串转换为数值f=imrotate(handles.img,p1,'bilinear','crop');%将图像handles.img饶图像的中心点旋转p1度,p1为正数逆时针旋转,为负数顺时针旋转,bilinear为使用双线性插值法,crop为旋转后输出图像尺寸与原图像尺寸一样imshow(f);%显示旋转后图像xlabel('旋转后的图像);handles.img=f;guidata(hObject,handles);%把handles句柄更新%functionshangx

温馨提示

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

评论

0/150

提交评论