图像分割程序设计汇总

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

*******************

实践教学

*******************

兰州理工大学

计算机与通信学院

2012年秋季学期

图像处理综合训练

题目:图像分割程序设计

专业班级:

姓名:

学号:

指导教师:

成绩:

目录

摘要 (1)

一、前言 (2)

二、算法分析与描述 (3)

三、详细设计过程 (5)

四、调试过程中出现的问题及相应解决办法 (8)

五、程序运行截图及其说明 (8)

六、简单操作手册 (12)

设计总结 (15)

参考资料 (16)

致谢 (17)

附录 (18)

摘要

图像分割就是从图像中将某个特定区域与其他部分进行分离并提取出来的处理

通常又称之为图像的二值化处理。图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。近年来,研究人员不断改进原有的图像分割方法并把其它学科的一些新理论和新方法用于图像分割,提出了不少新的分割方法。

关键词:图像分割;阈值;二值化;

一、前言

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

二、算法分析与描述

1.图像分割的数学描述

令集合R代表整个区域,对R的分割可看作将R分成若干个满足以下5个条件的非空子集(子区域)R1 ,R1 ,…Rn

(1)所有子集构成图像;

(2)各子集不重叠;

(3)每个子集中的像素有某种共同的属性;

(4)不同的子集属性不同;

(5)每个子集中的所有像素应该是连通的。

2. 基于灰度直方图的峰谷法

图像的灰度直方图必须是双峰的直方图的左侧峰为亮度较高的部分,这部分恰好对应于较暗的背景部分,直方图的右侧为亮度较高的部分,这里恰好对应于会面中图案部分。显然灰度直方图的峰谷法是一种有效且非常简单的阈值方法,但是该方法有一个局限性就是灰度值放度必须是双峰的。

3. 区域生长

区域生长的基本思想是将具有相似性质的像素集合起来构成区域。具体先对每个需要分割的区域找一个种子像素作为生长的起点,然后将种子像素周围邻域中与种子像素有相同或相似性质的像素(根据某种事先确定的生长或相似准则来判定)合并到种子像素所在的区域中。将这些新像素当作新的种子像素继续进行上面的过程,直到再没有满足条件的像素可被包括进来。这样一个区域就长成了。

区域生长需要选择一组能正确代表所需区域的种子像素,确定在生长过程中的相似性准则,制定让生长停止的条件或准则。相似性准则可以是灰度级、彩色、纹理、梯度等特性。选取的种子像素可以是单个像素,也可以是包含若干个像素的小区域。大部分区域生长准则使用图像的局部性质。生长准则可根据不同原则制定,而使用不同的生长准则会影响区域生长的过程。

区域生长法的优点是计算简单,对于较均匀的连通目标有较好的分割效果。它的缺点是需要人为确定种子点,对噪声敏感,可能导致区域内有空洞。另外,

它是一种串行算法,当目标较大时,分割速度较慢,因此在设计算法时,要尽量提高效率。

三、详细设计过程

1.流程图

2.区域生长法

区域生长法的数学表达:

一致性判别条件:

灰度变化阈值:

生长准则:

Matlab代码:

global 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=zeros(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+i<=r & r1+i>0 & c1+j<=c & c1+j>0

if abs(A(r1+i,c1+j)-p)<=thresh & M(r1+i,c1+j)~=1

top=top+1;

q(top,:)=[r1+i c1+j];

M(r1+i,c1+j)=1;

count=count+1;

B(r1+i,c1+j)=1;

end

if M(r1+i,c1+j)==0;

dge=1;

end

else

dge=1;

end

end

end

if dge~=1

B(r1,c1)=A(seed(1),seed(2));

end

if count>=n

top=1;

end

q=q(2:top,:);

相关文档
最新文档