参考文献 Chatzis S. P., Varvarigou T. A. A Fuzzy Clustering Approach Toward Hidden Markov Random Field Models for Enhanced Spatially Constrained Image Segmentation. IEEE Transactions on Fuzzy Systems 16(5) (2008) 1351-1361 该算法首次将隐Markov随机场模型引入FCM,达到了较好的分割效果。
1、隐Markov随机场模型
随机场是什么?打一个很简单的比喻:现在有一个农民,家里有几块地,开春了,要开始种庄稼,每一块地里种什么庄稼,都具有一个概率,所有位置的概率构成了随机场。 什么是Markov随机场?简单地说,就是某一块地种什么庄稼,只与这块地周围的地种什么庄稼有关,与更远的土地没有关系。
下面给出数学表达。对于图像分割,实际上就是给每个像素打标签,标签表明了每个像素被分进了哪个类别。假设想要将10个像素分成3个类,每个像素只能分进1类中。 令
Q
Q
Q 为标签集
Q
=
{
1
,
2
,
3
}
Q=\{1,2,3\}
Q = { 1 , 2 , 3 } 其中1表示第一个类,2表示第二个类,依次类推。 令S为索引集
S
=
{
1
,
2
,
.
.
.
,
10
}
S=\{1,2,...,10\}
S = { 1 , 2 , . . . , 1 0 } 其中1表示第一个像素,2表示第二个像素,依次类推。 则对于任意
j
∈
S
j\in S
j ∈ S ,有
x
j
∈
Q
x_j\in Q
x j ∈ Q ,
x
j
x_j
x j 为第
j
j
j 个像素所属的类别,可以为1,也可以为2,等等。 此时定义一个概率分布
p
(
x
j
)
>
0
p(x_j)>0
p ( x j ) > 0 表示第
j
j
j 个像素为某个类别的概率。该概率分布,就是随机场。 OK,现在讨论Markov随机场~ 前面说了,在Markov随机场中,某一个像素属于什么类别只与它周围像素属于什么类别有关系,那么显然,必须首先定义一个能够描述“周围”的方式,在数学上,这种方式为邻域。我们知道,每一个像素都拥有与其紧邻的像素(不考虑位于边缘的像素),即每一个像素都具有邻域。 令
∂
\partial
∂ 表示所有像素的邻域,即邻域系统。那么现在,就可以用数学语言来描述Markov随机场
p
(
x
j
)
=
p
(
x
j
∣
X
∂
j
)
p(x_j)=p(x_j|X_{\partial_j})
p ( x j ) = p ( x j ∣ X ∂ j ) 其中,
X
∂
j
X_{\partial_j}
X ∂ j 表示一个集合,包含第
j
j
j 个像素邻域中所有像素的类别。 然而,图像是二维的,从而,
j
j
j 实际上是一个二维坐标,所以接下来,为了更加详细地描述,需要使用联合概率分布。Hammersley–Clifford理论证明,Markov随机场与Gibbs随机场的联合概率分布是等价的,则Markov随机场的联合概率分布为
p
(
x
j
)
=
p
(
x
j
∣
X
∂
j
)
=
exp
(
−
U
(
x
j
)
)
Z
p(x_j)=p(x_j|X_{\partial_j})=\frac{\exp(-U(x_j))}{Z}
p ( x j ) = p ( x j ∣ X ∂ j ) = Z exp ( − U ( x j ) ) 其中,
Z
Z
Z 是一个使
p
(
x
j
)
p(x_j)
p ( x j ) 归一化的常数,
U
(
x
j
)
U(x_j)
U ( x j ) 叫做能量函数。
U
(
x
j
)
=
∑
C
V
C
(
x
j
)
U(x_j)=\sum_CV_C(x_j)
U ( x j ) = C ∑ V C ( x j ) 其中,
V
C
(
x
j
)
V_C(x_j)
V C ( x j ) 表示第
j
j
j 个像素邻域中某一个基团C的势能,OK,如何表示势能呢,只能说八仙过海,各显神通,目前提出了多种势能表示方法,OK,那么什么是基团,简单地说,就是邻域里面,一个、两个或三个相邻的像素可以拉帮结伙,构成一个个小集团,分别为一阶基团、二阶基团或三阶基团。 人们发现,在实际应用中,
Z
Z
Z 的计算量较大,需要一种近似计算方法减少计算量。1975年,J.Besag提出一种伪似然估计法,即
p
(
x
j
)
=
p
(
x
j
∣
X
∂
j
)
=
exp
(
−
∑
j
∈
C
V
C
(
x
j
)
)
∑
x
j
=
1
3
exp
(
−
∑
j
∈
C
V
C
(
x
j
)
)
p(x_j)=p(x_j|X_{\partial_j})=\frac{\exp(-\sum_{j\in C}V_C(x_j))}{\sum_{x_j=1}^3\exp(-\sum_{j\in C}V_C(x_j))}
p ( x j ) = p ( x j ∣ X ∂ j ) = ∑ x j = 1 3 exp ( − ∑ j ∈ C V C ( x j ) ) exp ( − ∑ j ∈ C V C ( x j ) ) 现在,Markov随机场已经被表示了出来。
然而,实际生活经验告诉我们,将所有像素一视同仁随便分类显然不科学,不同的像素需要根据其灰度值来进行分类,OK,现在引入另一个条件,像素灰度值。 令集合
R
R
R 表示所有灰度值,有
R
=
{
0
,
1
,
2
,
3
,
4
,
5
,
.
.
.
,
255
}
R=\{0,1,2,3,4,5,...,255\}
R = { 0 , 1 , 2 , 3 , 4 , 5 , . . . , 2 5 5 } 对于任意
j
∈
S
j\in S
j ∈ S ,有
y
j
∈
R
y_j\in R
y j ∈ R ,
y
j
y_j
y j 表示第
j
j
j 个像素的灰度。对于一张图像,每个像素的灰度,一定是事先就确定的。那么将灰度
y
j
y_j
y j 与像素类别
x
j
x_j
x j 放在一起,构成的联合概率分布
p
(
y
j
,
x
j
)
p(y_j,x_j)
p ( y j , x j ) ,就是隐Markov随机场。 接下来如何求解
p
(
y
j
,
x
j
)
p(y_j,x_j)
p ( y j , x j ) ,是得到隐Markov随机场的关键。 众所周知
p
(
y
j
,
x
j
)
=
p
(
y
j
∣
x
j
)
p
(
x
j
)
p(y_j,x_j)=p(y_j|x_j)p(x_j)
p ( y j , x j ) = p ( y j ∣ x j ) p ( x j ) 其中,
p
(
x
j
)
p(x_j)
p ( x j ) 已经可以表示,它就是Gibbs随机场的联合概率分布,叫做隐含场,
p
(
y
j
)
p(y_j)
p ( y j ) 叫做观测场。需要求解
p
(
y
j
∣
x
j
)
p(y_j|x_j)
p ( y j ∣ x j ) ,即已知第
j
j
j 个像素的类别,它的灰度是多少的概率。一般地,可以利用正态分布,描述
p
(
y
j
∣
x
j
)
p(y_j|x_j)
p ( y j ∣ x j ) ,因为正态分布有参数,所以引入
θ
\theta
θ 表示其所有参数,即
p
(
y
j
∣
x
j
)
=
p
(
y
j
∣
x
j
;
θ
x
j
)
=
N
x
j
(
μ
x
j
,
σ
x
j
)
p(y_j|x_j)=p(y_j|x_j;\theta_{x_j})=N_{x_j}(\mu_{x_j},\sigma_{x_j})
p ( y j ∣ x j ) = p ( y j ∣ x j ; θ x j ) = N x j ( μ x j , σ x j ) 其中,
μ
x
j
和
σ
x
j
\mu_{x_j}和\sigma_{x_j}
μ x j 和 σ x j 分别表示第
x
j
x_j
x j 类中所有像素灰度值的均值与方差,一定记住,
x
j
x_j
x j 表示的是类别标签。将
p
(
y
j
∣
x
j
)
p(y_j|x_j)
p ( y j ∣ x j ) 画成图像的话,则横坐标为灰度值,纵坐标为概率值,由于分3类,则有3条高斯概率密度曲线。 现在,隐Markov随机场也被表示完成。
OK,现在将隐Markov随机场引入FCM中
2、基于隐Markov随机场的FCM—HMRF-FCM
首先,该算法利用了Ichihashi等人提出的一种基于KL信息惩罚的FCM方法,目标函数如下
J
=
∑
i
=
1
3
∑
j
=
1
10
u
i
j
d
i
j
+
λ
∑
i
=
1
3
∑
j
=
1
10
u
i
j
ln
(
u
i
j
π
i
j
)
J=\sum_{i=1}^3\sum_{j=1}^{10}u_{ij}d_{ij}+\lambda\sum_{i=1}^3\sum_{j=1}^{10}u_{ij}\ln(\frac{u_{ij}}{\pi_{ij}})
J = i = 1 ∑ 3 j = 1 ∑ 1 0 u i j d i j + λ i = 1 ∑ 3 j = 1 ∑ 1 0 u i j ln ( π i j u i j ) 其中,
π
i
j
=
p
(
x
j
)
=
p
(
x
j
=
i
∣
X
∂
j
)
=
exp
(
−
∑
j
∈
C
V
C
(
a
i
j
)
)
∑
h
=
j
3
exp
(
−
∑
j
∈
C
V
C
(
a
h
j
)
)
\pi_{ij}=p(x_j)=p(x_j=i|X_{\partial_j})=\frac{\exp(-\sum_{j\in C}V_C(a_{ij}))}{\sum_{h=j}^3\exp(-\sum_{j\in C}V_C(a_{hj}))}
π i j = p ( x j ) = p ( x j = i ∣ X ∂ j ) = ∑ h = j 3 exp ( − ∑ j ∈ C V C ( a h j ) ) exp ( − ∑ j ∈ C V C ( a i j ) )
a
i
j
=
(
x
j
=
i
,
X
θ
j
)
a_{ij}=(x_j=i,X_{\theta_j})
a i j = ( x j = i , X θ j ) ,由于
X
θ
j
X_{\theta_j}
X θ j 是一个集合,在实际应用中,不容易直接使用,一般利用平均场估计方法得到
X
θ
j
X_{\theta_j}
X θ j 的估计,记为
x
θ
j
′
x'_{\theta_j}
x θ j ′ ,则
a
i
j
=
(
x
j
=
i
,
x
θ
j
′
)
a_{ij}=(x_j=i,x'_{\theta_j})
a i j = ( x j = i , x θ j ′ ) 本算法为简化操作,直接利用8邻域中的一阶基团像素标签表达能量函数
U
(
x
j
)
U(x_j)
U ( x j ) ,即
U
(
x
j
)
=
−
β
∑
j
=
1
10
∑
l
=
1
8
δ
(
x
j
−
x
l
)
U(x_j)=-\beta\sum_{j=1}^{10}\sum_{l=1}^8\delta(x_j-x_l)
U ( x j ) = − β j = 1 ∑ 1 0 l = 1 ∑ 8 δ ( x j − x l ) 其中,
x
l
x_l
x l 为
x
j
x_j
x j 的邻域
∂
j
\partial_j
∂ j 中的像素标签,则有
π
i
j
=
p
(
x
j
)
=
p
(
x
j
=
i
∣
X
∂
j
)
=
β
exp
(
−
∑
l
∈
∂
j
δ
(
i
−
x
l
)
)
∑
h
=
1
3
β
exp
(
−
∑
l
∈
∂
j
δ
(
h
−
x
l
)
)
\pi_{ij}=p(x_j)=p(x_j=i|X_{\partial_j})=\frac{\beta\exp(-\sum_{l\in \partial_j}\delta(i-x_l))}{\sum_{h=1}^3\beta\exp(-\sum_{l\in \partial_j}\delta(h-x_l))}
π i j = p ( x j ) = p ( x j = i ∣ X ∂ j ) = ∑ h = 1 3 β exp ( − ∑ l ∈ ∂ j δ ( h − x l ) ) β exp ( − ∑ l ∈ ∂ j δ ( i − x l ) ) 其中
δ
(
x
j
−
x
l
)
\delta(x_j-x_l)
δ ( x j − x l ) 为克罗内克函数,
δ
(
x
j
,
x
l
)
=
{
1
,
x
j
=
x
l
0
,
o
t
h
e
r
w
i
s
e
\delta(x_j,x_l)= \begin{cases} 1,x_j=x_l \\ 0, otherwise \end{cases}
δ ( x j , x l ) = { 1 , x j = x l 0 , o t h e r w i s e 通过拉格朗日乘子法,对
J
J
J 最小化,得到隶属度
r
i
j
r_{ij}
r i j 、聚类中心
μ
i
\mu_i
μ i 、方差
σ
i
\sigma_i
σ i 的更新公式
r
i
j
=
π
i
j
exp
(
−
1
λ
d
i
j
)
∑
h
=
1
3
π
i
j
exp
(
−
1
λ
d
i
j
)
,
d
i
j
=
w
2
ln
(
2
π
)
+
1
2
ln
(
∣
μ
i
∣
)
+
(
y
j
−
μ
i
)
2
2
μ
i
r_{ij}=\frac{\pi_{ij}\exp(-\frac{1}{\lambda}d_{ij})}{\sum_{h=1}^3\pi_{ij}\exp(-\frac{1}{\lambda}d_{ij})},d_{ij}=\frac{w}{2}\ln(2\pi)+\frac{1}{2}\ln(|\mu_i|)+\frac{(y_j-\mu_i)^2}{2\mu_i}
r i j = ∑ h = 1 3 π i j exp ( − λ 1 d i j ) π i j exp ( − λ 1 d i j ) , d i j = 2 w ln ( 2 π ) + 2 1 ln ( ∣ μ i ∣ ) + 2 μ i ( y j − μ i ) 2
μ
i
=
∑
j
=
1
10
r
i
j
y
j
∑
j
=
1
10
y
j
\mu_i=\frac{\sum_{j=1}^{10}r_{ij}y_j}{\sum_{j=1}^{10}y_j}
μ i = ∑ j = 1 1 0 y j ∑ j = 1 1 0 r i j y j
σ
i
=
∑
j
=
1
10
r
i
j
(
y
j
−
μ
i
)
2
∑
j
=
1
10
r
i
j
\sigma_i=\frac{\sum_{j=1}^{10}r_{ij}(y_j-\mu_i)^2}{\sum_{j=1}^{10}r_{ij}}
σ i = ∑ j = 1 1 0 r i j ∑ j = 1 1 0 r i j ( y j − μ i ) 2 算法步骤为: 1、随机初始化隶属度
r
i
j
r_{ij}
r i j 2、根据隶属度,得到所有像素的类别标签
x
j
=
arg max
i
{
r
i
j
}
x_j=\argmax_i\{r_{ij}\}
x j = i a r g m a x { r i j } 3、计算先验概率
π
i
j
\pi_{ij}
π i j 4、计算聚类中心
μ
i
\mu_i
μ i 和方差
σ
i
\sigma_i
σ i 4、计算隶属度
r
i
j
r_{ij}
r i j 5、若收敛,则输出
r
i
j
r_{ij}
r i j ,否则返回2 最终的分类标签为
x
j
=
arg max
i
{
r
i
j
}
x_j=\argmax_i\{r_{ij}\}
x j = i a r g m a x { r i j }