MATLAB图像分割系统GUI设计

一 图像分割流程图

v2-4f89913ab376925632be5823a038f938_b.png


图1-1 主要流程图
二、图像分割的基本概念
1、图像分割定义
有关图像分割的解释和表述很多,借助于集合概念对图像分割可以给出如下比较正式的定义:
令集合R代表整幅图像的区域,对R的分割可看成将

v2-4f89913ab376925632be5823a038f938_b.png

个满足以下5个条件的非空子集(子区域)

v2-4f89913ab376925632be5823a038f938_b.png


v2-4f89913ab376925632be5823a038f938_b.png

;
②对所有的i和j,有i≠j,

v2-4f89913ab376925632be5823a038f938_b.png

Φ;
③对i=1,2,…,N,有P(

v2-4f89913ab376925632be5823a038f938_b.png

)=True;
④对i≠j,P(

v2-4f89913ab376925632be5823a038f938_b.png

)=False;
⑤i=1,2, …,N,

v2-4f89913ab376925632be5823a038f938_b.png

是连通的区域。
其中P(

v2-4f89913ab376925632be5823a038f938_b.png

)是对所有在集合中元素的逻辑谓词,Φ代表空集。
下面先对上述各个条件分别给予简略解释。条件①指出对一幅图像所得的全部子区域的综合(并集)应能包括图像中所有像素(就是原图像),或者说分割应将图像的每个像素都分进某个区域中。条件②指出在分割结果中各个子区域是互不重叠的,或者说在分割结果中一个像素不能同时属于两个区域。条件③指出在分割结果中每个子区域都有独特的特性,或者说属于同一个区域中的像素应该具有某些相同特性。条件④指出在分割结果中,不同的子区域具有不同的特性,没有公共元素,或者说属于不同区域的像素应该具有一些不同的特性。条件⑤要求分割结果中同一个子区域内的像素应当是连通的,即同一个子区域的两个像素在该子区域内互相连通,或者说分割得到的区域是一个连通组元。
另外,上述这些条件不仅定义了分割,也对进行分割有指导作用。对图像的分割总是根据一些分割准则进行的。条件①与条件②说明正确的分割准则应可适用于所有区域和所有像素,而条件③和条件④说明合理的分割准则应能帮助确定各区域像素有代表性的特性,条件⑤说明完整的分割准则应直接或间接地对区域内像素的连通性有一定的要求或限定。
最后需要指出,实际应用中图像分割不仅要把一幅图像分成满足上面5个条件的各具特性的区域而且需要把其中感兴趣的目标区域提取出来。只有这样才算真正完成了图像分割的任务。
2、图像分割算法分类
图像分割算法的研究一直受到人们的高度重视,到目前为止,提出的分割算法已经多达上千种,由于现有的分割算法粉肠多,所以将它们进行分类的方法也提出了不少。例如有把分割算法分成3类的:①边缘检测、②阈值分割和③区域生长。但事实上阈值分割算法分割的方法在本质上也是一种区域提取方法,所以③实际上包含了①。
本章从实际应用的角度考虑,详细介绍了图像分割的如下算法:分割检测、阈值分割、区域生长等。
3、边缘检测方法
3.1边缘检测概述
边缘(Edge)是指图像局部亮度变化最显著的部分。边缘主要存在于目标、目标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征提取和形状特征提取等图像分析的重要基础。图像分析和理解的第一步常常是边缘检测(Edge Detection)。由于边缘检测十分重要,因此成为机器视觉研究领域最活跃的课题之一。本节主要讨论边缘检测和定位的基本概念,并通过几种常用的边缘检测器来说明边缘检测的基本问题。
图像中的边缘通常与图像亮度或图像亮度的一阶导数的不连续性有关。图像亮度的不连续可分为:①阶跃不连续,即图像亮度在不连续处的两边的像素灰度值有着显著的差异:②线条不连续,即图像亮度从一个值变化到另一个值,保持一个较小的行程后又返回到原来的值。在实际中,阶跃和线条边缘图像是很少见的,由于大多数传感元件具有低频特性,使得阶跃边缘变成斜坡型边缘,线条边缘变成屋顶形边缘,其中的亮度变化不是瞬间的,而是跨越一定的距离。
对一个边缘来说,有可能同时具有阶跃和线条特性。例如在一个表面上,由一个平面变化到法线方向不同的另一个平面就会产生阶跃边缘;如果这一表面具有镜面反射特性且两平面形成的棱角比较圆滑,则当棱角圆滑表面的法线经过镜面反射角时,由于镜面反射分量,在棱角圆滑表面上会产生明亮光条,这样的边缘看起来像在阶跃边缘上叠加了一个线条边缘。由于边缘可能与场景中物体的重要特性对应,所以它是很重要的图像特征。比如,一个物体的轮廓通常产生阶跃边缘,因为物体的图像亮度不同于背景的图像亮度。
在讨论边缘算子之前,首先给出下列术语的定义。
边缘点:图像中亮度显著变化的点。
边缘段:边缘点坐标[i,j]及其方向θ的综合,边缘的方向是可以是梯度角。
边缘检测器:从图像中抽取边缘(边缘点或边缘段)集合的算法。
轮廓:边缘列表,或是一条边缘列表的曲线模型。
边缘连接:从无序边缘表形成有序边缘表的过程。习惯上边缘的表示采用顺时针方向来排序。
边缘跟踪:一个用来确定轮廓图像(指滤波后的图像)的搜索过程。
边缘点的坐标可以是边缘位置像素点的行、列整数标号,也可以在子像素分辨率水平上表示。边缘坐标可以在原始图像坐标系上表示,但大多数情况下是在边缘检测滤波器的是输出图像的坐标系上表示,因为滤波过程可能导致图像坐标平移或者缩放。边缘段可以用像素点尺寸大小的小线段定义,或用具有方向属性的一个点定义。在实际应用中,边缘点和边缘段都称为边缘。
由于边缘检测器生成的边缘集分成两个:真边缘和假边缘集。真边缘集对应场景中的边缘,假边缘集不是场景中的边缘。还有一个边缘集,即场景中的漏边缘集。假边缘集称之为假阳性(False Positive),而漏掉的边缘集则称之为假阴性(False Negative)。
边缘连接和边缘跟踪之间的区别在于:边缘连接是把边缘检测器产生的无序边缘集作为输出,输入一个有序边缘集;边缘跟踪则是将一幅图像作为输入,输出一个有序边缘集。另外,边缘检测使用局部信息来决定边缘,而边缘跟踪使用整个图像信息来决定一个像素点是不是边缘。
3.2边缘检测梯度算法
a.梯度边缘检测算法基本步骤及流程图
梯度边缘检测算法有如下4个步骤。
(1) 滤波:边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的功能。需要指出的是,大多数滤波器在降低噪声的同时也导致了边缘强度的损失,因此,增强边缘和降低噪声之间需要折中。
(2) 增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将邻域(或局部)强度值有显著变化的点突显出来。边缘增强一般是通过计算梯度幅值来完成的。
(3) 检测:在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某些方法来确定哪些点是边缘带内。最简单的边缘检测判据是梯度幅值阈值判据。
(4) 定位:如果某一应用场合要求来确定边缘位置,则边缘的位置可在子像素分辨率上来估计,边缘的方位可以被估计出来。
在边缘检测算法中,前3个步骤用得十分普遍。这是因为大多数场合下,仅仅需要边缘检测器指出边缘出现在图像某一像素点的附近,而没必要指出边缘的精确位置或方向。
在这本文主要讨论常用的几种边缘检测器,并调用其中的函数进行边缘检测得出效果图。

v2-4f89913ab376925632be5823a038f938_b.png


b.Robert算子
Robert交叉算子为梯度幅值计算提供了一种简单的近似方法:

v2-4f89913ab376925632be5823a038f938_b.png

(4-1)
用卷积模板表示方法,上式变成:

v2-4f89913ab376925632be5823a038f938_b.png

(4-2)
其中

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

由下面的模板(4-3)计算:

1
0 0 -1
0
-1 1 0



v2-4f89913ab376925632be5823a038f938_b.png

=

v2-4f89913ab376925632be5823a038f938_b.png

=


在计算梯度时,计算空间同一位置(x,y)的真实偏导数非常重要。采用上述2×2邻域模板计算的梯度近似值

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

并不位于同一位置,

v2-4f89913ab376925632be5823a038f938_b.png

实际上是内差点

v2-4f89913ab376925632be5823a038f938_b.png

处的近似梯度,

v2-4f89913ab376925632be5823a038f938_b.png

实际上是内差点

v2-4f89913ab376925632be5823a038f938_b.png

出的近似梯度。因此,Robert算子是该点连续梯度的近似值,而不是所预期点

v2-4f89913ab376925632be5823a038f938_b.png

处的近似值。所以,通常用3×3邻域计算梯度值。

c.Sobel算子
正如前面所讲,采用3×3邻域可以避免在像素之间内插点上计算梯度。考虑下图中所示的点

v2-4f89913ab376925632be5823a038f938_b.png

周围点的排列。

Sobel算子也是一种梯度幅值:

v2-4f89913ab376925632be5823a038f938_b.png

(4-4)
其中的偏导数用下式计算:

v2-4f89913ab376925632be5823a038f938_b.png

(4-5)

v2-4f89913ab376925632be5823a038f938_b.png

(4-6)
其中常系数c=2.
和其他的梯度算子一样

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

可分别用卷积模板表示为:

-1 0 1
-2 0 2
-1 0 1
1 2 1
0 0 0
-1 -2 -1


这一算子把重点放在接近于模板中心的像素点。Sobel算子是边缘检测中最常用的算子之一。
d.Prewitt算子
Prewitt与Sobel算子的方程完全一样,只是常系数c=1。所以

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

可分别用卷积模板表示为:

-1 0 1
-1 0 1
-1 0 1




1 1 1
0 0 0
-1 -1 -1


下面使用MATLAB图像处理工具箱中的edge函数利用以上算子来检测边缘。Edge函数提供许多微分算子模板,对于某些模板可以指定其是对水平边缘还是对垂直边缘(或者二者都有)敏感(即主要检测是水平边缘还是垂直边缘)。Edge函数在检测边缘时可以指定一个灰度阈值,只有满足这个阈值条件的点才视为边界点。Edge函数的基本调用格式如下:

v2-4f89913ab376925632be5823a038f938_b.png


其中,I表示输入图像,type表示使用的算子类型,parameter则是与具体算子有关的参数。
下面用其中的Prewitt算子检测图像4-2(a),检测结果如图4-2(b)所示。程序清单见附录,以下用Prewitt算子检测边缘:
(a)原始图像 (b)Prewitt算子检测的边缘
图4-2 边缘检测效果图
3.3拉普拉斯(Laplacian)算子
前面讨论了计算一阶导数的边缘检测器,如果所求的一阶导数高于某一阈值,则可确定该点为边缘点,这样做会导致检测的边缘点太多。一种更好的方法就是求梯度局部最大值对应的点,并认定它们是边缘点,如图4-3所示。在图4-3中,若用阈值来进行边缘检测,则在a和b之间的所以点都被记为边缘点。但通过去除一阶导数中的非局部最大值,可以检测出更精确的边缘。一阶导数的局部最大值对应着二阶导数的零交叉点(Zero crossing)。这样,通过找图像强度的二阶导数的零交叉点就能找到精确边缘点。拉普拉斯(Laplacian)算子是常用的二阶导数算子。


v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png
x

v2-4f89913ab376925632be5823a038f938_b.png










图4-3 阈值边缘检测和二阶导数的零交叉边缘检测比较
平滑过的阶跃边缘二阶导数是一个在边缘点处过零的函数(见图4-2)。拉普拉斯算子是二阶导数的二维等效式,函数

v2-4f89913ab376925632be5823a038f938_b.png

的拉普拉斯算子公式为:

v2-4f89913ab376925632be5823a038f938_b.png

(4-7)
使用差分方程对x和y方向上的二阶偏导数近似如下:

v2-4f89913ab376925632be5823a038f938_b.png


v2-4f89913ab376925632be5823a038f938_b.png

(4-8)
上式近似是以点

v2-4f89913ab376925632be5823a038f938_b.png

为中心的,以点

v2-4f89913ab376925632be5823a038f938_b.png

为中心的近似为:

v2-4f89913ab376925632be5823a038f938_b.png

(4-9)
类似地有:

v2-4f89913ab376925632be5823a038f938_b.png

(4-10)
将(4-9)和(4-10)两式合并为一个算子,用近似的拉普拉斯算子模板表示:

v2-4f89913ab376925632be5823a038f938_b.png

(4-11)
当拉普拉斯输出出现过零点时就表明有边缘存在,但是要去除无意义的零点(灰度值为0的区域)。
3.4LoG(Laplacian-Gauss)算子
前面介绍的梯度算子和拉普拉斯算子实质都是微分或查分算法,因此算法对噪声十分敏感。所以,在边缘检测前,必须滤除噪声。Mar和Hildreth将高斯滤波和拉普拉斯边缘检测结合在一起,形成LoG(Laplacian-Gauss)算法。LoG边缘检测器的基本特征是:
(1) 平滑滤波器是高斯滤波器;
(2) 增强步骤采用二阶导数(二维拉普拉斯函数);
(3) 使用线性内插方法在子像素分辨率水平上估计边缘的位置。
这种方法的特点是图像首先与高斯滤波器进行卷积,这一步既平滑了图像又降低了噪声,孤立的噪声点和较小的结构组织将被滤除。由于平滑会导致边缘的延展,因此边缘检测器只考虑那些具有局部梯度最大值的点为边缘点。这一点可以用二阶导数的零交叉点来实现。拉普拉斯函数用作二维二阶的近似,是因为它是一种无方向算子。为了避免检测出非显著边缘,应选择一阶导数大于某一阈值的零交叉点作为边缘点。
LoG算子对图像

v2-4f89913ab376925632be5823a038f938_b.png

进行边缘检测,输出

v2-4f89913ab376925632be5823a038f938_b.png

是通过卷积运算得到的,即:

v2-4f89913ab376925632be5823a038f938_b.png

(4-12)
滤波(或平滑)、增强和检测3个边缘检测的步骤对LoG算子边缘检测依然成立。其中高斯滤波器对图像进行平滑,拉普拉斯算子将边缘点转换成零交叉点来实现,边缘检测通过零交叉点的检测实现。
前一节介绍过,图像的平滑会引起边缘的模糊。高斯平滑元素导致图像中边缘和其他尖锐不连续的部分模糊,其中模糊量取决于σ值。σ值越大,噪声滤波效果越好,但同时也丢失了重要的边缘信息,影响了边缘检测器的性能。如果取小σ值,又有可能平滑不完全而留有太多的噪声。大σ值滤波器在平滑相互邻近的两个边缘时,可能会将它们连在一起,这样只能检测出一个边缘。因此,在不知道物体尺寸和位置的情况下,很难准确确定滤波器的σ值。一般来说,使用大σ值的滤波器产生鲁棒边缘,小σ值的滤波器产生精确定位的边缘,两者结合,能够检测出图像的最佳边缘。
LoG算子也可以用MATLAB中的edge函数来检测边缘:
BW=edge(I,’log’,thresh,sigma)
式中thresh是边缘检测的阈值,sigma是高斯滤波器的σ值,默认为2。
下面用不同σ值的LoG算子检测图像的边缘。程序清单见附录,检测结果分别如图4-3(a)和4-3(b)所示。

(a) σ=2 (b)σ=3
图4-4 不同σ值的LoG算子边缘检测效果图
比较上述两幅图像可以发现,σ值小,平滑程度轻,会出现零星的假边缘;σ值大,平滑程度重,但是大部分真实的边缘丢失,出现边缘间断现象。
3.5坎尼(Canny)算子
检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点。检测阶跃边缘的大部分工作集中在寻找能够用于实际图像的梯度数字逼近。由于实际的图像经过了摄像机光学系统和电路系统(带宽限制)固有的低通滤波器的平滑,因此,图像中的阶跃边缘不是十分陡立。图像也受到摄像机噪声和场景中不希望的细节的干扰。图像梯度逼近必须满足两个要求:①逼近必须能够抑制噪声效应:②必须尽量精确地确定边缘的位置。抑制噪声和边缘精确定位是无法同时得到满足的,也就是说,边缘检测算法通过图像平滑算子去除了噪声,但却增加了边缘定位的不确定性;反过来,若提高边缘检测算子对边缘的敏感性,同时也提高了对噪声的敏感性。有一种先行算子可以在抗噪声干扰和精确定位之间选择一个最佳折衷方案,它就是高斯函数的一阶导数,对应于图像的高斯函数平滑和梯度计算。
在高斯噪声中,一个典型的边缘代表一个阶跃的强度变化。根据这个模型,好的边缘检测算子应该有3个指标:①低失误概率,即真正的边缘点尽可能少的丢失又要尽可能避免将非边缘点检测为边缘:②高位置精度,检测的边缘应尽可能接近真实的边缘;③对每一个边缘点有惟一的响应,得到单像素宽度的边缘。坎尼算子提出了边缘算子的如下3个准则。
(1) 信噪比准则
信噪比越大,提取的边缘质量越高。信噪比

v2-4f89913ab376925632be5823a038f938_b.png

定义为:

v2-4f89913ab376925632be5823a038f938_b.png

(4-13)
其中G(x)代表边缘函数,h(x)代表宽度为W的滤波器的脉冲响应。
(2) 定位精确度准则
边缘定位精度L如下定义:

v2-4f89913ab376925632be5823a038f938_b.png

(4-14)
其中

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

分别是

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

的导数。L越大表明定位精度越高。
(3)单边缘响应准则
为了保证单边缘只有一个响应,检测算子的脉冲响应导数的零交叉点平均距离

v2-4f89913ab376925632be5823a038f938_b.png

应满足:

v2-4f89913ab376925632be5823a038f938_b.png

(4-15)

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

的二阶导数
以上述指标和准则为基础,利用泛函数求导的方法可导出坎尼边缘检测器是信噪比与定位之乘积的最优逼近算子,表达式近似于高斯函数的一阶导数。将坎尼3个准则相结合可以获得最优的检测算子。坎尼边缘检测的算法步骤如下:
(1) 用高斯滤波器平滑图像;
(2) 用一阶偏导的有限差分来计算梯度的幅值和方向;
(3) 对梯度幅值进行非极大值抑制;
(4) 用双阈值算法检测和连接边缘。
坎尼算子也可以用MATLAB中的edge函数来检测边缘:
BW1=edge(I,’canny’,thresh,sigma)
式中的thresh是边缘检测的阈值,sigma是高斯滤波器的σ值,默认为2。
用Canny算子检测图像4-2(a)的边缘,程序清单见附录,检测结果如图4-5所示。

图4-5 Canny算子边缘检测
比较前面梯度算子、LoG算子和Canny算子,由图4-2(b)、4-3、4-4和4-5,可以发现坎尼算子的边缘检测结果最满意。
4、灰度阈值分割
4.1阈值分割介绍
a.阈值化分割原则
阈值化分割算法是图像分割中应用数量最多的一类。简单地说,对灰度图像的阈值分割就是先确定一个处于图像灰度取值范围内的灰度阈值,然后将图像中各个像素的灰度值与这个阈值相比较,并根据比较的结果将对应的像素划分为(分割)为两类:像素灰度大于阈值的一类,像素灰度值小于阈值的为另一类,灰度值等于阈值的像素可以归如这两类之一。分割后的两类像素一般分属图像的两个不同区域,所以对像素根据阈值分类达到了区域分割的目的。由此可见,阈值分割算法主要有两个步骤:
(1) 确定需要分割的阈值;
(2) 将分割阈值与像素点的灰度值比较,以分割图像的像素。
以上步骤中,确定阈值是分割的关键,如果能确定一个合适的阈值就可准确地将图像分割开来。阈值确定后,将阈值与像素点的灰度值比较和像素分割可对像素并行地进行,分割的结果直接给出图像区域。
在利用取阈值方法来分割灰度图像时一般对图像的灰度分布有一定的假设,或者说是基于一定的图像模型。最常用的模型可描述如下:假设图像由具有单峰灰度分布的目标和背景组成,处于目标和背景内部相邻像素间的灰度值是高度相关的,但处于目标和背景交界处两边的像素在灰度值上有很大的差别。若一幅图像满足这些条件,它的灰度直方图基本上可看作是由分别对应于目标和背景的两个单峰直方图混合构成的。而且如果这两个分布大小(数量)接近且均值相距足够远,两部分的均方差也足够小,则直方图应为较明显的双峰。类似地,如果图像中有多个单峰灰度分布的目标,则直方图有可能表现为较明显的多峰。对这类图像常可用取阈值方法来较好地分割。
把图像中各种灰度的像素分成两个不同的类,需要确定一个阈值。如果要把图像中各种灰度的像素分成多个不同的类,那么需要选择一系列阈值以将每个像素分到合适的类别中去。如果只用一个阈值分割称为单阈值分割方法,如果用多个阈值分割称为多阈值分割方法。单阈值分割可以看作是多阈值分割的特例,许多单阈值分割算法可推广以进行多阈值分割。反之,有时候也可以将多阈值分割问题转化为一系列单阈值分割问题来解决。不管用任何方法选取阈值,一幅原始图像f(x,y)取单阈值T分割后的图像可定义为:

v2-4f89913ab376925632be5823a038f938_b.png

(4-16)
这样得到的

v2-4f89913ab376925632be5823a038f938_b.png

是一幅二值图像。
在一般的多阈值情况下,取阈值分割后的图像可表示为:

v2-4f89913ab376925632be5823a038f938_b.png

(4-17)
其中

v2-4f89913ab376925632be5823a038f938_b.png

是一系列分割阈值,k表示赋予分割后图像各区域不同的标号。
需要指出,无论是单阈值分割或多阈值分割,分割结果中都有可能出现不同区域具有相同标号或区域值的情况。这是因为取阈值分割时只考虑了像素本身的值,未考虑像素的空间位置。所以根据像素值划分到同一类的像素有可能分属于图像中不相连通的区域。这时候往往需要借助一些对场景的先验知识来进一步确定目标的区域。
b.阈值分割算法分类
已提出的阈值化分割算法很多,相应的分类方法也很多,例如,对文档图像的阈值化技术可油种分类的方法:
(1) 考虑分割过程是否需要人工干预,可分为交互的与自动的;
(2) 根据阈值的不同作用范围,可分为全局的与局部的;
(3) 考虑阈值选取中所采用的灰度分布统计特性,可分为上下文相关与上下文无关的,前者基于灰度分布的一阶统计,后者基于灰度分布的二阶统计;
(4) 从处理策略角度考虑,可分为迭代的与非迭代的;
(5) 根据为进行分割是否选用训练像素集以估计目标或背景的特性参数,可分为有监督的与无监督的。
在前面关于阈值化原理的讨论中已指出选取合适的分割阈值化算法的关键问题,据此可根据阈值选取本身的特点对算法分类。阈值一般可写成如下形式:

v2-4f89913ab376925632be5823a038f938_b.png

(4-18)
其中

v2-4f89913ab376925632be5823a038f938_b.png

代表在像素点

v2-4f89913ab376925632be5823a038f938_b.png

处的灰度值,

v2-4f89913ab376925632be5823a038f938_b.png

代表在该点邻域的某种局部性质。即阈值T在一般情况下可以是(

v2-4f89913ab376925632be5823a038f938_b.png

),

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

的函数。借助上式,可将取阈值分割方法分成如下3类,相应的阈值分别称为:
(1) 基于各像素值的阈值 阈值仅根据

v2-4f89913ab376925632be5823a038f938_b.png

来选取,所得到的阈值仅与全图各像素的本身性质(像素值)有关;
(2) 基于区域性质的阈值 阈值是根据

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

来选取的,所得的阈值与区域性质(区域内各像素的值,相邻像素值的关系等)有关;
(3) 基于坐标位置的阈值 阈值进一步(除根据

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

来选取外)还与

v2-4f89913ab376925632be5823a038f938_b.png

有关,即阈值要考虑位置(

v2-4f89913ab376925632be5823a038f938_b.png

),来确定,则所得的阈值是与像素空间坐标有关的。
上面确定第一类阈值的技术有时称为点相关技术,而确定第二类阈值的技术有时间称为区域相关技术,确定第三类阈值的技术有时称为动态阈值技术。前两类阈值也有称为全局阈值(或称固定阈值)的,因为此时确定的阈值对全图使用,或者说,对各个像素使用相同的阈值来分割;与此对应,第三类阈值也有叫局部阈值或动态阈值的,因为此时确定的阈值是针对图像中的局部区域(也可是单个像素)的。在一定意义上可以局部阈值化是全局阈值化技术的局部化特例。
以上对取阈值分割方法的分类思想是通用的。近年来,许多取阈值分割算法借用了视觉神经、神经网络和模糊数学等工具,但仍可把它们归纳到以上3种方法类型中。
4.2全局阈值
对灰度图像,基于各像素值的阈值是仅考虑各像素本身灰度值而确定的,因而算法一般较简单,但抗噪声能力不强。所确定的阈值(对多阈值分割是阈值序列)作用于整幅图像的每个像素,因而对目标和背景的灰度有梯度变化的图像效果较差或失效。
图像的灰度直方图是图像各像素灰度值的一种统计度量。许多常用的阈值选取方法就是根据直方图来进行的。如果对双峰直方图选取两峰之间的谷所对应的灰度值作为阈值就可将目标和背景分开(多峰直方图时也类似)。谷的选取有许多方法,下面介绍3种比较典型的方法。
a.极小值点阈值
将图像的灰度直方图的包络看作一条曲线,则选取直方图的谷可借助求曲线极小值的方法。设用

v2-4f89913ab376925632be5823a038f938_b.png

代表直方图,那么极小值点应同时满足:

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

(4-19)
和这些极小值点对应的灰度值就可用作分割阈值。
实际图像的直方图由于图像噪声等原因经常有很多起伏,使得按式(4-19)计算出的极小值点有可能对应虚假的谷。解决的方法之一是先对直方图进行平滑处理。
b.最优阈值
有时图像中目标和背景的灰度值有部分交错,这时如用一个全阈值进行分割则总会产生一定的误差。实际中常希望能尽可能减少误分割(包括把目标分成背景和把背景分成目标两类)的概率,而选取最优阈值是一种常用的方法。这里最优阈值指能使误分割率最小的分割阈值。图像的直方图可看成像素灰度值的概率分布密度函数的一个近似,设一幅图像仅包括两类主要的灰度值区域(目标和背景),那么其直方图所代表的像素灰度值概率分布密度函数实际上是对应目标和背景的两个单峰分布密度函数之和。如果已知密度函数的形式,就有可能计算出一个最优阈值,用它可把图像分成两类区域而使误分割率最小。
设有这样一幅混有加性高斯噪声的图像,背景和目标的概率密度分别是

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

,整幅图像的混合概率密度:

v2-4f89913ab376925632be5823a038f938_b.png


v2-4f89913ab376925632be5823a038f938_b.png

(4-20)
其中

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

分别是 背景和目标区域的平均灰度值,

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

分别是关于均值的均方差,

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

分别是北京和目标区域灰度值的先验概率。根据概率定义有

v2-4f89913ab376925632be5823a038f938_b.png

+

v2-4f89913ab376925632be5823a038f938_b.png

=1,所以混合概率密度公式(4-20)中只有5个未知的参数。如果能求得这些参数。如果能求得这些参数就可以确定混合概率密度。

v2-4f89913ab376925632be5823a038f938_b.png


图4-6 最优阈值选取示意图
如图4-6所示。假设

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

,需确定一个阈值T使得灰度值小于T的像素分割为背景而使得灰度值大于T的像素分割为目标。这时错误地将目标像素划分为背景的概率和将背景像素错误地划分为目标的概率分别是:

v2-4f89913ab376925632be5823a038f938_b.png

(4-21)

v2-4f89913ab376925632be5823a038f938_b.png

(4-22)
总的误差概率为:

v2-4f89913ab376925632be5823a038f938_b.png

(4-23)
为求得使该误差最小的阈值可将

v2-4f89913ab376925632be5823a038f938_b.png

对T求导并令导数为零,这样得到:

v2-4f89913ab376925632be5823a038f938_b.png

(4-24)
将这个结果用于高斯密度(即将式(4-20)代入)可解得:

v2-4f89913ab376925632be5823a038f938_b.png

(4-25)

v2-4f89913ab376925632be5823a038f938_b.png

=

v2-4f89913ab376925632be5823a038f938_b.png

=

v2-4f89913ab376925632be5823a038f938_b.png

时:

v2-4f89913ab376925632be5823a038f938_b.png

(4-26)
若先验概率相等,即

v2-4f89913ab376925632be5823a038f938_b.png

,则:

v2-4f89913ab376925632be5823a038f938_b.png

(4-27)
这表示如果图像灰度值从正态分布时,最佳阈值可按上式求得。
c.迭代阈值分割
阈值也可以通过迭代计算得到。首先选取图像的灰度范围的中值作为初始值

v2-4f89913ab376925632be5823a038f938_b.png

,然后按下式迭代:

v2-4f89913ab376925632be5823a038f938_b.png

(4-28)
式中

v2-4f89913ab376925632be5823a038f938_b.png

是灰度为k值的像素个数,共有L个灰度级。迭代一直进行到

v2-4f89913ab376925632be5823a038f938_b.png

结束,取结束时的

v2-4f89913ab376925632be5823a038f938_b.png

为阈值。

v2-4f89913ab376925632be5823a038f938_b.png


对图像4-8(a)进行阈值分割。其灰度直方图如图4-8(b)所示,阈值分割结果如图4-8(c)所示。程序清单见附录。

(a)原始图像 (b)原始图像的灰度直方图

(c)阈值分割结果
图4-8 灰度阈值分割效果图
4.3动态阈值
当图像中有如下一些情况:有阴影、光照不均匀、各处的对比度不同、突发噪声、背景灰度变化等,如果只用一个固定的全局阈值对整幅图进行分割,则由于不能兼顾图像各处的情况而使分割效果受到影响。有一种解决方法是用与坐标相关的一组阈值(即阈值是坐标的函数)来对图像各部分分别进行分割。这种与坐标相关的阈值也叫动态阈值,这种取阈值分割方法也叫变化阈值法(也有称自适应阈值法的)。这类算法的时间复杂度和空间复杂度比较大,但抗噪声能力强,对一些用全局阈值法不易分割的图像(如目标和背景的灰度有梯度变化的图像)有较好的效果。这种动态阈值化方法在二值化文档图像分割时有较好的性能。
一种比较简单的动态阈值算法是对每个像素确定以它为中心的一个窗口,计算窗口内的最大值和最小值,再取它们的平均值作为该点的阈值,可以证明图像像素点灰度值和该阈值的差具有二阶导数的性质,所以取差的过零点就可以得到二值分割结果。下面再介绍另外的两个办法。
a.阈值插值
可以将变化阈值技术当作全局固定阈值技术的局部技术的局部特例。首先将图像分解成一系列子图像,这些子图像可以互相重叠也可以只相接。如果子图像比较小,则又阴影或对比度空间变化等带来的问题就会比较小。然后可对每个子图像计算一个阈值,此时阈值可用任一种固定阈值法选取。通过对这些子图像所得阈值的插值就可得到对图像中每个像素进行分割所需的阈值。这里对应每个像素的阈值合起来组成图像(幅度轴)上的一个曲面,也可以叫阈值曲面。一种方法的具体步骤如下:
(1) 将整幅图像分成一系列互相之间有50%重叠的子图像;
(2) 做出每个子图像的直方图;
(3) 检测各个子图像的直方图是否为双峰,如是可采用上述介绍的阈值选取方法确定子图像的阈值,否则不进行处理;
(4) 根据对直方图为双峰的子图像得到的阈值,通过插值得到所以子图像的阈值;
(5) 根据对各子图像的阈值,再通过插值得到所有像素的阈值,然后对图像进行分割。
b.水线阈值算法
水线(也称为分水岭或流域,Watershed)阈值算法和直接在最佳阈值处分割不用,它是一种特殊的自适应迭代阈值分割算法。利用图4-6来说明水线阈值算法的原理。

x

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png
0

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png


图4-9中给出的是一幅图像中的一个剖面,其中灰度较高的两个目标从背景

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

中取出来并相互分开。先用一个较大的阈值

v2-4f89913ab376925632be5823a038f938_b.png

进行分割,它可以将图中的两个目标与背景分开,只是其间的间隙太宽。如果接下来逐渐减小阈值,目标的边界会随阈值的减少而相向扩展,最终两个目标会接触(相遇),但此时不让两个目标合并,这样它们相接触前所保留的最后像素集合就给出两目标间最终的边界。上述过程在将阈值减小到背景灰度前就可以结束。
实际中水线算法首先用一个比较高但是得到的结构仍能把每个目标孤立开的阈值进行分割。然后,当阈值逐渐减小并逼近最佳阈值时,不再合并原已分开的目标。这样就可以解决采用全局阈值方法在目标很接近时造成的目标合并问题。这里初始阈值的选取非常重要,只要初始阈值选合适,那么就可保证最终分割结果的正确性,如果初始阈值太大(如图4-9中的

v2-4f89913ab376925632be5823a038f938_b.png

),那么低反差的目标在开始时会被漏掉,其后在减少阈值的过程中会被合并;反之,如果初始阈值选得太小(如图4-9中的

v2-4f89913ab376925632be5823a038f938_b.png

所示),那么目标在开始时就会被合并。另外最终阈值的选取也很重要,它确定了最终边界与目标吻合的情况。
MATLAB中用函数watershed找到流域,调用格式L=watershed(A)。
阈值分割的方法很多,每一种方法几乎都有其独特指出和实际应用的背景。实际应用中,阈值分割经常需要和其他方法相互结合使用,才能取得最佳或满意的分割结果。
用水线阈值法分割图像4-10(a)。图像高帽变换的结果如图4-10(b)所示,低帽变换的结果如图4-10(c)所示,高帽变换与低帽变换相减的结果如图4-10(d)所示,阈值分割进一步增强图像如图4-10(e)所示,最后水线阈值分割图像如图4-10(f)所示。程序清单见附录。

(a)原始图像 (b)高帽变换图像

(c)低帽变换图像 (d)高帽与低帽相减后的图像

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


确定种子像素

v2-4f89913ab376925632be5823a038f938_b.png


图4-8给出已知种子点进行区域生长的一个示例。图4-12(a)给出需分割的图像,设已知有两个种子像素(标为深浅不同的灰色方块),先要进行区域生长。设这里采用的判断准则是:如果所考虑的像素与种子像素灰度差的绝对值小于某个门限T,则将该像素包括进种子像素所在区域。图4-12(b)给出了T=3时的区域生长结果,整幅图被较好地分成2个区域;图4-12(c)给出了T=1时的区域生长结果,有些像素无法判定;图4-12(d)给出T=6时的区域生长结果,整幅图都被分在一个区域中了。由此可见门限的选择是很重要的。






v2-4f89913ab376925632be5823a038f938_b.png


从上面的示例可知,在实际因果能够区域生长方法时需要解决3个问题:
① 如何选择一组能正确代表所需区域的种子像素;
② 如何确定在生长过程中能将相邻像素包括进来的准则;
③ 如何确定生长终止的条件和规则。
第一个问题通常可以根据具体图像的特点来选取种子像素。例如,在红外图像检测技术中,通常目标的辐射都比较大,所以可以选择图像中最亮的像素作为种子像素。如果没有图像的先验知识,那么可以借助生长准则对像素进行相应的计算。如果计算结果可以看出聚类的情况,那么可以选择聚类中心作为种子像素。
第二个问题的解决不但依赖于具体问题的特征,还与图像的数据类型有关。如果图像是RGB彩色图像,那么如果使用单色准则就会影响分割结果。另外,还需要考虑像素间的连通性是否有时会出现无意义的分割结果。
一般生长过程在进行到再没有满足生长准则需要的像素时停止。但常用的基于灰度、纹理、彩色的准则大都基于图像中的局部性质,并没有充分考虑生长的“历史”。为增加区域生长的能力长需要考虑一些与尺寸、形状等图像和目标的全局性质有关的准则。在这种情况下需对分割结果建立一定的模型或辅以一定的先验知识。
5.2生长准则和过程
区域生长的一个关键是选择合适的生长或相似准则,大部分区域生长准则使用图像的局部性质。生长准则可根据不同原则制定,而使用不同的生长准则会影响生长的过程。下面介绍3种基本的生长准则和方法。
a.灰度差准则
区域生长方法将图像以像素为基本单位来进行操作,基于区域灰度差的方法主要有如下步骤:
(1) 对图像进行逐行扫描,找出尚没有归属的像素;
(2) 以该像素为中心检查它的邻域像素,即将邻域中的像素逐个与它相比较,如果灰度差小于预先确定的阈值,将它们合并;
(3) 以新合并的像素为中心,返回到步骤(2),检查新像素的邻域,直到区域不能进一步扩张;
(4) 返回到步骤(1),继续扫描直到不能发现没有归属的像素,则结束整个生长过程。
采用上述方法得到的结果对区域生长起点的选择有较大依赖性。为克服这个问题可采用下面的改进方法:
(1) 设灰度差的阈值为零,用上述方法进行区域扩张,使灰度相同像素合并;
(2) 求出所以邻接区域之间的平均灰度差,并合并具有最小灰度差的邻接区域;
(3) 设定终止准则,通过反复进行上述步骤(2)中的操作将区域依次合并直到中指准则满足为止。
另外,当图像中存在缓慢变化的区域时,上述方法有可能会将不同区域逐步合并而产生错误。为克服这个问题,可不用新像素的灰度值去与邻域像素的灰度值比较,而用新像素所在区域的平均灰度值去与各邻域像素的灰度值进行比较。
对一个含N个像素的区域R,其均值为:

v2-4f89913ab376925632be5823a038f938_b.png

(4-29)
对像素是否合并的比较测试表示为:

v2-4f89913ab376925632be5823a038f938_b.png

(4-30)
其中T为给定的阈值。
区域生长的过程中,要求图像的同一区域的灰度值变化尽可能小,而不同的区域之间,灰度差尽可能大。两种情况进行讨论:
(1) 设区域为均匀的,各像素灰度值为均值m与一个零均值高斯噪声的叠加。当用式(4-30)测试某个像素时,条件不成立的概率为:

v2-4f89913ab376925632be5823a038f938_b.png

(4-31)
这就是误差概率函数,当T取3倍的方差时,误判概率为1~99.7%。这表明,当考虑灰度均值时,区域内的灰度变化应尽量小。
(2) 设区域为非均匀,且由两部分不同目标的图像像素构成。这两部分像素在R中所占比例分别为

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

,灰度值分别为

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

,则区域均值为

v2-4f89913ab376925632be5823a038f938_b.png

。对灰度值为m的像素,它与区域均值的差为:

v2-4f89913ab376925632be5823a038f938_b.png

(4-32)
根据式(4-30),可知正确的判决概率为:

v2-4f89913ab376925632be5823a038f938_b.png

(4-33)
这表明,当考虑灰度均值时,不同部分像素间的灰度差距离应尽量大。
b.灰度分布统计准则
这里考虑以灰度分布相似性作为生长准则来决定区域的合并,具体步骤为:
(1) 把图像分成互不重叠的小区域;
(2) 比较邻接区域的累积灰度直方图根据灰度分布的相似性进行区域合并;
(3) 设定终止准则,通过反复进行步骤(2)中的操作将各个区域依次合并直到终止准则满足。
这里对灰度分布的相似性常用两种方法检测(设

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

分别为两邻接区域的累积灰度直方图):
Kolmogorov—Smirnov检测

v2-4f89913ab376925632be5823a038f938_b.png

(4-34)
Smoothed—Difference检测

v2-4f89913ab376925632be5823a038f938_b.png

(4-35)
如果检测结果小于给定的阈值,即将两区域合并。
采用灰度分布相似判别准则合并法形成区域的处理过程与灰度差别准则的合并法相类似。灰度分布相似合并法生成区域的效果与微区域的大小和阈值的选取关系密切,一般说来,微区域太大,会造成因过渡合并而漏分区域;反之,则因合并不足而割断区域。而且,图像的复杂程度,原图像生成状况的不同,对上述参数的选择会有很大影响。通常,微区域大小q和阈值T由特定条件下的区域生成效果确定。
c.区域形状准则
在决定对区域的合并时也可以利用对目标形状的检测结果,常用的方法有两种:
(1) 把图像分割成灰度固定的区域,设两邻接区域的周长分别为

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

,把两区域共同边界线两侧灰度差小于给定值的那不凡长度设为L,如果(

v2-4f89913ab376925632be5823a038f938_b.png

为预定阈值):

v2-4f89913ab376925632be5823a038f938_b.png

(4-36)
则合并两区域;
(2) 把图像分割成灰度固定的区域,设两邻接区域的共同边界长度B,把两区域共同边界线两侧灰度差小于给定值的那部分长度设为L,如果(

v2-4f89913ab376925632be5823a038f938_b.png

为预定阈值)

v2-4f89913ab376925632be5823a038f938_b.png

(4-37)
则合并两区域。
上述两种方法的区别是:第一种方法是合并两邻接区域的共同边界中对比度比较低部分占整个区域边界份额较大的区域,而第二种方法则是合并两邻接区域的共同边界中对比度较低部分比较多的区域。
5.3分裂合并
4.4.2中介绍的区域生长方法是先从单个种子像素开始通过不断接纳新像素最后得到整个区域。另一种分割的想法可以是从整幅图像开始通过不断分裂得到各个区域。实际中长先把图像分成任意大小且不重叠的区域。然后再合并或分裂这些区域以满足分割的要求。

v2-4f89913ab376925632be5823a038f938_b.png


在这类方法中,最常用的方法是四叉树分解法。设R代表整个正方形图像区域(如图4-13所示),P代表逻辑谓词。从最高层开始,把R连续地分裂成越来越小的1/4的正方形子区域

v2-4f89913ab376925632be5823a038f938_b.png

,并且始终使

v2-4f89913ab376925632be5823a038f938_b.png

。换句话说,如果

v2-4f89913ab376925632be5823a038f938_b.png

,那么就将图像分成4等分。如果

v2-4f89913ab376925632be5823a038f938_b.png

,那么就将R分成4等分。如此类推,直到

v2-4f89913ab376925632be5823a038f938_b.png

为单个像素。
如果仅仅允许使用分裂,最后有可能出现相邻的两个区域具有相同的性质但并没有合成一体的情况。为解决这个问题,在每次分裂后允许其后继续分裂或合并。这里合并只合并那些相邻且合并后组成的新区域满足逻辑谓词P的区域。换句话说,如果能满足条件

v2-4f89913ab376925632be5823a038f938_b.png

,则将

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

合并起来。
总结前面所述的基本分裂合并算法步骤如下:
(1) 对任一个区域,如果

v2-4f89913ab376925632be5823a038f938_b.png

就将其分裂成不重叠的4等分;
(2) 对相邻的两个区域

v2-4f89913ab376925632be5823a038f938_b.png

v2-4f89913ab376925632be5823a038f938_b.png

它们也可以大小不同,即不在同一层,如果条件

v2-4f89913ab376925632be5823a038f938_b.png

满足,将它们合并起来;
(3) 如果进一步的分裂合并都不可能了,则结束。
MATLAB中可以调用图像处理工具中的qtdecomp函数来实现四叉树分解。这个函数首先将图像分为相等大小的正方形,然后对每一个块进行测试,观察它们是否与标准具有相同性。对不符合标准的块进行进一步分割,重复执行至每一个块都符合标准为止。
qtdecomp的基本调用方法如下:
s=qtdecomp(I,Threshold,[MinDim MaxDim])
其中I是输入图像。Threshold是一个可选参数,如果某个子区域中的最大的像素灰度值减去最小的像素灰度值大雨Threshold设定的阈值,那么继续进行分解,否则停止并返回。[MinDim MaxDim]也是可选参数,用来指定最终分解得到的子区域大小。返回值S是一个稀疏矩阵,其非零元素的位置回应于块的左上角,每一个非零元素值代表块的大小。
四叉树分解的程序清单与实验结果见附录。


方法。


参考文献
[1]边肇祺等.模式识别[M].清华大学出版社,1988
[2]王爱民,沈兰荪.图像分割研究综述.测控技术[J],2000
[3]岳海萍.利用Matlab进行数字图像的边缘检测[J].辽阳石油化工高等专科学校学报,2002
[4]赵荣椿,迟耀斌,朱重光.图像分割技术进展[J].中国体视学与图像分析.
1998
[5]邹益民.MATLAB与C语言的混合编程.计算机应用,2000
[6]张军平,王珏.主曲线研究综述[J].计算机学报,2003,26(2):129~146.
[7] Steve Rimmer.Windows图像处理实用技术和范例[M].学苑出版社,1994
[8] Acharya RS.et al. Proc of SPIE.1991,1652:50~61
[9] Boire JY.et al. Proc Ann Int Conf IEEE Eng Med Biol Soc. 1990:421~422
[10]Dougherty ER. Introduction to Mathematical Morphology. SPIE Optical Engineering Press,1992
[11] Higgins WE.et al. IEEE Transactions on Medical Imaging.1990.19(8):384~395
[12]M.liang,Z.K.Sun.A neural network model for image segmentation.Swizerland
[13] S.D.Yanowitz,A.M.Bruckstein. Anewmethodforimage segmentation.
Computer Vision Vision.Graphics,and Image Processing,1989
[14]Skolnik. Mathematical Morphology.CVGIP,1986,35:281~282



程序清单:

1.用Prewitt算子检测边缘:

I=imread('sunset1.bmp');

BW1=edge(I,'prewitt',0.04); % 0.04为梯度阈值

figure(1);

imshow(I);

figure(2);

imshow(BW1);

2.用不同σ值的LoG算子检测图像的边缘

I=imread('pic1.bmp');

BW1=edge(I,'log',0.003,2); % σ=2

imshow(BW1);

title('σ=2的LoG算子检测的边缘')

BW1=edge(I,'log',0.003,3); % σ=3

figure,imshow(BW1);

title('σ=3的LoG算子检测的边缘')

3.用Canny算子检测图像的边缘

I=imread('sunset1.bmp');

BW1=edge(I,'canny',0.2);

figure,imshow(BW1);

title('canny算子边缘检测');

4. 阈值分割

I=imread('pic1.bmp');

imhist(I); %观察灰度直方图,灰度140处有谷,确定阈值T=140

I1=im2bw(I,140/255); % im2bw函数需要将灰度值转换到[0,1]范围内

figure,imshow(I1);

5. 水线阈值法分割图像

afm= imread (’cell.tif’);

figure, imshow(afm);

se=strel (’disk’,15);
Itop=imtophat(afm,se);figure,imshow(Itop,[ ]);
Ibot=imbothat(afm,se);figure,imshow(Ibot,[ ]);
Ienhance=imsubtract(imadd(Itop,afm),Ibot) ;

figure,imshow(Ien2hance);
Iec=imcomplement(Ienhance);

Iimpose=imimposemin(Iec,Iemin) ;

wat=watershed(Iimpose);

figure,imshow(wat) ;

6.对下列矩阵进行四叉树分解程序及结果

I=[1 1 1 1 2 3 6 6

1 1 2 1 4 5 6 8

1 1 1 1 10 15 7 7

1 1 1 1 20 25 7 7

20 22 20 22 1 2 3 4

20 22 22 20 5 6 7 8

20 22 20 20 9 10 11 12

22 22 20 20 13 14 15 16];

S=qtdecomp(I,5);

full(S)

ans =

4 0 0 0 2 0 2 0

0 0 0 0 0 0 0 0

0 0 0 0 1 1 2 0

0 0 0 0 1 1 0 0

4 0 0 0 2 0 2 0

0 0 0 0 0 0 0 0

0 0 0 0 2 0 2 0

0 0 0 0 0 0 0 0

你可能感兴趣的:(算法,dbcp,计算机视觉,机器学习,边缘检测)