图像分割程序设计_第1页
图像分割程序设计_第2页
图像分割程序设计_第3页
图像分割程序设计_第4页
图像分割程序设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、*实践教学实践教学*兰州理工大学兰州理工大学计算机与通信学院2012 年秋季学期 图像处理图像处理 综合训练综合训练题 目: 图像分割程序设计 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 目目 录录摘 要.1一、前言.2二、算法分析与描述.3三、详细设计过程.5四、调试过程中出现的问题及相应解决办法.8五、程序运行截图及其说明.8六、简单操作手册.12设计总结.15参考资料.16致谢.17附录.18摘摘 要要图像分割就是从图像中将某个特定区域与其他部分进行分离并提取出来的处理图像分割处理实际上就是区分图像中的“前景目标”和“背景”所以通常又称之为图像的二值化处理。图像分割就是把图像分

2、成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。近年来,研究人员不断改进原有的图像分割方法并把其它学科的一些新理论和新方法用于图像分割,提出了不少新的分割方法。关键词:图像分割;阈值;二值化;一、前言一、前言 图形图像处理的应用领域涉及人类生活和工作的各个方面,它是从 60年代以来随计算机的技术和 vlsi 的发展而产生、发展和不断成熟起来的一个新技术领域理论上和实际应用上都并取得了巨大的成就。数字图像处理与模拟图像处理的

3、根本不同在于,它不会因图像的存储、传输或复制等一系列变换操作而导致图像质量的退化,所以图形图像的处理在我们的生活中又很重要的作用。 在对图像的研究和应用中,人们往往只对图像中的某些部分感兴趣。这些部分通常称为目标或前景,它们一般对应图像中特定的、具体独特性质的区域。为了辨识和分析目标,需要将它们分别提取出来,在此基础上才有可能对目标进一步利用。图像分割就是指把图像分成各具特性的区域并提取出感兴趣的目标的技术和过程。在图象分析中,通常需将所关心的目标从图象中提取出来,即图象的分割。图象分割在图象分析,图象识别,图象检测等方面占有非常重要的位置。二、算法分析与描述二、算法分析与描述1.图像分割的数

4、学描述令集合 r 代表整个区域,对 r 的分割可看作将 r 分成若干个满足以下 5 个条件的非空子集(子区域)r1 ,r1 ,rn (1)所有子集构成图像;(2)各子集不重叠;(3)每个子集中的像素有某种共同的属性;(4)不同的子集属性不同;(5)每个子集中的所有像素应该是连通的。2. 基于灰度直方图的峰谷法 图像的灰度直方图必须是双峰的直方图的左侧峰为亮度较高的部分,这部分恰好对应于较暗的背景部分,直方图的右侧为亮度较高的部分,这里恰好对应于会面中图案部分。显然灰度直方图的峰谷法是一种有效且非常简单的阈值方法,但是该方法有一个局限性就是灰度值放度必须是双峰的。3. 区域生长区域生长的基本思想

5、是将具有相似性质的像素集合起来构成区域。具体先对每个需要分割的区域找一个种子像素作为生长的起点,然后将种子像素周围邻域中与种子像素有相同或相似性质的像素(根据某种事先确定的生长或相似准则来判定)合并到种子像素所在的区域中。将这些新像素当作新的种子像素继续进行上面的过程,直到再没有满足条件的像素可被包括进来。这样一个区域就长成了。区域生长需要选择一组能正确代表所需区域的种子像素,确定在生长过程中的相似性准则,制定让生长停止的条件或准则。相似性准则可以是灰度级、彩色、纹理、梯度等特性。选取的种子像素可以是单个像素,也可以是包含若干个像素的小区域。大部分区域生长准则使用图像的局部性质。生长准则可根据

6、不同原则制定,而使用不同的生长准则会影响区域生长的过程。 区域生长法的优点是计算简单,对于较均匀的连通目标有较好的分割效果。它的缺点是需要人为确定种子点,对噪声敏感,可能导致区域内有空洞。另外,它是一种串行算法,当目标较大时,分割速度较慢,因此在设计算法时,要尽量提高效率。3、详细设计过程详细设计过程1.流程图2.区域生长法区域生长法的数学表达:一致性判别条件:灰度变化阈值:生长准则: 为待测生长的点领域内的灰度值matlab 代码:global a0a0=getimage;axes(handles.axes2);seed=100,220;读入图像对输出的图像进行保存对保存图像读取输出阈值处理

7、结果输出区域生长处理结果输出原图像退出程序结束开 始thresh=15;a=rgb2gray(a0);a=imadjust(a,min(min(double(a)/255,max(max(double(a)/255,);a=double(a); b=a; r,c=size(b); n=r*c;pixel_seed=a(seed(1),seed(2);q=seed(1) seed(2);top=1;m=zeros(r,c);m(seed(1),seed(2)=1;count=1;while top=0r1=q(1,1);c1=q(1,2);p=a(r1,c1);dge=0;for i=-1:1f

8、or j=-1:1if r1+i0 & c1+j0if abs(a(r1+i,c1+j)-p)=ntop=1;endq=q(2:top,:);top=top-1;endimshow(b,);title( 区域生长分割);handles.img=b;guidata(hobject,handles);3. 基于灰度直方图的峰谷法 由封谷法的概念可得 matalb 代码:global iaxes(handles.axes2);i=getimage;if ndims(i) = 3i = rgb2gray(i);endfxy = imhist(i, 256); %统计每个灰度值的个数%figur

9、e;%subplot(2, 2, 1); %imshow(i, ); %title(原图)%subplot(2, 2, 2); plot(fxy); %画出灰度直方图%title(直方图)p1 = input num:;p2 = 180;p3 = inputdlg(p1,input num:1256,1,p2);p = str2num(p31); p = p/255;bw = im2bw(i, p); %小于阈值的为黑,大于阈值的为白%subplot(2, 2, 3);4、调试过程中出现的问题及相应解决办法调试过程中出现的问题及相应解决办法问题一:最初的调试过程中总是区域生长算法调试不成功,并

10、且 matlab gui 的设计过程也出现了很多问题,最后发现调用函数方法错误,最后通过查 matlab 基础资料得到解决。问题二:在设计 gui 的时候每次都是处理后的图像坐标位置没有放到固定的区域,通过查找 matlab gui 设计资料解决了问题。5、程序运行截图及其说明程序运行截图及其说明1.文件打开读取处理图片截图如下:图 6.1 原图2.点击峰谷法分割图像并截图得:图 6.2 峰谷法分割3.点击区域生长法分割图像截图得:图 6.3 区域生长法分割六、简单操作手册六、简单操作手册图 6.1 “文件打开”按路径打开图像文件图 6.2 “保存”按路径保存处理完的图像文件图 6.3 “峰谷

11、法分割图像”对已打开的图像按阈值进行峰谷法分割处理 图 6.4 “区域生长法分割图像” 对已打开的图像进行区域生长法分割处理设计总结设计总结我们知道人类所获得信息的 70%以上来自视觉,换句话说人类将用自己双眼所观察到的世界进行缜密的分析与思考之后,推动了科技的进步也推动了整个世界的发展。经过了为期两周的课程设计,我深刻的感受到了图像处理的强大,与此同时,感受到更多的就是编程的辛苦,只要一个小地方出错以后,就要对整个程序进行又一遍的检查,真可为是牵一发而动全身呀,在当初做的时候,虽让将每一个功能模块的代码都写出来,但是在将他们整合起来的时候,在传值和做图形用户界面的时候出现了很大的问题,最终还

12、是通过网络和咨询同学才得以解决问题,所以在这要衷心的感谢网络和同学们。参考资料参考资料1 朱 虹. 数字图像处理基础m. 科学出版社, 20052 r c.gonzalez, r e.woods 著,阮秋琦,阮宇智等译.数字图像处理(第 2 版).北京:电子工业出版社,20033 k.r.castleman. 数字图像处理.北京:电子工业出版社,20024 章毓晋.图像处理与分析-图像工程(上册),清华大学,20015r c.gonzalez, r e.woods, s l. eddins 著,阮秋琦,阮宇智等译.数字图像处理(matlab 版).北京:电子工业出版社,2005致谢致谢首先,我

13、要感谢我的指导老师,他严谨细致、一丝不苟的作风一直是我生活、学习中的榜样,给了起到了指明灯的作用;他们循循善诱的教导和不拘一格的思路给予我无尽的启迪,让我很快就感受到了设计的快乐并融入其中。其次我要感谢同组同学对我的帮助和指点,没有他们的帮助和提供资料,没有他们的鼓励和加油,这次课程设计就不会如此的顺利进行,最后就是要感谢网络给我们提供了大量的资料。附录附录function varargout = keshe(varargin)% keshe matlab code for keshe.fig% keshe, by itself, creates a new keshe or raises t

14、he existing% singleton*.% h = keshe returns the handle to a new keshe or the handle to% the existing singleton*.% keshe(callback,hobject,eventdata,handles,.) calls the local% function named callback in keshe.m with the given input arguments.% keshe(property,value,.) creates a new keshe or raises the

15、% existing singleton*. starting from the left, property value pairs are% applied to the gui before keshe_openingfcn gets called. an% unrecognized property name or invalid value makes property application% stop. all inputs are passed to keshe_openingfcn via varargin.% *see gui options on guides tools

16、 menu. choose gui allows only one% instance to run (singleton).% see also: guide, guidata, guihandles% edit the above text to modify the response to help keshe% last modified by guide v2.5 10-jan-2013 17:51:00% begin initialization code - do not editgui_singleton = 1;gui_state = struct(gui_name, mfi

17、lename, . gui_singleton, gui_singleton, . gui_openingfcn, keshe_openingfcn, . gui_outputfcn, keshe_outputfcn, . gui_layoutfcn, , . gui_callback, );if nargin & ischar(varargin1) gui_state.gui_callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_state, varargin:);else

18、gui_mainfcn(gui_state, varargin:);end% end initialization code - do not edit% - executes just before keshe is made visible.function keshe_openingfcn(hobject, eventdata, handles, varargin)% this function has no output args, see outputfcn.% hobject handle to figure% eventdata reserved - to be defined

19、in a future version of matlab% handles structure with handles and user data (see guidata)% varargin command line arguments to keshe (see varargin)% choose default command line output for keshehandles.output = hobject;% update handles structureguidata(hobject, handles);% uiwait makes keshe wait for u

20、ser response (see uiresume)% uiwait(handles.figure1);% - outputs from this function are returned to the command line.function varargout = keshe_outputfcn(hobject, eventdata, handles) % varargout cell array for returning output args (see varargout);% hobject handle to figure% eventdata reserved - to

21、be defined in a future version of matlab% handles structure with handles and user data (see guidata)% get default command line output from handles structurevarargout1 = handles.output;% -function open_file_callback(hobject, eventdata, handles)% hobject handle to open_file (see gcbo)% eventdata reser

22、ved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)filename,pathname=uigetfile(*.jpg;*.bmp;*.tif;*.*,载入图像);if isequal(filename,0)|isequal(pathname,0) errordlg(没有选中文件,出错); return;else file=pathname,filename; global s %设置一个全局变量 s,保存初始图像路径,以便之后的

23、还原操作 s=file; x=imread(file); set(handles.axes1,handlevisibility,on); axes(handles.axes1); imshow(x); set(handles.axes1,handlevisibility,off); axes(handles.axes2); imshow(x); handles.img=x; guidata(hobject,handles);end% -function save_file_callback(hobject, eventdata, handles)% hobject handle to save

24、_file (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)sfilename ,sfilepath=uiputfile(*.jpg;*.bmp;*.tif;*.*,保存图像文件,untitled.jpg); if isequal(sfilename,sfilepath,0,0) sfilefullname=sfilepath ,sfilename; imwrite(han

25、dles.img,sfilefullname); else msgbox(你按了取消键,保存失败); end % -function close_file_callback(hobject, eventdata, handles)% hobject handle to close_file (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)clc;close all;clos

26、e(gcf);clear;% - executes on button press in fenggu.function fenggu_callback(hobject, eventdata, handles)% hobject handle to fenggu (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)%clc; clear all; close all;%i =

27、imread(lena.jpg);global iaxes(handles.axes2);i=getimage;if ndims(i) = 3i = rgb2gray(i);endfxy = imhist(i, 256); %统计每个灰度值的个数%figure;%subplot(2, 2, 1); %imshow(i, ); %title(原图)%subplot(2, 2, 2); plot(fxy); %画出灰度直方图%title(直方图)p1 = input num:;p2 = 180;p3 = inputdlg(p1,input num:1256,1,p2);p = str2num(p3

28、1); p = p/255;bw = im2bw(i, p); %小于阈值的为黑,大于阈值的为白%subplot(2, 2, 3); imshow(bw); title(双峰阈值分割)handles.img=bw;guidata(hobject,handles);% -function m_file1_r_callback(hobject, eventdata, handles)% hobject handle to m_file1_r (see gcbo)% eventdata reserved - to be defined in a future version of matlab% h

29、andles structure with handles and user data (see guidata)%a = imread(c:usersadministratordesktop新建文件夹lena.jpg); % 读入图像% - executes on button press in quyu.function quyu_callback(hobject, eventdata, handles)% hobject handle to quyu (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)global a0a0=getimage;axes(handles.axes2);%a0=imread(lena.jpg);%读入图像seed=100,220;%选择起始位置thresh=15;%相似性选择阈值a=rgb2gray(a0);%灰度化a=imadjust(a,min(min(double(a)/255,max(max(double(a)/255,);

温馨提示

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

评论

0/150

提交评论