图像分割程序设计.doc

上传人:土8路 文档编号:10311639 上传时间:2021-05-07 格式:DOC 页数:26 大小:614KB
返回 下载 相关 举报
图像分割程序设计.doc_第1页
第1页 / 共26页
图像分割程序设计.doc_第2页
第2页 / 共26页
图像分割程序设计.doc_第3页
第3页 / 共26页
图像分割程序设计.doc_第4页
第4页 / 共26页
图像分割程序设计.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《图像分割程序设计.doc》由会员分享,可在线阅读,更多相关《图像分割程序设计.doc(26页珍藏版)》请在三一文库上搜索。

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

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

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

4、面占有非常重要的位 置。 二、算法分析与描述二、算法分析与描述 1.图像分割的数学描述 令集合 R 代表整个区域,对 R 的分割可看作将 R 分成若干个满足以下 5 个条件 的非空子集(子区域)R1 ,R1 ,Rn (1)所有子集构成图像; (2)各子集不重叠; (3)每个子集中的像素有某种共同的属性; (4)不同的子集属性不同; (5)每个子集中的所有像素应该是连通的。 2. 基于灰度直方图的峰谷法 图像的灰度直方图必须是双峰的直方图的左侧峰为亮度较高的部分,这 部分恰好对应于较暗的背景部分,直方图的右侧为亮度较高的部分,这里恰好 对应于会面中图案部分。显然灰度直方图的峰谷法是一种有效且非常

5、简单的阈 值方法,但是该方法有一个局限性就是灰度值放度必须是双峰的。 3. 区域生长 区域生长的基本思想是将具有相似性质的像素集合起来构成区域。具 体先对每个需要分割的区域找一个种子像素作为生长的起点,然后将种子像素 周围邻域中与种子像素有相同或相似性质的像素(根据某种事先确定的生长或相 似准则来判定)合并到种子像素所在的区域中。将这些新像素当作新的种子像素 继续进行上面的过程,直到再没有满足条件的像素可被包括进来。这样一个区 域就长成了。 区域生长需要选择一组能正确代表所需区域的种子像素,确定在生长 过程中的相似性准则,制定让生长停止的条件或准则。相似性准则可以是灰度 级、彩色、纹理、梯度等

6、特性。选取的种子像素可以是单个像素,也可以是包 含若干个像素的小区域。大部分区域生长准则使用图像的局部性质。生长准则 可根据不同原则制定,而使用不同的生长准则会影响区域生长的过程。 区域生长法的优点是计算简单,对于较均匀的连通目标有较好的分割效果。它 的缺点是需要人为确定种子点,对噪声敏感,可能导致区域内有空洞。另外, 它是一种串行算法,当目标较大时,分割速度较慢,因此在设计算法时,要尽 量提高效率。 3、详细设计过程详细设计过程 1.流程图 2.区域生长法 区域生长法的数学表达: 一致性判别条件: 灰度变化阈值: 生长准则: 为待测生长的点领域内的灰度值 Matlab 代码: global

7、A0 A0=getimage; axes(handles.axes2); seed=100,220; 读入图像 对输出的图像进行保存 对保存图像读取 输出阈值处理结果 输出区域生长处理结果 输出原图像 退出程序 结束 开 始 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=zero

8、s(r,c); M(seed(1),seed(2)=1; count=1; while top=0 r1=q(1,1); c1=q(1,2); p=A(r1,c1); dge=0; for i=-1:1 for j=-1:1 if r1+i0 end q=q(2:top,:); top=top-1; end imshow(B,); title( 区域生长分割); handles.img=B; guidata(hObject,handles); 3. 基于灰度直方图的峰谷法 由封谷法的概念可得 Matalb 代码: global I axes(handles.axes2); I=getimage

9、; if ndims(I) = 3 I = rgb2gray(I); end fxy = 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(p31); p = p/255; bw = im2bw(I, p); %小于阈值的为黑,大

10、于阈值的为白 %subplot(2, 2, 3); 4、调试过程中出现的问题及相应解决办法调试过程中出现的问题及相应解决办法 问题一: 最初的调试过程中总是区域生长算法调试不成功,并且 matlab gui 的设计过程 也出现了很多问题,最后发现调用函数方法错误,最后通过查 matlab 基础资料 得到解决。 问题二: 在设计 gui 的时候每次都是处理后的图像坐标位置没有放到固定的区域,通过 查找 matlab gui 设计资料解决了问题。 5、程序运行截图及其说明程序运行截图及其说明 1.文件打开读取处理图片截图如下: 图 6.1 原图 2.点击峰谷法分割图像并截图得: 图 6.2 峰谷法

11、分割 3.点击区域生长法分割图像截图得: 图 6.3 区域生长法分割 六、简单操作手册六、简单操作手册 图 6.1 “文件打开”按路径打开图像文件 图 6.2 “保存”按路径保存处理完的图像文件 图 6.3 “峰谷法分割图像”对已打开的图像按阈值进行峰谷法分割处理 图 6.4 “区域生长法分割图像” 对已打开的图像进行区域生长法分割处理 设计总结设计总结 我们知道人类所获得信息的 70%以上来自视觉,换句话说人类将用自己双眼 所观察到的世界进行缜密的分析与思考之后,推动了科技的进步也推动了整个世 界的发展。经过了为期两周的课程设计,我深刻的感受到了图像处理的强大, 与此同时,感受到更多的就是编

12、程的辛苦,只要一个小地方出错以后,就要对 整个程序进行又一遍的检查,真可为是牵一发而动全身呀,在当初做的时候, 虽让将每一个功能模块的代码都写出来,但是在将他们整合起来的时候,在传 值和做图形用户界面的时候出现了很大的问题,最终还是通过网络和咨询同学 才得以解决问题,所以在这要衷心的感谢网络和同学们。 参考资料参考资料 1 朱 虹. 数字图像处理基础M. 科学出版社, 2005 2 R C.Gonzalez, R E.Woods 著,阮秋琦,阮宇智等译.数字图像处理(第 2 版).北 京:电子工业出版社,2003 3 K.R.Castleman. 数字图像处理.北京:电子工业出版社,2002

13、4 章毓晋.图像处理与分析-图像工程(上册),清华大学,2001 5R C.Gonzalez, R E.Woods, S L. Eddins 著,阮秋琦,阮宇智等译.数字图像处理 (MATLAB 版).北京:电子工业出版社,2005 致谢致谢 首先,我要感谢我的指导老师,他严谨细致、一丝不苟的作风一直是我生 活、学习中的榜样,给了起到了指明灯的作用;他们循循善诱的教导和不拘一 格的思路给予我无尽的启迪,让我很快就感受到了设计的快乐并融入其中。其 次我要感谢同组同学对我的帮助和指点,没有他们的帮助和提供资料,没有他 们的鼓励和加油,这次课程设计就不会如此的顺利进行,最后就是要感谢网络 给我们提供

14、了大量的资料。 附录附录 function varargout = keshe(varargin) % KESHE MATLAB code for keshe.fig % KESHE, by itself, creates a new KESHE or raises the existing % singleton*. % % H = KESHE returns the handle to a new KESHE or the handle to % the existing singleton*. % % KESHE(CALLBACK,hObject,eventData,handles,.)

15、 calls the local % function named CALLBACK in KESHE.M with the given input arguments. % % KESHE(Property,Value,.) creates a new KESHE or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before keshe_OpeningFcn gets called. An % unrecognized prop

16、erty name or invalid value makes property application % stop. All inputs are passed to keshe_OpeningFcn via varargin. % % *See GUI Options on GUIDEs Tools menu. Choose GUI allows only one % instance to run (singleton). % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the resp

17、onse to help keshe % Last Modified by GUIDE v2.5 10-Jan-2013 17:51:00 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, keshe_OpeningFcn, . gui_OutputFcn, keshe_OutputFcn, . gui_LayoutFcn, , . gui_Ca

18、llback, ); if nargin end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:); else 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 func

19、tion has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined 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 keshe

20、handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes keshe wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line. function varargout = keshe_OutputFcn(hObject, eventdata, handles) % v

21、arargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout1 = handles.outp

22、ut; % - function open_file_Callback(hObject, eventdata, handles) % hObject handle to open_file (see GCBO) % eventdata reserved - 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 isequa

23、l(filename,0)|isequal(pathname,0) errordlg(没有选中文件,出错); return; else file=pathname,filename; global S %设置一个全局变量 S,保存初始图像路径,以便之后的还原操作 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);

24、 handles.img=x; guidata(hObject,handles); end % - function save_file_Callback(hObject, eventdata, handles) % hObject handle to save_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=uip

25、utfile(*.jpg;*.bmp;*.tif;*.*,保存图像文件,untitled.jpg); if isequal(sfilename,sfilepath,0,0) sfilefullname=sfilepath ,sfilename; imwrite(handles.img,sfilefullname); else msgbox(你按了取消键,保存失败); end % - function close_file_Callback(hObject, eventdata, handles) % hObject handle to close_file (see GCBO) % event

26、data reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clc; close all; close(gcf); clear; % - Executes on button press in fenggu. function fenggu_Callback(hObject, eventdata, handles) % hObject handle to fenggu (see GCBO) % eventdata

27、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 = imread(lena.jpg); global I axes(handles.axes2); I=getimage; if ndims(I) = 3 I = rgb2gray(I); end fxy = imhist(I, 256); %统计每个灰度值的个数 %figure; %subplot(2,

28、 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); imshow(bw); title(双峰阈值分割) handles.img=bw; guidata(hObject,handles);

29、 % - 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 % handles structure with handles and user data (see GUIDATA) %A = imread(C:UsersAdministratorDesktop新建文件夹lena.jpg); % 读入图像 % - Exe

30、cutes 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 A0 A0=getimage; axes(handles.axes2); %A0=imrea

31、d(lena.jpg);%读入图像 seed=100,220;%选择起始位置 thresh=15;%相似性选择阈值 A=rgb2gray(A0); %灰度化 A=imadjust(A,min(min(double(A)/255,max(max(double(A)/255,); A=double(A); %将图像灰度化 B=A; %将 A 赋予 B r,c=size(B); %图像尺寸 r 为行数,c 为列数 n=r*c; %计算图像所包含点的个数 pixel_seed=A(seed(1),seed(2); %原图起始点灰度值 q=seed(1) seed(2); %q 用来装载起始位置 top

32、=1; %循环判断 flag M=zeros(r,c); %建立一个与原图形同等大小的矩阵 M(seed(1),seed(2)=1; %将起始点赋为 1,其余为 0 count=1; %计数器 while top=0 %循环结束条件 r1=q(1,1); %起始点行位置 c1=q(1,2); %起始点列位置 p=A(r1,c1); %起始点灰度值 dge=0; for i=-1:1 %周围点的循环判断 for j=-1:1 if r1+i0 end q=q(2:top,:); top=top-1; end imshow(B,); title(区域生长法分割); handles.img=B; g

33、uidata(hObject,handles); % - function help_Callback(hObject, eventdata, handles) % hObject handle to help (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) msgbox(如需帮助请访问 ,消息); % - function about_Callback(hObject, eventdata, handles) % hObject handle to about (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) msgbox(此版权 XXX 所有!,消息);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1