研一做了红外可见融合,研二想将红外可见融合用于图像分割中。
于是先打算从传统图像处理分割入手开始调研。
项目采用多种传统图像分割算法 ( 基于阈值的分割方法(直方图双峰法、迭代阈值图像分割和大津法 OTSU)、基于区域的分割方法( 分水岭法、区域分裂合并法 ) 、概率统计方法( 基于MRF的分割 ) 和基于能量泛函 ( 水平集分割 ) )对卡通人脸提取轮廓并进行比较各类算法的异同点。
接下来按照原理和处理流程对每种算法进行介绍,并展示项目结果。
基于区域的分割方法
概率统计方法:
基于MRF的原理
参考自这里,下面是根据自己的理解再讲一遍:
马尔科夫模型是一组事件的集合。在这个集合中,事件是逐个发生,并且下一刻事件的发生只由当前发生的事件决定,而与再之前的状态没有关系。
如常用的例子:今天天气好坏只与昨天天气有关,而与前天乃至大前天都没有关系。
引申到图像领域为:图像中某一点特征(一般指灰度值、RGB值等)只与其附近的一小块邻域有关,而与其他的邻域无关。
设分割前的某一个像素点图像是S,分割类别是W,假如是:W = [A类,B类,C类,D类]。
求分割就是计算像素点S,其 (P(A类|S)、P(B类|S)、P(C类|S)、P(B类|S),然后选其中概率最大的类别作为S的最终类别。也就是统称为计算 P(W|S1)。
具体就是利用贝叶斯公式来求上述的每个像素点各自4类的概率,然后取最大的概率。
P(W):表示像素点S处的标签分为 A类、B类、C类和D类的概率, 但由于图像一开始是没有分标签的,所以我们需要给定一个标签,可通过随机分类或K-means确定一个预类别概率,然后接下来在通过迭代去矫正类别概率。注意:这里的P(W)是没有考虑像素点S的,仅仅考虑当前自己的标签和周围的标签来确定下一次迭代的标签,但是分割的最终结果是需要考虑像素点S的,所以这个P(W)并不是最终分割结果,不是条件概率
重点来了:如何通过迭代来矫正类别概率呢?这就需要使用马尔科夫的性质。
要求一个像素点是标签L的概率,此时这个像素点附近的邻域都已经划分标签了,虽然这个像素点也有一个标签,但是这个标签是上一代的标签,那么它到下一代是需要进化的,马尔科夫性质告诉我们这个像素点的分类情况只与附近一些邻域分类情况有关,而与另一些邻域没有关系,也就是说我们可以根据这个像素点附近邻域的分类情况决定这个像素点在下一代是属于哪一类的。其中马尔科夫随机场被证明了可以与一个Gibbs随机场等价:Gibbs随机场中的P(W)可以这样求 (具体怎么来就不用刨根问底了,会用就行了):
其中的T就是个参数。主要看U2(W),。其中,C代表邻域范围。β通常取0.5-1。
这里的操作就是:
以像素点S为中心的8领域,分别比较一下S与左边、右边、上边、下边、左上边、右下边、左下边和右上边。如果是同一个标签就加β,不同标签就加-β。得到的结果就是U2(W),这里待会就会有对应4个类别下的U2(W),说白了就是比较像素点S的标签与周围像素点哪一种类别最接近,待会就会下一次迭代就会倾向于这一个类别。不过实际编程就是简化成直接计以像素点S为中心的8邻域像素点,每种类别出现的次数
P(S|W):表示已知像素点标签W,求该像素点灰度值为S的概率。由上述可知,每次迭代前就已经有一个上一代的类别标签了,举个例子:假设已知上一次迭代中像素点S的标签为A类,那么我们就将上一代A类的所有点都挑出来,假设每个点都是独立的,并且认为每一类里面的所有点服从高斯分布(正态分布),那么在每一类里面我们就可以根据这一类里面的这些点建立一个属于这一类的高斯密度函数了 (意思就是说,每一种类别的背后,其像素点灰度值肯定会集中某一个范围里面,就是会有一些相似的特性) ,然后来一个像素点值,把它带到这类里面密度函数中去就可以得到这个概率了。同理对于2,3,4类,每一类都可以建立一个高斯密度函数,这样就有四个高斯密度函数了,那么每一个点属于这四类的概率就可以分别带到这四个高斯密度函数中计算了。高斯密度函数一般形式为:
所以对应的,最后也是会有4个类别的概率。
以上就可以求出P(W)和P(S|W),因为是看最大,跟具体取值无关,所以可以忽略P(S),直接取对数相加就行了。
阈值方法
基本思想就是找到一个阈值,大于这个阈值为255,小于这个阈值为0。
双峰直方图
假设图像中有明显的目标和背景,则其灰度直方图呈双峰分布,当灰度级直方图具有双峰特性时,选取两峰之间的谷对应的灰度级作为阈值。如果背景的灰度值在整个图像中可以合理地看作为恒定,而且所有物体与背景都具有几乎相同的对比度,那么,选择一个正确的、固定的全局阈值会有较好的效果.算法实现:找到第一个峰值和第二个峰值,再找到第一和第二个峰值之间的谷值,谷值就是那个阀值了。
迭代阈值分割
迭代法求取阈值进行图像分割:图像分割后的两部分A和B的均值和基本保持稳定。也就是说,随着迭代的进行,取 [mean(A)+mean(B)]/2 最终的收敛值作为分割阈值。其具体方法如下:
(1)选取一个初始阈值T;
(2)利用阈值T把给定图像分割成两组图像,记为R1和R2;
(3)计算R1和R2均值μ1和μ2;
(4)选择新的阈值T,且T=(μ1+μ2)/2;
(5)重复第(2)至(4)布,直到连续两次T的差值小于一个预设值为止。
大津法
假设存在最佳阈值T,将图像分割为C1和C2。
这两类像素的均值为M1和M2,整幅图像的均值为MG。
C1类像素占了整张图像像素数量比例为N1,C2类像素占了整张图像像素数量比例为N2。
计算类间方差公式:σ=N1(M1-MG)2+N2(M2-MG)2
类间方差也就是目标与背景之间方差,差别越大,说明两者分类越正确,差别越小,则说明阈值选得不对,使他们混淆了。具体就是假设最佳阈值T从0遍历到255,然后找到σ最大对应的灰度值作为阈值即可。