1、第9章 图像分割主讲人:王珊主要内容 9.1 图像分割概述 9.2 边缘检测 9.3 霍夫变换 9.4 阈值分割 9.5 区域分割 9.6 小结 概念:概念:图像分割是指将图像中具有特殊意义的不同区域划分开来,这些区域互不相交,每个区域满足灰度、纹理、彩色等特性的某种相似性准则。图像分割是图像分析过程中最重要的步骤之一,分割出的区域可以作为后续特性提取的目标对象。9.1 图像分割概述 图像分析系统的基本构成如下图:知识库知识库表示与描述表示与描述预处理预处理分割分割低级处理高级处理中级处理识别识别与与解释解释结果图像获取图像获取问题 图像分割概述图像分割方法和种类 基于图像灰度值的不连续性或相
2、似性,图像分割方法可基于图像灰度值的不连续性或相似性,图像分割方法可以划分为以下种类。以划分为以下种类。图像分割概述 图像分割概述图像分割的目的把图像分解成构成它的部件和对象;有选择性地定位感兴趣对象在图像中的位置和范围。图像分割概述从简到难,逐级分割 控制背景环境,降低分割难度 注意力集中在感兴趣的对象,缩小不相干图像成分的干扰。图像分割的基本思路提取轮廓车牌定位车牌识别 图像分割概述 令集合R代表整个图像区域,对R的分割可看作将R分成N个满足以下五个条件的非空子集(子区域)R1,R2,RN.对所有的i和j,ij,有RiRj=;对i=1,2,N,有P(Ri)=TRUE;对ij,有P(RiRj
3、)=FALSE;对i=1,2,N,Ri是连通的区域。其中P(Ri)是对所有在集合Ri中元素的逻辑谓词,代表空集。图像分割的几何定义RRiNi1 图像分割概述9.2 边缘检测 9.2.1 边缘检测概述 9.2.2 常见的边缘检测算子 9.2.3 Matlab实现 9.2.4 Visual C+实现9.2.1 边缘检测概述1.边缘的定义:图像中周围像素灰度有图像中周围像素灰度有阶跃阶跃变化或变化或屋顶屋顶变化的那些像素的集合。变化的那些像素的集合。2.边缘的分类 阶跃状阶跃状 屋顶状屋顶状阶跃状阶跃状屋顶状屋顶状图像:剖面:边缘检测图像:剖面:一阶导数:二阶导数:各种边缘其一阶、二阶导数特点 边缘
4、检测说明:说明:对阶跃边缘,其一阶导数在图像由暗变明的位置处有1个向上的阶跃,而其它位置都为0,这表明可用一阶导数的幅度值来检测边缘的存在,幅度峰值幅度峰值一般对应边缘位置。其二阶导数在一阶导数的阶跃上升区有1个向上的脉冲,而在一阶导数的阶跃下降区有1个向下的脉冲,在这两个脉冲之间有1个过0点,它的位置正对应原图像中边缘的位置,所以可用二阶导数的过过0点点检测边缘位置,而用二阶导数在过0点附近的符号确定边缘象素在图像边缘的暗区或明区。对(c)而言,脉冲状的剖面边缘与(a)的一阶导数形状相同,所以(c)的一阶导数形状与(a)的二阶导数形状相同,而它的2个二阶导数过0点正好分别对应脉冲的上升沿和下
5、降沿,通过检测脉冲剖面的2个二阶导数过个二阶导数过0点点就可确定脉冲的范围。对(d)而言,屋顶状边缘的剖面可看作是将脉冲边缘底部展开得到,所以它的一阶导数是将(c)脉冲剖面的一阶导数的上升沿和下降沿展开得到的,而它的二阶导数是将脉冲剖面二阶导数的上升沿和下降沿拉开得到的,通过检测屋顶状边缘剖面的一阶导数过过0点点,可以确定屋顶位置。边缘检测 边缘检测3、边缘检测的基本步骤原始图像边缘图像二值图像锐化图像平滑图像平滑滤波边缘判定锐化滤波边缘连接 边缘检测4、边缘检测方法的分类 可可将其算法分为:基于查找的算法和基于零穿将其算法分为:基于查找的算法和基于零穿越的算法。除此还有越的算法。除此还有Ca
6、nny边缘检测算法、统计判边缘检测算法、统计判别方法等。别方法等。查找方法:通过寻找图像一阶导数中的最大和最小值检测边界。零穿越方法:通过寻找图像二阶导数零穿越来寻找边界。5、边缘检测算子 可用一阶、二阶局部微分算子来检测图像中可用一阶、二阶局部微分算子来检测图像中的边缘。下面是几种常用的微分算子。的边缘。下面是几种常用的微分算子。梯度算子梯度算子高斯高斯-拉普拉斯拉普拉斯算子算子CarryCarry边缘检测边缘检测算子算子Roberts算子Prewitt算子Sobel算子 边缘检测 二维图像的一阶导数:二维图像的一阶导数:梯度算子梯度算子9.2.2 常用的边缘检测算子函数f(x,y)在(x,
7、y)处的梯度为一个向量:f=f/x,f/y计算这个向量的大小为:G=(f/x)2+(f/y)21/2近似为:G|fx|+|fy|或 G max(|fx|,|fy|)梯度的方向角为:(x,y)=tan-1(fy/fx)可用下图所示的模板表示:1-1-11 边缘检测 为了检测边缘点,选取适当的阈值T,对梯度图像进行二值化,则有:这样形成了一幅边缘二值图像g(x,y).特点:仅计算相邻像素的灰度差,对噪声比较敏感,无法抑止噪声的影响。图片演示:边缘检测2 2)RobertsRoberts算子算子公式:模板:特点:与梯度算子检测边缘的方法类似,对噪声敏感,但效果较梯度算子略好。)1,1()1,1()1
8、,1()1,1(yxfyxffyxfyxffyx-11fx1-1fy3)Prewitt3)Prewitt算子算子公式模板:特点:在检测边缘的同时,能抑止噪声的影响.0-110-110-11-1-1-1000111)1,1()1,()1,1()1,1()1,()1,1()1,1(),1()1,1()1,1(),1()1,1(yxfyxfyxfyxfyxfyxffyxfyxfyxfyxfyxfyxffyx3 3)SobelSobel算子算子公式模板特点:对4邻域采用带权方法计算差分;能进一步抑止噪声;但检测的边缘较宽。-220-110-110000-1-1-2112)1,1()1,(2)1,1()
9、1,1()1,(2)1,1()1,1(),1(2)1,1()1,1(),1(2)1,1(yxfyxfyxfyxfyxfyxffyxfyxfyxfyxfyxfyxffyx1、梯度算子、梯度算子2、Roberts算子算子3、Prewitt算子算子4、Sobel算子算子4 4)拉普拉斯算子)拉普拉斯算子定义:二维函数f(x,y)的拉普拉斯是一个二阶的微分定义为:2f=2f/x2,2f/y2离散形式:模板:可以用多种方式被表示为数字形式。定义数字形式的拉普拉斯的基本要求是,作用于中心像素的系数是一个负数,而且其周围像素的系数为正数,系数之和必为0。对于一个3x3的区域,经验上被推荐最多的形式是:),(
10、4)1,()1,(),1(),1(),(2yxfyxfyxfyxfyxfyxf11-400100111-8111111 由于梯度算子和Laplace算子都对噪声敏感,因此一般在用它们检测边缘前要先对图像进行平滑。拉普拉斯算子的分析:优点:各向同性、线性和位移不变的;对细线和孤立点检测效果较好。缺点:对噪音的敏感,对噪声有双倍加强作用;不能检测出边的方向;常产生双像素的边缘。5 5)MarrMarr算子算子Marr算子是在Laplacian算子的基础上实现的,它得益于对人的视觉机理的研究,有一定的生物学和生理学意义。由于Laplacian算子对噪声比较敏感,为了减少噪声影响,可先对图像进行平滑,
11、然后再用Laplacian算子检测边缘。平滑函数应能反映不同远近的周围点对给定像素具有不同的平滑作用,因此,平滑函数采用正态分布的高斯函数,即:2222),(yxeyxh其中是方差。用h(x,y)对图像f(x,y)的平滑可表示为:*代表卷积。令r是离原点的径向距离,即r2=x2+y2。),(*),(),(yxfyxhyxg对图像g(x,y)采用Laplacian算子进行边缘检测,可得:这样,利用二阶导数算子过零点的性质,可确定图像中阶跃边缘的位置。称为高斯拉普拉斯滤波算子,也称为LOG滤波器,或“墨西哥草帽”。),(*),(*)(),(*),(224222222yxfhyxferyxfyxhg
12、eh2 特点:特点:抗噪声能力强抗噪声能力强 各向同性各向同性 图像模糊化图像模糊化,1、梯度算子、梯度算子2、Roberts算子算子3、Prewitt算子算子4、Sobel算子算子5、Marr算子算子6 6)CannyCanny算子算子 在图像边缘检测中,在图像边缘检测中,抑制噪声抑制噪声和和边缘精确定位边缘精确定位是无法同是无法同时满足的,一些边缘检测算法通过平滑滤波去除噪声的同时,也时满足的,一些边缘检测算法通过平滑滤波去除噪声的同时,也增加了边缘定位的不确定性;而提高边缘检测算子对边缘敏感性增加了边缘定位的不确定性;而提高边缘检测算子对边缘敏感性的同时,也提高了对噪声的敏感性。的同时,
13、也提高了对噪声的敏感性。CannyCanny算子是力图在抗噪声干扰和精确定位之间寻算子是力图在抗噪声干扰和精确定位之间寻求最佳折衷方案。求最佳折衷方案。3个准则:个准则:信噪比准则信噪比准则信噪比越大,错误率越小;信噪比越大,错误率越小;定位精度准则定位精度准则 滤波函数滤波函数LocLoc尽量大;尽量大;单边缘响应准则单边缘响应准则对单边缘最好只有一个响应。对单边缘最好只有一个响应。CannyCanny算子步骤:算子步骤:1.2D高斯模板滤波高斯模板滤波(平滑图像,去噪);(平滑图像,去噪);2.求梯度求梯度(幅度与方向);(幅度与方向);3.非极大值抑制非极大值抑制(每个像素与其梯度方向相
14、邻像素(每个像素与其梯度方向相邻像素(两个两个)比较,如其比较,如其 灰度非极大值,则该点置灰度非极大值,则该点置0)4.双阈值判别双阈值判别(根据灰度直方图计算两个阈值)(根据灰度直方图计算两个阈值)例1:梯度算子Roberts算子Prewitt算子Sobel算子Kirsch算子原始图像Laplacian算子Marr算子曲面拟合法“边缘检测篇”总结梯度梯度RobertPrewittSobelLaplaceKirschMarrCanny计算量计算量好好好好较好较好较好较好较差较差中中较差较差方向方向表征性表征性较好较好较好较好较好较好差差好好差差较差较差抗噪抗噪能力能力较差较差较差较差中中差差
15、中中较好较好好好边缘边缘敏感性敏感性较好较好较好较好中中好好中中较差较差中中9.3 霍夫变换 9.3.1 直线检测 9.3.2 曲线检测 9.3.3 任意形状的检测 9.3.4 Hough变换直线检测的Matlab实现9.3.1 直线检测1、直角坐标参数空间 在图像x-y坐标空间中,经过点(xi,yi)的直线表示为:其中,参数a为斜率,b为截距。当将xi,yi视为常数,参数a和b看作变量,上式可表示为:便可变换到参数平面a-b。这个变换就是直角坐标中对于(xi,yi)点的Hough变换。该直线式图像坐标空间中的点(xi,yi)在参数空间的唯一方程。图像坐标空间中另一点(xi,yi)相应的一条直
16、线:baxiiyiiaxby-jjy-axby yx x(xi,yi)(xj,yj)b ba aiiaxby-jjy-axbb0a000(a)图像坐标空间(b)参数空间直角坐标中的直角坐标中的Hough变换变换 具体算法步骤:1)将参数空间视为离散,建立一个二维累加数组A(a,b),第一维范围是直线斜率a的可能范围,第二维是直线截距的可能范围;2)开始A(a,b)初始化为0,然后对图像坐标空间的每一个背景点(xi,yi),通过参数空间中每一个a的离散值,计算出对应的b值;3)每计算出一对(a,b),将对应的数组员素A(a,b)加1,即A(a,b)=A(a,b)+1。4)所有计算结束后,在参数空
17、间表决结果中找到A(a,b)的最大峰值,所对应的a0、b0就是原图像中共线点数目最多的直线方程的参数。5)继续寻找次峰值和第3第4峰值等,它们对应于原图中共线点数目略少一些的直线。2、极坐标参数空间 对于直角坐标系中的一条直线l,可用、来表示该直线,且直线方程为:其中,为原点到该直线的垂直距离,为垂线与x轴的夹角,这条直线是唯一的。构造一个参数的平面,从而有如下结论:sincosyx(xi,yi)(xj,yj)sincosiiyx(0 0、0 0)sincosjjyx 使用交点累加器,或交点统计直方图,找出相交线段最多的参数空间的点,然后找出该点对应的xy平面的直线线段。算法步骤:1)在、的极
18、值范围内对其分别进行m,n等分,设一个二维数组的下标与i、j的取值对应;2)对图像上的所有边缘点作Hough变换,求每个点在j(j0,1,n)Hough变换后的i,判断(i、j)与哪个数组元素对应,则让该数组元素值加1;3)比较数组元素值的大小,最大值所对应的(i、j)就是这些共线点对应的直线方程的参数。算法特点:1)对、量化过粗,直线参数就不精确,过细则计算量增加。因此,对、量化要兼顾参数量化精度和计算量。2)Hough变换检测直线的抗噪性能强,能将断开的边缘连接起来。3)此外Hough变换也可用来检测曲线。9.3.2 曲线检测1.用于圆的检测 Hough变换不只对直线,也可以用于圆的检测:
19、(x a)2+(y-b)2=R2 这时需要三个参数(a,b,R)的参数空间。如像找直线那样直接计算,计算量增大,不合适。解决途径:若已知圆的边缘元(当然图中还有其它非圆的边沿点混在一起),而且边缘方向已知,则可减少一维处理,把上式对x取导数,有:这表示参数a和b不独立,只需用二个参数(例如a和R)组成参数空间,计算量就缩减很多。0)(2)(2dxdybyax2.2.用于椭圆检测用于椭圆检测 设椭圆方程为:取导数有:只有三个独立参数。只需要从(a,b,x0,y0)中选择三个参数进行检测即可。1)()(220220byyaxx02020dxdybyyaxx9.3.3 任意形状的检测 在形状物中可确
20、定一个任意点(xc,yc)为参考点,从边界上任一点(x,y)到参考点(xc,yc)的长度为r,它是的函数,如:是(x,y)边界点上的梯度方向。通常是把r表为的参数r(),(xc,yc)到边界连线的角度为(),则(xc,yc)应满足下式:设某已知特殊边界R,可按的大小列成一个二维表格,即i(a,r)表,i确定后可查出a和r,经上式计算可得到(xc,yc)。对已知形状建立了R表格后,开辟一个二维存储区,对未知图像各点都来查已建立的R表,然后计算(xc,yc),若未知图像各点计算出的(xc,yc)很集中,就表示已找到该形状的边界。集中的程度就是找最大值。aryyarxxccsin)(cos)(9.3
21、.4 Hough变换直线检测的matlab实现 1、霍夫变换hough 2、寻找峰值houghpeaks 3、提取直线段houghlines 图像阈值分割是一种广泛应用的分割技术,利用图像中要提取的目标物与其背景在灰度特性上的差异,把图像视为具有不同灰度级的两类区域(目标和背景)的组合,选取一个合适的阈值,以确定图像中每个象素点应该属于目标还是背景区域,从而产生相应的二值图像。阈值分割法的特点是:适用于物体与背景有较强对比的情况,重要的是背景或物体的灰度比较单一;而且总可以得到封闭且连通区域的边界。9.4 阈值分割阈值分割图像的基本原理,可用下式表示:g(x,y)=ZE f(x,y)ZZB 其
22、它其它阈值阈值 阈值的选取时阈值分割技术得关键,如果过高,则过多的目标点被误归为背景;如果阈值过低,则会出现相反的情况。由此可见,阈值化分割算法主要有两个步骤:1)确定需要的分割阈值;2)将分割阈值与象素值比较以划分象素。在利用阈值方法来分割灰度图像时一般都对图像有一定的假设。基于一定的图像模型的。最常用的模型:假设图像由具有单峰灰度分布的目标和背景组成,处于目标或背景内部相邻象素间的灰度值是高度相关的,但处于目标和背景交界处两边的象素在灰度值上有很大的差别。如果一幅图像满足这些条件,它的灰度直方图基本上可看作是由分别对应目标和背景的两个单峰直方图混合构成的。另外,还可以将阈值设置为一个灰度范
23、围t1,t2,凡是灰度在范围内的象素都变为1,否则皆变为0,即g(x,y)=1 t1f(x,y)t20 其它其它 某种特殊情况下,高于阈值t的象素保持原灰度级,其它象素都变为0,称为半阈值法,分割后的图像可表示为:g(x,y)=f(x,y)f(x,y)t0 其它其它1、图像二值化 设原始图像f(x,y),以一定的准则在f(x,y)中找出一个合适的灰度值,作为阈值t,则分割后的图像g(x,y),可由下式表示:g(x,y)=1 f(x,y)t0 f(x,y)t或或简单直方图分割法简单直方图分割法2、双峰法阈值(根据直方图来确定阈值)60年代中期,Prewitt提出了直方图双峰法,即如果灰度级直方图
24、呈明显的双峰状,则选取两峰之间的谷底所对应的灰度级作为阈值。Z1ZiZt Zj Zk暗亮P背景目标图像灰度直方图双峰法选取阈值的缺点:会受到噪音的干扰,最小值不是预期的阈值,而偏离期望的值。改进办法:1)取两个峰值之间某个固定位置,如中间位置上。由于峰值代表的是区域内外的典型值,一般情况下,比选谷底更可靠,可排除噪音的干扰;2)加强对噪音的处理。对直方图进行平滑处理,如最小二乘法等补点插值。直方图阈值法matlab实现 函数:im2bw,全局阈值函数 BW=im2bw(I,level);BW=im2bw(I,map,level);BW=im2bw(RGB,level);分别将灰度图像、索引图像
25、、彩色图像转化为二值图像,level,为归一化阈值例子 Clear all I=imread(blood.bmp)figure,imshow(I);Figure;imhist(I)I1=im2bw(I,110/255)figure,imshow(I1);3 3、迭代选择阈值法、迭代选择阈值法 其基本思路是:开始选择一个阈值作为初始估计值,然后按照某种规则不断地更新这一估计值,直到满足给定的条件为止。其关键在于选择怎么样的迭代规则。下面是一种迭代选择阈值算法:a)选择一个T的初值估计值;b)利用阈值T把图像分为两个区域R1和R2。c)对区域R1和R2中的所有像素计算平均灰度值 和 。d)计算新的
26、阈值:e)重复步骤24,直到逐次迭代所得的T值小于事先定义的参数T。122121T4 4、最小均方误差法、最小均方误差法 所谓最佳阈值最佳阈值是以图像中的灰度为模式特征,假设各模式的灰度是独立分布的随机变量,并假设图像中待分割的模式服从一定的概率分布。一般是正态分布。设某一图像仅包含两个主要的灰度区域前景和背景。令z表示灰度值,p(z)表示灰度值概率密度函数的估计值。其分为背景的灰度值、前景即对象的灰度值。则描述图像中整体灰度变换的混合密度函数是:其中,P1 是前景中具有值z的像素出现的概率,P2 是背景中具有值z的像素出现的概率。两者的关系为:zpPzpPzp2211121 PP当选定阈值T
27、,则将一个前景点当作背景点的概率是:总错误率为 要找到出错最少的阈值T,需要将E(T)对T求微分并令微分式等于0,于是结果是:该等式解出T,即为最佳阈值。dzzTET12p TEPTEPTE2112 Tpp2211PTP阈值二值化举例:阈值二值化举例:9.5.1 区域生长法 算法实现步骤:1)根据图像的不同应用选择一个或一组种子,它或者是最亮或最暗的点,或者是位于点簇中心的点;2)选择一个描述符(条件);3)从该种子开始向外扩张,首先把种子像素加入结果集合,然后不断将与集合中各个像素连通、且满足描述符的像素加入集合4)上一过程进行到不再有满足条件的新结点加入集合为止。区域A 区域B 种子像素
28、种子像素9.5 区域分割 9.5.2 分裂合并法算法实现:1)对图像中灰度级不同的区域,均分为四个子区域;2)如果相邻的子区域所有像素的灰度级相同,则将其合并;3)反复进行上两步操作,直至不再有新的分裂与合并为止。实际应用中还可作以下修改:P(Ri)的定义为:1)区域内多于80%的像素满足不等式|zj-mi|=2i,其中,zj是区域Ri中第j个点的灰度级,mi是该区域的平均灰度级,i是区域的灰度级的标准方差。2)当P(Ri)=TRUE时,将区域内所有像素的灰度级置为mi。9.6 小结 图像分割是一个十分困难的问题。因为分割后的图像是系统目标图像分割是一个十分困难的问题。因为分割后的图像是系统目
29、标的一个函数,所以根本不存在理想的或正确的分割。的一个函数,所以根本不存在理想的或正确的分割。物体及其组成部件的二维表现形式受物体及其组成部件的二维表现形式受光照条件、透视畸变、光照条件、透视畸变、观察点变化、遮挡观察点变化、遮挡等的影响。此外,物体及其组成部件与背景之等的影响。此外,物体及其组成部件与背景之间在视觉上可能无法区分。因此,人们无法预测能够从图像中抽取出间在视觉上可能无法区分。因此,人们无法预测能够从图像中抽取出哪些与物体识别相关的初始信息。哪些与物体识别相关的初始信息。唯一肯定的是:唯一肯定的是:这一过程将在本质上具有不可靠性。这一过程将在本质上具有不可靠性。某些有用的信息能够被抽取出,但同时也会出现许多错误某些有用的信息能够被抽取出,但同时也会出现许多错误。因此,在任何应用领域中都不存在最优解。因此,在任何应用领域中都不存在最优解 。分割结果。分割结果的好坏或者正确与否,目前都还没有一个统一的评价判断的好坏或者正确与否,目前都还没有一个统一的评价判断标准,大都从分割的视觉效果和实际的应用场景来判断。标准,大都从分割的视觉效果和实际的应用场景来判断。谢谢 谢谢