第七章 图像分割
7.1 概 述 图像处理的重要任务就是对图像中的对象进行分析和理解。 在图像分析中,输出的结果是对图像的描述、分类或其他的某种结论 。 7.1 概 述 图像处理的重要任务就是对图像中的对象进行分析和理解。 在图像分析中,输出的结果是对图像的描述、分类或其他的某种结论 。 图像分析主要包括以下几部分内容: (1)把图像分割成不同的区域,或把不同的目标分开(分割)。即把图像分成互不重叠的区域并提取出感兴趣目标。 (2)找出各个区域的特征(特征提取)。 (3)识别图像中的内容,或对图像进行分类(识别与分类)。 (4)给出结论(描述、分类或其他的结论)。
典型的图像分析和理解的系统: 系统分为图像输入、预处理、图像分割(image segment)、图像识别、结构句法分析。 图7.1 图像分析系统
分割结果中同一个子区域内的像素应当是连通的 同一个子区域内的任两个像素在该子区域内互相连通。 图像分割 相似性检测 不连续性检测 区域分割 阈值分割 区域分裂与合并 自适应 边界分割 边缘检测 边缘跟踪 Hough变换 图7.2 图像分割算法
7.2 像素的邻域和连通性 1. 4邻域 2. 8邻域 取像素p四周的8个点作为相链接的邻域点,除掉p本身外,剩下的8个点就是p的8邻域。 7.2 像素的邻域和连通性 1. 4邻域 对一个坐标为 的像素p,它可以有两个水平和两个垂直的近邻像素。它们的坐标分别是 这四个像素称为p 的4邻域。 互为4邻域的像素又称为4连通的。 2. 8邻域 取像素p四周的8个点作为相链接的邻域点,除掉p本身外,剩下的8个点就是p的8邻域。 互为8邻域的像素又称为8连通的 。
目标和背景的连通性定义必须取不同,否则会引起矛盾。 图7.3 目标和背景连通性
根据连通性定义图像特征点 边界点:如果目标点集S中的点p有邻点在S的补集 中,则p称为S的边界点。边界点集称为边界,记为S’。 边界的内点:目标点集S与边界S’的差S-S’称为S的内(部)点 孤点:没有邻接点的点。 封闭曲线:连通域S中所有点都有两个邻点,则称此连通域为封闭曲线。
【例7.1】根据4/8连通准则在二值图像中判断目标。 解:应用函数bwlabel可以根据4连通或8连通准则,在给定的二值图像矩阵BW中寻找目标。MATLAB程序: BW = [1 1 1 0 0 0 0 0; 1 1 1 0 1 1 0 0; 1 1 1 0 0 0 1 0; 1 1 1 0 0 1 1 0; 1 1 1 0 0 0 0 0]; %给定的二值图像矩阵 L4 = bwlabel(BW,4) %根据4连通准则判定目标 L8 = bwlabel(BW,8) %根据8连通准则判定目标
根据4连通准则,得到的目标是3个: L4 = 1 1 1 0 0 0 0 0 1 1 1 0 2 2 0 0 1 1 1 0 0 0 3 0 1 1 1 0 0 3 3 0 1 1 1 0 0 0 0 0 根据8连通准则,得到目标是2个: L8 =1 1 1 0 0 0 0 0 1 1 1 0 2 2 0 0 1 1 1 0 0 0 2 0 1 1 1 0 0 2 2 0 1 1 1 0 0 0 0 0
7.3 图像的阈值分割技术 灰度阈值分割方法。 若图像中目标和背景具有不同的灰度集合,且两个灰度集合可用一个灰度级阈值T进行分割,在图像中分割出目标区域与背景区域。 设图像为 ,其灰度集范围是[0,L],在0和L之间选择一个合适的灰度阈值T。
这样得到的是一幅二值图像。 图7.4给出了利用阈值分割图像的实例。 图像分割方法可由下式描述: (a)是原图 (b)是对应的直方图 (c)是选择分割阈值为110的结果图。 (7.1)
(a)原图像 (b)直方图 (c)已分割的图 110点 (a)原图像 (b)直方图 (c)已分割的图 图7.4 阈值分割
全局阈值是最简单的图像分割方法。根据不同的目标,选用最佳的阈值。 7.3.1 全局阈值分割 全局阈值是最简单的图像分割方法。根据不同的目标,选用最佳的阈值。 1.实验法 需要知道图像的某些特征 2.直方图法 适用于目标和背景的灰度差较大,直方图有明显谷底的情况。 3.最小误差的方法 要求已知图像像素的概率密度函数和目标像素占整个图像的百分比(PP138)。
7.3.2 自适应阈值的选取 当照明不均匀、有突发噪声或者背景灰度变化比较大的时候,可以对图像进行分块处理,对每一块分别选定一个阈值进行分割,这种与坐标相关的阈值称为自适应阈值的方法。 这类算法的时间复杂度和空间复杂度比较大,但是抗噪声的能力比较强 。 任何一种分割方法都有其局限性。 实际的算法只能根据实际情况选择方法和阈值。
7.4 图像的边缘检测 基于灰度不连续性进行的分割方法。 7.4 图像的边缘检测 基于灰度不连续性进行的分割方法。 用差分、梯度、拉普拉斯算子及各种高通滤波处理方法对图像边缘进行增强,只要再进行一次门限化的处理,便可以将边缘增强的方法用于边缘检测。 7.4.1 梯度算子 梯度对应于一阶导数,相应的梯度算子就对应于一阶导数算子。
对于一个连续函数f (x,y),其在(x,y)处的梯度: 常采用小型模板,然后利用卷积运算来近似,Gx 和 Gy 各自使用一个模板。 1. Roberts算子 (7.2)
2. Prewitt算子 3. Sobel算子 通过算子检测后,还需作二值处理从而找到边界点。 图7.5给出了利用这三个算子进行边缘检测的不同效果。 这三种模板中,Sobel算子的检测效果最好。
(a) 原图像 (b) Roberts算子检测 (c) Prewitt算子检测 (d) Sobel算子检测
I = imread('blood1.tif'); imshow(I); BW1 = edge(I,'roberts'); %进行Roberts算子边缘检测,门限值采用默认值 BW2 = edge(I,'prewitt'); %进行Prewitt算子边缘检测,门限值采用默认值 BW3 = edge(I,'sobel'); %进行Sobel算子边缘检测,门限值采用默认值 figure,imshow(BW1,[]); figure,imshow(BW2,[]); figure,imshow(BW3,[]);
Laplacian是二阶导数算子,也是借助模板来实现的。 对模板有一些基本要求: 7.4.2 拉普拉斯算子 Laplacian是二阶导数算子,也是借助模板来实现的。 对模板有一些基本要求: 模板中心的系数为正,其余相邻系数为负,且所有的系数之和为零。 常用的模板有: 图7.6所示是应用Laplacian算子,对图7.5(a)进行边缘检测的结果。
图7.6 Laplacian算子边缘检测的结果图 实现的MATLAB程序: I = imread('blood1.tif'); imshow(I); BW4 = edge(I,'log'); figure,imshow(BW4,[]); 图7.6 Laplacian算子边缘检测的结果图
7.4.3 方向算子 利用一组模板对图像中的同一像素求卷积,然后选取其中最大的值作为边缘强度,而将与之对应的方向作为边缘方向。 7.4.3 方向算子 利用一组模板对图像中的同一像素求卷积,然后选取其中最大的值作为边缘强度,而将与之对应的方向作为边缘方向。 相对于梯度算子的优点:不仅仅只考虑水平和垂直方向,还可以检测其他方向上的边缘。 但计算量将大大增加。 常用的有8方向Kirsch(3×3)模板,如图7.7所示,方向间的夹角为45º。
图7.7 3×3 Kirsch算子的八方向模板
Canny的主要工作:推导了最优边缘检测算子。 考核边缘检测算子的指标是: 低误判率,即尽可能少地把边缘点误认为是非边缘点; 高定位精度,即准确地把边缘点定位在灰度变化最大的像素上; 抑制虚假边缘。
判断一个像素是否为边缘点的条件为: (1)像素(i, j)的边缘强度大于沿梯度方向的两个相邻像素的边缘强度; (2)与该像素梯度方向上相邻两点的方向差小于45º; (3)以该像素为中心的3×3邻域中的边缘强度的极大值小于某个阈值 。
Canny边缘检测算子 假设:高斯函数为 把 分解为两个一维滤波器 因此有 且有边缘强度 边缘垂直方向
图7.8所示是应用Canny算子,对图7.5(a)进行边缘检测的结果。 MATLAB程序: I = imread('blood1.tif'); imshow(I); BW5 = edge(I,' canny'); figure,imshow(BW5,[]); 图7.8 Canny算子边缘检测的结果图
7.4.5 边缘跟踪 上述方法仅得到处在边缘上的像素点。 噪声和不均匀的照明而产生的边缘间断的影响,使得经过边缘检测后得到的边缘像素点很少能完整地描绘实际的一条边缘。 可以在使用边缘检测算法后,紧接着使用连接方法将边缘像素组合成有意义的边缘。
光栅扫描跟踪法: 一种简单的利用局部信息、通过扫描的方式将边缘点连接起来的方法。 该跟踪算法采用电视光栅行扫描顺序对遇到的像素进行分析,从而确定其是否为边缘。 由于光栅扫描跟踪和扫描方向有关,因此最好沿其他方向再跟踪一次 。
光栅跟踪算法如下: 1. 确定一个较高的阈值D作为检测阈值,把高于阈值的像素作为检出点。 3。给出一个较低阈值T作为跟踪阈值。 4。确定跟踪邻域。 5。从首行开始,找出由D检出的点作为对象扫描下一行;凡位于上行检出点跟踪邻域的像素,其灰度差小于跟踪阈值的都接受为对象。 6。当下一行跟踪邻域中没有一个像素是对象时一条曲线的更总能结束。 7。对没有跟踪过的检出点,在此利用5-6步至整个图像没有检出点为止。
7.5 霍夫变换 霍夫(Hough)变换方法是利用图像全局特性而直接检测目标轮廓,将图像的边缘像素连接起来的常用方法。 1.基本原理 7.5 霍夫变换 霍夫(Hough)变换方法是利用图像全局特性而直接检测目标轮廓,将图像的边缘像素连接起来的常用方法。 1.基本原理 点——线的对偶性。 当给定图像空间的一些边缘点,就可以通过霍夫变换确定连接这些点的直线方程。
2.霍夫变换的实现 实际进行霍夫变换时,要在上述基本方法的基础上根据图像的具体情况采用一些措施。 检测(x,y)坐标系下的圆,使用极坐标方程 检测共线的点,利用点线对偶原理(x,y)坐标下的一条直线,在(p,q)坐标下为一个点,即: 对直线用参数方程表示为 此时 表示直线到原点的垂直距离。 表示原点到直线的垂直点连线与x轴的夹角。
Hough变换的计算 1.建立一个PQ空间上的二维数组A(p,q),假设直线的斜率和截距为(pmin,pmax)和(qmin,qmax)。 2.A数组初值为零,让p从pmin到pmax取值,分别计算q值,对A(p,q)进行累加,即: A(p,q)=A(p,q)+1; 则A(p,q)的值就是XY平面上的共线点数,p值和q值就是XY平面直线方程的参数。
7.6 区域生长(Region Growing)法 7.6.1 原理和步骤 将具有相似性质的像素集划分为一个目标集来构成目标区域。 先对每个需要分割的区域找一个种子像素作为生长的起点,然后将种子像素周围邻域中与种子像素具有相同或相似性质的像素合并到这一区域中。 将这些新像素当做新的种子像素继续进行上面的过程,直到再没有满足条件的像素可被包括进来。这样一个区域就长成了。
在实际应用区域生长法时需要解决三个问题: ① 选择一组能正确代表所需区域的种子像素; 种子像素的选取常可借助具体问题的特点进行。 ② 确定在生长过程中将相邻像素包括进来的准则; 生长准则的选取不仅依赖于具体问题本身,也和所用图像数据的种类有关 , ③ 制定让生长过程停止的条件或规则。 一般生长过程在进行到再没有满足生长准则需要的像素时停止。
(a)原图像 (b)T=3的生长结果 (c) T=1的生长结果 图7.9 区域生长
7.6.2 生长准则和过程 区域生长的一个关键: 选择适合的生长准则,大部分区域生长准则使用图像的局部性质。 7.6.2 生长准则和过程 区域生长的一个关键: 选择适合的生长准则,大部分区域生长准则使用图像的局部性质。 生长准则可根据不同的原则制定,而使用不同的生长准则会影响区域生长的过程。
基于区域灰度差 区域生长方法将图像以像素为基本单位来进行操作。 (1)对图像进行逐行扫描,找出尚没有归属的像素; (2)以该像素为中心检查它的邻域像素,即将邻域中的像素逐个与它比较,如果灰度差小于预先确定的阈值,就将它们合并; (3)以新合并的像素为中心,返回到步骤2,检查新像素的邻域,直到区域不能进一步扩张; (4)返回到步骤1,继续扫描,直到不能发现没有归属的像素,则结束整个生长过程。
基于区域灰度差的改进算法 上述算法区域生长的结果与起点关系密切,为了避免该问题给出如下算法; (1)灰度差阈值T=0,对所有相同灰度的像素定义为一个区域; (2)计算所有邻接区域之间的平均灰度差,并合并具有最小灰度差的邻接区域; (3)设定终止准则,反复执行第2步至终止准则满足为止。
2. 基于区域内灰度分布统计性质 考虑以灰度分布相似性作为生长准则来决定区域的合并: (1)把图像分成互不重叠的小区域; (2)比较邻接区域的灰度直方图,根据灰度分布的相似特性进行区域合并; (3)设定终止准则,通过反复进行步骤2中的操作将各个区域依次合并,直到终止准则满足。
相似性判断标准 两种主要的相似性判断标准: 设:h1(z)和h2(z)分别为两个邻接区域的灰度直方图,则相似性判对标准可以是: 1. Kolmogorov—Smirnov检测标准: 2. Smoothed—Difference检测标准: