本篇文章主要梳理基于区域算法的原理。首先先介绍区域增长算法;然后在此基础上介绍区域合并算法;之后再介绍区域分割合并算法,最后介绍2004年发在TPAMI上的一篇文章中提出的统计区域合并算法(statistical region merging)。
参考资料:
从某一个像素点 P 0 P_0 P0 出发,根据其与相邻像素点 P i P_i Pi 之间的相似性来判断是否属于同一区域。对于区域增长法,通过判断 P 0 P_0 P0 与 P i P_i Pi 像素点灰度值的差值是否小于给定阈值 K K K来判断相似性。
在得到了新的区域后,选择区域中具有相邻像素的像素点如 P j P_j Pj,作为上述步骤中的 P 0 P_0 P0 ,仿照上述步骤继续增长,直到区域不能再增长为止。
算法原理: 区域合并法基本的原理与区域增长法相似,不同的是对于区域合并法,通过判断上一步得到的区域内像素平均灰度值与其相邻像素点灰度值的差值是否小于给定阈值 K K K来判断相似性。
举个具体的例子: 以灰度值为9的像素点出发【子图(a)】,搜索其上(8)下(8)左(8)右(7)的四个像素,发现前三个像素点的灰度值与基准点的灰度值相差为1,小于阈值 K = 1.5 K=1.5 K=1.5,则判断他们相似, 而灰度值为7的像素点与基准点的灰度值差距超过阈值,所以第一次区域增长不包含该点【子图(b)】。而在得到第一次增长后的区域后,区域像素均值为8.25,由此,灰度值为7的像素便可以被包含进第二次增长的区域内【子图©】。接下来,再通过计算得到新区域像素平均值为8,而该区域周围的像素点与该区域的相似性均不满足阈值,至此,区域停止更新。
参考[1]中up主对区域合并法的细节表述的比较清晰,值得学习。
利用图像数据的金字塔或四叉树数据结构的层次概念,将图像划分成一组任意不相交的初始区域,即可以从图像的这种金字塔或四叉树数据结构的任一中间层开始、根据给定的均匀性检测准则进行分裂和合并这些区域,逐步改善区域划分的性能,直到最后将图像分成数量最少的均匀区域为止。也因此,区域分割合并法从总体上可以分为两个步骤:分割与合并。
我们使用方差最小的准则 P P P 来进行分割合并算法。
首先将原始图像分割得到四个初始区域,如下图所示。可以看到除了右上角的区域外,其他三个区域中均包含黑色和白色,不满足准则。
于是,对1,3,4三个区域再次进行四分割,可以得到下图所示的结果,可以看到红框标出来的区域仍然不满足准则
再对红框所标出的区域进行分割后,得到下图,可以看到这里所有的分割区域都满足准则 P P P ,并且不存在需要合并的区域,由此可以直接跳过步骤4,完成算法。
当然这是一个特殊情况,具体需要合并的情况可以利用第二章中的区域合并法对区域进行合并。
我们理想中的分割是要达到如下图所示的结果,然而对于上述的阈值增长法、合并法、分割合并法来说,更适用于上图所示的简单图形,而对于如下图所示的实际场景图像来说,不难推理,上述方法的效果受限于阈值的选取、准则的选取、起始区域的选取等多方面因素,同时也对不同类型图像的泛化能力差。也因此Nock等人 [2] 提出了一种基于统计学的区域合并算法,通过设计合并准则和合并顺序,提高分割效果。
首先作者通过引入假设:每个像素的采样和它的颜色通道是彼此独立的。这也是他们在统计区域合并算法中使用的唯一一个假设。这个假设的目的是为了保证在统计区域内,只要保证均一性,则区域内每个像素所拥有的像素值分布均可以有所不同。这一假设也符合实际图像的情况。为了实现分割目的,其实就是从下图 I I I【图(b)】中提取出具有鲜明的统计区域的统计图像 I ∗ I* I∗
现在有一个区域 R R R 以及它的一个相邻区域 R ′ R' R′。 通过公式推导,Nock等人得到了 R R R 和 R ’ R’ R’ 可以合并的合并准则 P P P 如下(具体推导过程可以参考 [2] 本身):
{ 1 ∣ R ˉ a ′ − R ˉ a ∣ ⩽ b 2 ( R ) + b 2 ( R ′ ′ ) 0 e l s e \left\{\begin{matrix} 1 & |\bar{R}'_a-\bar{R}_a|\leqslant \sqrt{b^2(R)+b^2(R'')} \\ 0 & else \\ \end{matrix}\right. {10∣Rˉa′−Rˉa∣⩽b2(R)+b2(R′′)else
为了得到区域合并的合理顺序,Nock等人引入了一个简单的不变量 A A A,用于记录任意两个统计区域进行合并之前,在这两个区域内进行过的所有合并操作。利用 A A A 可以保证在区域之间的任何是否需要合并的判断发生时,已有区域中的每一个内的所有判断都已经完成,从而,避免分割结果太粗或者太细,定量以及定性地控制分割错误。
以上便是四种基于区域的分割法。