基于局部信息影响的模糊C均值聚类(FLICM)

A Robust Fuzzy Local Information C-Means Clustering Algorithm -Stelios Krinidis and Vassilios Chatzis

FLICM提出的目的

传统的FCM算法在大多数无噪声图像上的效果比较好,但是它对噪声和其它成像的伪影十分敏感,因为FCM虽然考虑到每个像素点对于聚类中心的隶属度,但是它没有考虑到有关于空间上下文的信息。为了弥补传统FCM中的这个缺点,现有研究提出了预处理图像的平滑步骤。然而通过平滑滤波器进行图像平滑,可能会导致重要的图像细节丢失,尤其是边界信息或是边缘信息。此外,并没有好的办法去控制平滑和聚类之间的权衡关系。

对于图像来说,如果平滑得效果好,那么可能会丢失图像信息,聚类分割可能就无法得到想要的簇类。

如果平滑效果不好,图像中信息丢失的少,但是因为噪声的影响,聚类所得的簇类中可能会包含更多的噪声信息,依然会使得聚类的效果不好。

因此,提出将图像的局部空间信息纳入原始的FCM算法,以提高图像分割的性能。

传统的FCM算法对于灰度图像的聚类分割在本质上还是在灰度轴上进行划分。不过传统的FCM算法是选择聚类中心判断每一个像素点的隶属度,通过隶属度影响聚类中心的选择,通过目标函数限制找到收敛时的聚类中心,将像素点归属为其隶属度最高的聚类中心,以形成聚类结果。

通过加入局部空间信息的FCM改进方法,其实就是说对于原有的在灰度轴上进行的判断并不能将一些像素点的特性展示出来,所以需要引入一个新的维度,在这个维度上,一部分像素点有什么样的特征,那么根据这个特征就可以将一部分想要的像素点提取出来。比如上文所说的去除噪声影响。对于全局的噪声影响可以理解为它是随机分布在图像的各个位置,不过噪声点总是少数的,在聚类过程中也不希望这些噪声点成为一个单独的簇类,这回影响图像分割的效果,那么就通过局部信息来降低对噪声点的注意力。通过局部信息考虑像素点的隶属度,也就是说正常像素点周围的噪声点,噪声点少,所以综合来看还是进行常规的聚类。对于噪声点来说,因为噪声点的周围是正常的像素点,因为周围点的影响所以噪声点是跟着周围的像素点进行聚类的。

对于另一个维度的引入,它可以是某一种像素点的特征,也可以是某种影响注意力的方法。

对于已有的FCM聚类的增强算法,包括FCM_S,EnFCM,FGFCM,进行了分析,算法的鲁棒性考虑就是说算法对于通用场景的问题。

  1. 虽然局部空间信息的引入一定程度上增强了他们对噪声的不敏感性,但是它们对噪声和异常值仍然缺乏足够的鲁棒性。
  2. 上述的算法中都有一个重要参数用于在对噪声的鲁棒性与图像细节的有效性之间的平衡,通常情况下这个参数都需要通过经验或者是反复的试验进行确定。
  3. 上述的算法都是在静态的图像中进行应用,必须事先进行计算。原始图像的细节丢失与否取决于生成新图像的方法。

为了克服上述的几个问题,对于在FCM目标函数中加入的一个新因子,这个新的因子应该有如下几种特性:

  1. 以模糊的方式结合局部空间信息与局部灰度信息,以保证算法的鲁棒性与对噪声的不敏感性。
  2. 根据与中心像素点的距离控制邻域像素点的影响大小。
  3. 使用原始图像以避免可能导致细节丢失的预处理步骤。
  4. 免于任何参数的选择。

FLICM的核心定义-模糊因子​G_{ki}

新的模糊因子​G_{ki}定义为:

G_{ki} = \sum_{j\in N_i;i\ne j}\frac{1}{d_{ij}+1}(1-u_{kj})^m||x_j-v_k||^2

其中第​i个像素点是局部窗口的中心,可以称之为中心像素点,对于图像中的每一个像素点都可以是中心像素点。

​k是参照簇类,对于图像中的每一个像素点,其对于每一个簇类都有一个隶属度。

​u_{ki}表示的是第​i个像素点对第​k个簇类的隶属度。

​u_{kj}表示的是第​j个像素点对第​k个簇类的隶属度。

​v_k表示第​k个簇类的簇类中心点。

​m表示模糊加权指数。

​d_{i,j}表示像素点​x_i​x_j的欧式距离。

​N_i表示像素点​x_i为中心点的窗口内其它像素点的集合。

对于模糊因子来说,对于图像中每一个像素点都有一个模糊因子。

其中​x_j​x_i所规定窗口内的紧邻像素点。

此处需要注意的是对于“邻域”的使用,因为在本算法中不一定是8邻域内像素点进行影响,如果规定​5\times 5范围内的像素点,那么就不能使用邻域,而是在一个窗口内的像素点。

引申:算法中默认的是​3\times 3的窗口也就是8邻域的影响。在实际的使用场景中,效果最好的不一定是8邻域,根据其特点也可以规定不规则的窗口大小以对像素点进行影响。比如根据一些特征点的信息进行窗口大小的确定。这个窗口的确定包含了对于实际使用图像的语义信息。

因为模糊因子​G_{ki}的计算中没有任何用于控制图像中噪声与图像细节信息平衡的参数。这种平衡的控制是通过定义每个图像像素在空间上与灰度级上的模糊性自动实现的。此外,通过使用​d_{i,j},模糊因子​G_{ki}使得局部窗口内的像素点的影响通过他们与中心像素点之间的欧式距离进行变化,这样可以使得模糊因子使用了更多的局部空间信息

FLICM的总体框架

将局部的空间与灰度信息整合到目标函数中:

原FCM的目标函数:

J = \sum_{i=1}^{N}\sum_{j=1}^{c}u_{ki}^{m}\parallel x_i-v_k\parallel^2

整合后的目标函数:

J_m = \sum_{i=1}^{N}\sum_{k=1}^{c}[u_{ki}^{m}\parallel x_i-v_k\parallel^2+G_{ki}]

通过​u_{ki}​v_k使得目标函数处于局部极小值:

原FCM中的隶属度计算方法:

u_{ki} = \frac{1}{\sum_{j=1}^{c}(\frac{\parallel x_i-v_k\parallel^2}{\parallel x_i-v_j\parallel^2})^{\frac{1}{m-1}}}

更新后的FLICM中隶属度的计算方法:

u_{ki} = \frac{1}{\sum_{j=1}^{c}(\frac{||x_i-v_k||^2+G_{ki}}{||x_i-v_j||^2+G_{ji}})^{\frac{1}{m-1}}}

原FCM中簇类中心点的计算方法:

v_k = \frac{\sum_{i=1}^{N}u_{ki}^{m}\cdot x_i}{\sum_{i=1}^{N}u_{ki}^{m}}

更新后FLICM中簇类中心点的计算方法:

v_k = \frac{\sum_{i=1}^{N}u_{ki}^{m}\cdot x_i}{\sum_{i=1}^{N}u_{ki}^{m}}

​x_i表示图像中的第​i个像素点。

​x_j表示图像中的第​i个像素点在规定的窗口中的第​j个紧邻像素点。

​v_k表示聚类过程中的第​k个聚类中心点。

​G_{ki}表示第​i个像素点对第​k类的隶属度的影响因子。

​u_{ki}表示第​i个像素点对第​k类的隶属度。

​m表示在聚类算法初始设置的模糊加权指数。

​N表示图像中的像素点数量也就是​i的最大值。

​c表示聚类算法初始设置的聚类数量,与k-means的K值意义相同。同时也是​k的最大值。

因此FLICM算法给出的步骤如下;

  1. 设置聚类数量​c,模糊加权指数​m,与迭代停止条件目标函数变化阈值​\varepsilon
  2. 随机初始化初始隶属度矩阵。
  3. 设置迭代计数器,并初始化​b=0
  4. 通过上述公式(7)计算初始的聚类中心。
  5. 通过上述公式(5)计算每个像素点对于聚类中心的隶属度。
  6. 判断​\max{\{U^{(b)}-U^{(b+1)}\}}<\varepsilon满足时,停止迭代;否则使​b=b+1并转至步骤4

当算法收敛时,进行去模糊化的过程,以便将模糊的隶属度分类转换为清晰的分类。通过最大隶属度进行簇类划分是目前最重要的划分方法。将像素点划分给其具有最大隶属度的簇类。

对于噪声容纳与对异常值抵抗的特性完全依赖于模糊影响因子​G_{ki}的定义。本算法中模糊影像因子​G_{ki}是自动确定的,即使在没有任何先验噪声知识的情况下也是如此。