基于模糊集图像分割的图像美颜

概览

  • 基于模糊集二值分割
    • 对比ostu等其他方法
  • 模糊集图像聚类-FCM
    • 对比KMeans聚类
  • 结合模糊集图像分割的
  • 总结

模糊集二值分割

  这是篇很古老的论文中的算法,发表与1994年,是清华大学黄良凯(Liang-kai Huang) 所写,因此国外一些论文里和代码里称之为Huang's fuzzy thresholding method。虽然古老也很简单,但是其算法的原理还是值得学习的。

     该论文的原文可从此处下载: Image thresholding by minimizing the measure of fuzziness

     该论文结合了当时处于研究热潮的模糊集理论,提出了一种具有较好效果的图像二值化算法,本文主要是对其进行简单的翻译和注释,并提供了测试代码。

模糊集及其隶属度函数

     首先,我们假定X代表一副大小为M×N的具有L个色阶的灰度图像,而xmn代表图像X中点(m,n)处的像素灰度值,定义μx(xmn)表示该点具有某种属性的隶属度值,也就是说我们定义了一个从图像X映射到[0,1]区间的模糊子集,用专业的模糊集表达,即有:

                                       

       其中0≤μx(xmn)≤1,m=0,1,...M-1,n=0,1,...N-1。对于二值化来说,每个像素对于其所属的类别(前景或背景)都应该有很相近的关系,因此,我们可以这种关系来表示μx(xmn)的值。

       定义h(g)表示图像中具有灰度级g的像素的个数,对于一个给定的阈值t,背景和前景各自色阶值的平均值μ0和μ1可用下式表示:

                                

                                         

      上述μ0和μ1,可以看成是指定阈值t所对应的前景和背景的目标值,而图像X中某一点和其所述的区域之间的关系,在直觉上应该和该点的色阶值与所属区域的目标值之间的差异相关。因此,对于点(m,n),我们提出如下的隶属度定义函数:

         

扫描二维码关注公众号,回复: 11177529 查看本文章

  其中C是一个常数,该常数使得0.5≤μx(xmn)≤1。因此,对于一个给定的阈值t,图像中任何一个像素要么属于背景,要么属于前景,因此,每个像素的隶属度不应小于0.5。

     C值在实际的编程中,可以用图像的最大灰度值减去最小灰度值来表达,即 C=gmax-gmin;

模糊度的度量及取阈值的原则

     模糊度表示了一个模糊集的模糊程度,有好几种度量方式已经被提及了,本文仅仅使用了香农熵函数来度量模糊度。

     基于香农熵函数,一个模糊集A的熵定义为:

      

      其中香农函数:

     

      扩展到2维的图像,图像X的熵可以表达为:

    

  因为灰度图像至多只有L个色阶,因此使用直方图式(7)可进一步写成:

        

    可以证明式(6)在区间[0,0.5]之间是单调递增而在[0.5,1]之间是单调递减的,并且E(X)具有以下属性:

     (1)0≤E(X)≤1 ;

      (2)如果μx(xmn)=0或者μx(xmn)=1时,E(X)具有最小值0,在本文中μx(xmn)只可能为1,此时分类具有最好的明确性。

     (3)当μx(xmn)=0.5,E(X)获得最大值1,此时的分类具有最大的不明确性。

     那么对于图像X,我们确定最好的阈值t的原则就是:对于所有的可能的阈值t,取香农熵值最小时的那个t为最终的分割阈值。

编程中的技巧

     有了上述原理,其实编程也是件很容易的事情了,你可以按照你的想法去做,不过作者论文中的阐述会让代码写起来更清晰、更有效。

     首先,为了表达方便,我们定义如下一些表达式:

       

     根据上述表达式,可以知道S(L-1)及W(L-1)对于一副图像来说是个常量,其中S(L-1)明显就是像素的总个数。

  我们的算法步骤如下:

     (1)、计算S(L-1)、W(L-1),设置初始阈值t=gmin,令S(t-1)=0、W(t-1)=0;

      (2)、 计算下面算式:

               

      稍微有点数学基础的人都应该能看懂上述算式的推导原理。

        根据式(2)和式(3),可以知道背景和前景的区域的平均灰度值为:

         

   上式中int表示取整操作。

       (3)根据式(4)及式(11)计算图像的模糊度;

       (4)令t=t+1,然后重新执行步骤2,直到t=gmax-1;

        (5)找到整个过程中的最小模糊度值对应的阈值t,并作为最佳的分割阈值。

     为了稍微加快点速度,上述式4中的计算可以在步骤1中用一查找表实现。

与其他二值化方法的对比

OSTU

FuzzyThreshold

模糊集聚类图像分割

       最近在研究模糊聚类在图像处理中的应用,其中需要验证一种基于直觉模糊集的直觉模糊C均值聚类(IFCM)算法。直觉模糊决策是一种模糊信息的概念,把只考虑隶属度的经典模糊C均值聚类(FCM)推广为同时考虑真隶属度、假隶属度和犹豫度这三方面信息的直觉模糊集,同时引入一个新的参数即直觉模糊熵。相比经典模糊C均值聚类,使用直觉模糊集定义的模糊聚类可以收敛到一个更理想的聚类中心。模糊聚类广泛应用在控制、模式识别、信号处理、人工智能、决策等领域。本文使用FCM和IFCM算法进行图像分割,用于区分脑CT图像中的不同区域并识别大脑中的异常。


1.模糊理论的介绍


       在日常生活中,有许多事物或多或少都具有模糊性,模糊虽难以捉摸,但却非常重要。模糊理论强调以模糊逻辑来描述现实生活中的事物,以弥补二值逻辑无法对不明确定义边界事物描述的缺点。人类的自然语言在表达上具有很大的模糊性,难以用二值逻辑来完全描述现实生活中的事物。故模糊理论将模糊概念以模糊集合的定义,将事件属于某集合程度的隶属函数加以模糊量化,得到隶属度,来处理问题。

       模糊聚类就是用模糊数学的方法,把样本之间的模糊关系定量,从而客观准确地进行聚类,使得各个类之间的数据差别应尽可能大,类内之间的数据差别应尽可能小,即最小化类间的相似性,最大化类内的相似性。而模糊C均值就是一种应用最广泛且较成功的模糊聚类方法。它通过优化目标函数得到每个样本点对所有类中心的隶属度,从而决定样本点的类属以达到对样本进行分类的目的。


模糊理论的应用



       1965年,Zadeh教授提出了著名的模糊集理论,创建了一个新的学科——模糊数学,主要包括模糊集合理论、模糊逻辑、模糊推理和模糊控制等方面的内容。其中模糊集合理论是对传统集合理论的一种推广,能较好的描述人类视觉中的模糊性,在模式识别的各个层次都可使用模糊集合理论。模糊理论主要解决在模式识别的不同层次出于信息不全面、不准确、含糊、矛盾等造成的不确定性问题。

2.1 模糊聚类理论

       基于模糊集合的特点,模糊聚类方法应运而生。聚类,就是将一组给定的未知类标号的样本分成内在的多个类别,使得同一类中的样本具有较高的相似度,而不同的类中样本差别大。聚类分析的目的是揭示和刻画数据的内在结构,其内容涉及统计学、生物学、以及机器学习等研究领域,并在模式识别、数据分析和挖掘、图像处理等领域获得了广泛的应用。

       1973年,J.C. Bezdek提出了里程碑式的模糊C均值聚类算法(FCM)[1],通过引入样本到聚类中心的隶属度,使准则函数不仅可微,且软化了模式的归属。

       在众多模糊聚类算法中,FCM算法应用最广泛且较成功,它通过优化目标函数得到每个样本点对所有类中心的隶属度,从而决定样本点的类属以达到自动对样本数据进行分类的目的。

2.1.1 FCM算法原理


       根据聚类的数目C和一组包含n个L维向量的数据xk,用FCM算法输出元素的隶属度uij,它代表着数据xj是属于第i个类的概率,可以通过求下面式子(1)目标函数的最小值得到,通常取m=2。

       其中,式(1)的约束条件为:

       在(1)式的约束条件下,可以求得(1)中目标函数取最小值时相应的隶属度矩阵和聚类中心。通常,该最小值用极小值代替,因此分别对各变量求偏导,并令偏导数为0,联立并解出更新后的模糊隶属度和聚类中心,如下公式(2)(3)。

2.1.2 FCM算法流程


       根据FCM的基本原理,总结出该算法的步骤如下:

       1)  设置目标函数的精度e,模糊指数m(m通常取2)和算法最大迭代次数;

       2)  初始化隶属度矩阵或聚类中心

       3)  由式(2)(3)更新模糊划分矩阵和聚类中心

       4)  若目标函数则迭代结束;否则,跳转执行第三步;

       5)  根据所得到的隶属度矩阵,取样本隶属度最大值所对应类作为样本聚类的结果,聚类结束。

       图1给出FCM的算法流程图。

2.1.3 FCM算法的优劣


       FCM算法优越于传统硬C均值聚类算法在于隶属度可以连续取值于 [0,1]区间,考虑到了样本属于各个类的“亦此亦彼”性,能够对类与类之间样本有重叠的数据集进行分类,具有良好的收敛性;而且FCM算法复杂度低,易于实现。然而,FCM也存在着不足之处,如目标函数在迭代过程中容易陷入局部最小、函数收敛速度慢、对初始值、噪声比较敏感等问题。下面从分析模糊C均值聚类划分矩阵的隶属度的含义、划分趋势出发,讨论一种可以改善FCM性能的算法——IFCM算法。在此之前需要引入新的概念,即直觉模糊集。

Fuzzy

KMeans

基于模糊集的图像美颜

  1. 人脸定位
  2. 器官部位划分
  3. 应用模糊集图像分割
  4. 对相应的部位处理
  5. 最终图像

参考文献

  这是篇很古老的论文中的算法,发表与1994年,是清华大学黄良凯(Liang-kai Huang) 所写,因此国外一些论文里和代码里称之为Huang's fuzzy thresholding method。虽然古老也很简单,但是其算法的原理还是值得学习的。

     该论文的原文可从此处下载: Image thresholding by minimizing the measure of fuzziness

     该论文结合了当时处于研究热潮的模糊集理论,提出了一种具有较好效果的图像二值化算法,本文主要是对其进行简单的翻译和注释,并提供了测试代码。

模糊集及其隶属度函数

     首先,我们假定X代表一副大小为M×N的具有L个色阶的灰度图像,而xmn代表图像X中点(m,n)处的像素灰度值,定义μx(xmn)表示该点具有某种属性的隶属度值,也就是说我们定义了一个从图像X映射到[0,1]区间的模糊子集,用专业的模糊集表达,即有:

                                       

       其中0≤μx(xmn)≤1,m=0,1,...M-1,n=0,1,...N-1。对于二值化来说,每个像素对于其所属的类别(前景或背景)都应该有很相近的关系,因此,我们可以这种关系来表示μx(xmn)的值。

       定义h(g)表示图像中具有灰度级g的像素的个数,对于一个给定的阈值t,背景和前景各自色阶值的平均值μ0和μ1可用下式表示:

                                

                                         

      上述μ0和μ1,可以看成是指定阈值t所对应的前景和背景的目标值,而图像X中某一点和其所述的区域之间的关系,在直觉上应该和该点的色阶值与所属区域的目标值之间的差异相关。因此,对于点(m,n),我们提出如下的隶属度定义函数:

         

  其中C是一个常数,该常数使得0.5≤μx(xmn)≤1。因此,对于一个给定的阈值t,图像中任何一个像素要么属于背景,要么属于前景,因此,每个像素的隶属度不应小于0.5。

     C值在实际的编程中,可以用图像的最大灰度值减去最小灰度值来表达,即 C=gmax-gmin;

模糊度的度量及取阈值的原则

     模糊度表示了一个模糊集的模糊程度,有好几种度量方式已经被提及了,本文仅仅使用了香农熵函数来度量模糊度。

     基于香农熵函数,一个模糊集A的熵定义为:

      

      其中香农函数:

     

      扩展到2维的图像,图像X的熵可以表达为:

    

  因为灰度图像至多只有L个色阶,因此使用直方图式(7)可进一步写成:

        

    可以证明式(6)在区间[0,0.5]之间是单调递增而在[0.5,1]之间是单调递减的,并且E(X)具有以下属性:

     (1)0≤E(X)≤1 ;

      (2)如果μx(xmn)=0或者μx(xmn)=1时,E(X)具有最小值0,在本文中μx(xmn)只可能为1,此时分类具有最好的明确性。

     (3)当μx(xmn)=0.5,E(X)获得最大值1,此时的分类具有最大的不明确性。

     那么对于图像X,我们确定最好的阈值t的原则就是:对于所有的可能的阈值t,取香农熵值最小时的那个t为最终的分割阈值。

编程中的技巧

     有了上述原理,其实编程也是件很容易的事情了,你可以按照你的想法去做,不过作者论文中的阐述会让代码写起来更清晰、更有效。

     首先,为了表达方便,我们定义如下一些表达式:

       

     根据上述表达式,可以知道S(L-1)及W(L-1)对于一副图像来说是个常量,其中S(L-1)明显就是像素的总个数。

  我们的算法步骤如下:

     (1)、计算S(L-1)、W(L-1),设置初始阈值t=gmin,令S(t-1)=0、W(t-1)=0;

      (2)、 计算下面算式:

               

      稍微有点数学基础的人都应该能看懂上述算式的推导原理。

        根据式(2)和式(3),可以知道背景和前景的区域的平均灰度值为:

         

   上式中int表示取整操作。

       (3)根据式(4)及式(11)计算图像的模糊度;

       (4)令t=t+1,然后重新执行步骤2,直到t=gmax-1;

        (5)找到整个过程中的最小模糊度值对应的阈值t,并作为最佳的分割阈值。

     为了稍微加快点速度,上述式4中的计算可以在步骤1中用一查找表实现。

猜你喜欢

转载自www.cnblogs.com/hichens/p/12824781.html