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函数的基本调用格式如下:

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值