基于区域生长算法的图像分割python_基于区域分割(图像分割)

时间:2024-10-23 07:42:59

1. 区域生长

区域增长方法是根据同一物体区域内象素的相似性质来聚集象素点的方法,从初始区域(如小邻域或甚至于每个象素)开始,将相邻的具有同样性质的象素或其它区域归并到目前的区域中从而逐步增长区域,直至没有可以归并的点或其它小区域为止。区域内象素的相似性度量可以包括平均灰度值、纹理、颜色等信息。

区域增长方法是一种比较普遍的方法,在没有先验知识可以利用时,可以取得最佳的性能,可以用来分割比较复杂的图象,如自然景物。但是,区域增长方法是一种迭代的方法,空间和时间开销都比较大。

区域生长是一种串行区域分割的图像分割方法。区域生长是指从某个像素出发,按照一定的准则,逐步加入邻近像素,当满足一定的条件时,区域生长终止。区域生长的好坏决定于1.初始点(种子点)的选取。2.生长准则。3.终止条件。区域生长是从某个或者某些像素点出发,最后得到整个区域,进而实现目标的提取。

区域生长的原理

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

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

区域生长是一种古老的图像分割方法,最早的区域生长图像分割方法是由Levine等人提出的。该方法一般有两种方式,一种是先给定图像中要分割的目标物体内????的一个小块或者说种子区域(seed

point),再在种子区域基础上不断将其周围的像素点以一定的规则加入其中,达到最终将代表该物体的所有像素点结合成一个区域的目的;另一种是先将图像分割成很多的一致性较强,如区域内像素灰度值相同的小区域,再按一定的规则将小区域融合成大区域,达到分割图像的目的,典型的区域生长法如T. C. Pong等人提出的基于小面(facet)模型的区域生长法,区域生长法固有的缺点是往往会造成过度分割,即将图像分割成过多的区域

区域生长实现的步骤如下:

1. 对图像顺序扫描!找到第1个还没有归属的像素, 设该像素为(x0, y0);

2. 以(x0, y0)为中心, 考虑(x0, y0)的4邻域像素(x,

y)如果(x0,

y0)满足生长准则, 将(x,

y)与(x0, y0)合并(在同一区域内), 同时将(x, y)压入堆栈;

3. 从堆栈中取出一个像素, 把它当作(x0, y0)返回到步骤2;

4. 当堆栈为空时!返回到步骤1;

5. 重复步骤1 - 4直到图像中的每个点都有归属时。生长结束。

mean

shift算法

1. 简介

Mean Shift算法本质上是最优化理论中的最速下降法(亦称梯度下降法,牛顿法等),即沿着梯度下降方法寻找目标函数的极值。在跟踪中,就是为了寻找到相似度值最大的候选目标位置。

2. 算法的基本思想

那么,它究竟是如何来寻找这样的相似度最大位置(最佳匹配区域)?

我们知道从初始目标区域提取的特征,对于下一个的视频而言,其上任意位置都可以圈定出一个与初始化目标区域相同大小的区域,并提取该区域的颜色直方图特征与初始化目标区域提取的颜色直方图特征进行匹配,计算得到两个特征之间的相似度。由此,可以得到一个由特征匹配程度构成的一个相似度概率密度分布图我们真正需要寻找的就是该概率密度分布图上的最大值(与初始目标特征最相似的位置)。

Mean

Shift方法就是沿着概率密度的梯度方向进行迭代移动,最终达到密度分布的最值位置。其迭代过程本质上是的最速下降法,下降方向为一阶梯度方向,步长为固定值。但是,Mean

Shift没有直接求取下降方向和步长,它通过模型的相似度匹配函数的一阶Talor展开式进行近似,直接推到迭代的下一个位置。由此,沿着梯度方向不断迭代收敛到目标相似度概率目标分布的局部极大值。

3. 算法特点

实际中,我们不可能去求取下一帧中所有位置的相似度。Mean

Shift是在不知道该概率密度分布的条件下,使用迭代过程中每次选定的目标区域的局部密度特征来进行迭代的,因此,它寻找的是目标的局部极大值。这就导致目标运动过快或背景过于复杂时,迭代寻找的局部极值并不是目标在下一帧中的最佳匹配位置。另外,Mean

Shift作为最速下降法的一种,它的收敛速度并不快,且在接近最优值时,存在锯齿现象。

4. 图示解释

解释:图中加入蓝色区域为设定的目标基础区域大小,且蓝色中心为原始位置。当下一帧图像来时,搜索局部区域内的目标点。通常这个目

标点是与区域内各点的权重有关系的。权重关系当然是离中心越近权重越大,越远权重越小。

5. 例子解析

本人文章中有一个Mean Shift 的简单类。基于统计的目标直方图进行视频跟踪。

(1)因为目标直方图具有特征稳定,抗部分遮挡,计算方法简单和计算量小的特点。所以基于Mean Shift

的跟踪一般采用直方图对目标进行建模,然后通过相似度量,最终实现目标的匹配和跟踪。

(2)MeanShift

算法是通过人机交互的方式对被跟踪目标进行初始化。起始帧,手动确定一个目标特征的区域,称为被跟踪目标的目标区域,这个目标区域也是核函数作用区域,区域的大小等于核函数的带宽(或“尺度”)。

假定我们在彩色视频序列图像中跟踪目标,则图像的值域是RGB颜色空间,按照直方图的方式将RGB颜色空间中的每个子空间中R,G或B空间分成K个相等区间,将每个区间称为一个bin,构成特征空间,特征空间的特征值的个数为m=

k^3。

在以后每帧图像中可能存在目标的候选区域中对特征空间的每个特征值的计算称为候选模型的描述。一般选高斯函数或Uniform核函数。通过相似性函数度量初始帧目标模型和当前帧的候选模型的相似性,通过求相似性函数最大得到关于目标的MeanShift向量,这个向量即是目标从初始位置向正确位置转移的向量,由于MeanShift算法的收敛性,不断迭代计算MeanShift向量,在当前帧中,最终目标会收敛到目标的真实位置(可以用一个小阈值判定),从而达到跟踪的目的。

2. 区域分裂合并

区域分裂合并算法的基本思想是先确定一个分裂合并的准则,即区域特征一致性的测度,当图像中某个区域的特征不一致时就将该区域分裂成4 个相等的子区域,当相邻的子区域满足一致性特征时则将它们合成一个大区域,直至所有区域不再满足分裂合并的条件为止. 当分裂到不能再分的情况时,分裂结束,然后它将查找相邻区域有没有相似的特征,如果有就将相似区域进行合并,最后达到分割的作用。

在一定程度上区域生长和区域分裂合并算法有异曲同工之妙,互相促进相辅相成的,区域分裂到极致就是分割成单一像素点,然后按照一定的测量准则进行合并,在一定程度上可以认为是单一像素点的区域生长方法。

区域生长比区域分裂合并的方法节省了分裂的过程,而区域分裂合并的方法可以在较大的一个相似区域基础上再进行相似合并,而区域生长只能从单一像素点出发进行生长(合并)。

反复进行拆分和聚合以满足限制条件的算法。

令R表示整幅图像区域并选择一个谓词P。对R进行分割的一种方法是反复将分割得到的结果图像再次分为四个区域,直到对任何区域Ri,有P(Ri)=TRUE。这里是从整幅图像开始。如果P(R)=FALSE,就将图像分割为4个区域。对任何区域如果P的值是FALSE.就将这4个区域的每个区域再次分别分为4个区域,如此不断继续下去。这种特殊的分割技术用所谓的四叉树形式表示最为方便(就是说,每个非叶子节点正好有4个子树),这正如图10.42中说明的树那样。注意,树的根对应于整幅图像,每个节点对应于划分的子部分。此时,只有R4进行了进一步的再细分。

如果只使用拆分,最后的分区可能会包含具有相同性质的相邻区域。这种缺陷可以通过进行拆分的同时也允许进行区域聚合来得到矫正。就是说,只有在P(Rj∪Rk)=TRUE时,两个相邻的区域Rj和Rk才能聚合。

前面的讨论可以总结为如下过程。在反复操作的每一步,我们需要做:

l.对于任何区域Ri,如果P(Ri)=FALSE,就将每个区域都拆分为4个相连的象限区域。

2.将P(Rj∪Rk)=TRUE的任意两个相邻区域Rj和Rk进行聚合。

3.当再无法进行聚合或拆分时操作停止。

可以对前面讲述的基本思想进行几种变化。例如,一种可能的变化是开始时将图像拆分为一组图象块。然后对每个块进一步进行上述拆分,但聚合操作开始时受只能将4个块并为一组的限制。这4个块是四叉树表示法中节点的后代且都满足谓词P。当不能再进行此类聚合时,这个过程终止于满足步骤2的最后的区域聚合。在这种情况下,聚合的区域可能会大小不同。这种方法的主要优点是对于拆分和聚合都使用同样的四叉树,直到聚合的最后一步。

例10.17

拆分和聚合

图10.43(a)显示了一幅简单的图像。如果在区域Ri内至少有80%的像素具有zj-mi≤2σi的性质,就定义P(Ri)=TRUE,这里zj是Ri内第j个像素的灰度级,mi是区域Ri的灰度级均值,σi是区域Ri内的灰度级的标准差。如果在此条件下,P(Ri)=TRUE,则设置Ri内的所有像素的值等于mi。拆分和聚合使用前速算法的要点完成。将这种技术应用于图10.43(a)所得结果示于图10.43(b)。请注意,图像分割效果相当好。示于图10.43(c)中的图像是通过对图10.43(a)进行门限处理得到的,门限值选在直方图中两个主要的尖峰之间的中点。经过门限处理,图像中生成的阴影(和叶子的茎)被错误地消除了。

如前面的例子中所使用的属性那样,我们试图使用基于区域中像素的均值和标准差的某些特性对区域的纹理进行量化(见11.3.3节中关于纹理的讨论)。纹理分割的概念是以在谓词P(Ri)中使用有关纹理的量度为基础的。就是说,通过指定基于纹理内容的谓词,我们可以使用本节中讨论的任何方法进行纹理分割。

1.

把一幅图像分成4份,计算每一份图像的最大灰度值与最小灰度值的差,

如果差在误差范围值外,则该份图像继续分裂。

2.

对于那些不需要分裂的那些份图像可以对其进行阈值切割了,例如某一块图像的最大灰度大于某个值,则该块图像变成255,否则变为0。