使用FCM聚类算法进行图像分割

FCM进行图像分割的评价指数

  • 使用FCM聚类算法进行图像分割
    • Bezdek划分系数
    • Xie_Beni系数
    • 重构错误率V_RE
    • PBM指标
    • 代码[^2]
    • 参考资料

使用FCM聚类算法进行图像分割

使用无监督算法进行图像分割,往往这类图像没有真实值,没办法用有监督的指标进行评价;这里介绍三种内部评价指标:Bezdek划分系数、Xie_Beni系数、重构错误率V_RE和PBM指标

Bezdek划分系数

V P C V_{PC} VPCBezdek划分系数,它主要目的是重新刻画分割后的像素的隶属度,定义如下:
V P C = 1 n ∑ i = 1 c ∑ j = 1 n u i j 2 V_{P C}=\frac{1}{n}\sum_{i=1}^{c} \sum_{j=1}^{n} u_{i j}^{2} VPC=n1i=1cj=1nuij2

即所有元素隶属于各个分类隶属度的平方和,对图像进行分割时,性能较优的聚类算法是使图像中
像素归属于某一类的隶属度尽可能地大,反之属于其他聚类的隶属度尽可能的小, V P C V_{PC} VPC 的值越大,表明聚类的效果越好1

Xie_Beni系数

V X B V_{XB} VXBXie-Beni系数,其定义为:
V X B = ∑ i = 1 c ∑ j = 1 n u i j 2 ∥ x j − v i ∥ 2 n ( min ⁡ j ≠ k ∥ v j − v k ∥ 2 ) V_{\mathrm{XB}}=\frac{\sum_{i=1}^{c} \sum_{j=1}^{n} u_{i j}^{2}\left\|x_{j}-v_{i}\right\|^{2}}{n\left(\min _{j \neq k}\left\|v_{j}-v_{k}\right\|^{2}\right)} VXB=n(minj=kvjvk2)i=1cj=1nuij2xjvi2

该系数反映了图像聚类内部的一种距离度量,在进行图像分割时,期望聚类内部的像素更加紧密, V X B V_{XB} VXB 越小,则说明聚类的效果越好

重构错误率V_RE

V R E V_{RE} VRE是图像的重构错误率,其定义如下:

V R E = 1 n ∑ i = 1 n ∥ I ′ ( i ) − I ( i ) ∥ 2 V_{RE}=\frac{1}{n} \sum_{i=1}^{n}\left\|I^{\prime}(i)-I(i)\right\|^{2} VRE=n1i=1nI(i)I(i)2

它是分析分割后的重构图像与初始图像间的差距, I ′ ( i ) I^{\prime}(i) I(i)为重构图像的第 i i i个像素的灰度值,定义为:
I ′ ( i ) = ∑ k = 1 c u k i 2 I ( i ) ∑ k = 1 c u k i 2 I^{\prime}(i)=\frac{\sum_{k=1}^{c} u_{k i}^{2} I(i)}{\sum_{k=1}^{c} u_{k i}^{2}} I(i)=k=1cuki2k=1cuki2I(i)

对图像进行分割后,新的隶属度和聚类中心对图像进行重构,重构后的图像应与原图像尽可能的相似,即表明 V R E V_{RE} VRE的值越小,算法的分割效果越好

PBM指标

PBM指标是一种聚类有效性指标,定义如下:
P B M = ( 1 K × E 1 E K × D K ) 2 P B M =\left(\frac{1}{K} \times \frac{E_{1}}{E_{K}} \times D_{K}\right)^{2} PBM=(K1×EKE1×DK)2

P B M PBM PBM由三部分组成,分别是 1 / K 1 / K 1/K E 1 / E k E_{1} / E_{k} E1/Ek D K D_{K} DK。第一项中 K K K是提前给定的图像分割类别数,第二项中 E 1 E_{1} E1对于一个给定的数据集,为一个常值。而 E k E_{k} Ek是待分类数据与个体中聚类中心的模糊距离之和, P B M PBM PBM值会随着 E k E_{k} Ek的减小而增大。第三项中 D K D_{K} DK是个体中的所有聚类中心对之间的最大距离。 P B M PBM PBM指标达到最大值,取得最优划分

代码2


function [Bezdek_V, Xie_Beni_V, V_RE, V_PBM] = Evaluation_index(I, U, V)

% Evaluation_index为聚类分割评价指数
% 输入: 原始待聚类数据I, 隶属度矩阵U, 聚类中心V 
% 输出: Bezdek划分系数, Xie_Beni系数, 重构错误率V_RE,V_PBM

%%
% 原始待聚类数据I,n代表样本数目,d代表每个样本的维数
[n,d] = size(I);

% 隶属度矩阵U,c代表聚类类别数目,n代表样本数目
[c,n] = size(U);

% 聚类中心V,c为聚类中心的数目,d代表每个样本的维数
[c,d] = size(V);

%% Bezdek划分系数
% 所有元素隶属于各个分类隶属度的平方和
Bezdek_V = sum(sum(U.^2)) / n ;

%% Xie_Beni系数、重构错误率V_RE
% Xie_Beni系数
Xie_Beni_V = 0;

% 初始化重构图像像素值
I_RE = zeros(n,d);

% XB指数分母项,最近类间距离
% 初始化最近的类间距离的平方为 前两个聚类中心的距离平方
% 欧氏距离:向量按元素求幂,再求和
min_V = sum((V(1,:)-V(2,:)).^2);

for i = 1:c
    for j = 1:c
        if(i-j ~= 0 && sum((V(i,:)-V(j,:)).^2) < min_V)
            % 排除自己和自己之间的距离0之后,遇到更小的类间距离 即 更新初始类间距离
            min_V = sum((V(i,:)-V(j,:)).^2);
        end
    end
end

%%
% 遍历样本
for i = 1:n
    
    % temp表示重构图像像素值的分子,temp1表示其分母
    temp = 0;
    temp1 = 0; 
    
    % 遍历类别
    for j = 1:c
        
        % XB指数的分子
        Xie_Beni_V = Xie_Beni_V + U(j,i)^2 * sum((I(i,:)- V(j,:)).^2);
        
        % 重构图像像素值的分子和分母
        temp = temp + U(j,i)^2*I(i,:);
        temp1 = temp1 + U(j,i)^2;
    end
    
    % 重构图像像素值
    I_RE(i,:) = temp / temp1;
end

% 最终的XB指数等于分子除以分母,n为样本数目,min_V为最小类间距离
Xie_Beni_V = Xie_Beni_V / (n * min_V);

% 重构错误率V_RE
V_RE = sum(sum((I_RE - I).^2)) / n;

%% PBM指标

% 计算最大类间距离
max_V = sqrt(sum((V(1,:)-V(2,:)).^2));

for i = 1:c
    for j = 1:c
        if(i-j ~= 0 && sqrt(sum((V(i,:)-V(j,:)).^2)) > max_V)
            % 排除自己和自己之间的距离0之后,遇到更大的类间距离 即 更新初始类间距离
            max_V = sqrt(sum((V(i,:)-V(j,:)).^2));
        end
    end
end

% 初始化Ek
Ek = 0;

for i = 1:n
    for j = 1:c
        Ek = Ek + U(j,i) * sqrt(sum((I(i,:)- V(j,:)).^2));  
    end 
end

% 初始化E1
E1 = 0;
for i = 1:n
    E1 = E1 + U(1,i) * sqrt(sum((I(i,:)- V(1,:)).^2));
end

% V_PBM
V_PBM = (E1 * max_V / (c * Ek))^2;

end




参考资料


  1. 王民, 李媛, 张立材. 基于纹理特征的盲道区域分割算法[J]. 信息通信, 2017(7). ↩︎

  2. FCM算法中评价指数matlab程序. ↩︎

你可能感兴趣的:(Matlab,聚类算法,机器学习)