编程语言
首页 > 编程语言> > 【图像分割】基于粒子群优化模糊聚类算法实现图像分割matlab代码

【图像分割】基于粒子群优化模糊聚类算法实现图像分割matlab代码

作者:互联网

1 简介

基于粒子群优化的改进模糊聚类图像分割算法将微粒群搜索聚类中心作为图像分割的聚类初值,克服了FCM分割算法对聚类中心初值敏感的缺点,大幅提高了图像分割算法的计算速度。改进的模糊聚类图像分割算法,一方面考虑到像素的空间位置信息和相互邻域之间像素有很大的相关性,在目标函数中引入邻域惩罚函数;另一方面提出聚类在二维方向上进行更新的思想,建立了包含邻域单元熵的新聚类目标函数。实验结果表明,该方法可以使模糊聚类的速度得到明显提高,对初始聚类中心不敏感,抗噪能力强,是一种有效的模糊聚类图像分割方法。

2 部分代码

%pso-fcm。
tic;
close all;
clear;
clc;
pic=imread('2.png'); 
[a,b,k]=size(pic);
t=a*b;
data=reshape(double(pic),t,k);
Maxiter=4;%设定最大迭代次数
n=100;
c1=0.4;
c2=0.4;%设定个体经验系数和群体经验系数
w=0.3;%设定惯性系数
vmax=1.5;%设定最大速度
cmax=4;%设定最大粒子(聚类中心)数目
e=1e+4;%设定阈值
ref=2;%设定fcm的系数
result=zeros(cmax-1,1);
u=cell(cmax,n);
vit=cell(cmax,n);
particle=cell(cmax,n);
dist=cell(cmax,n);
obj=zeros(cmax,n);
pbest=cell(cmax,1);

   count=0;
   for j = 1:bestc
       if bestparticle(j,1)>bestparticle(i,1)
           count=count+1;
       end
   end
   
   temp(cluster{i},:) = 255*(bestc-1-count)/(bestc-1);
   data(1:t,1:3)= temp;
   %cluster_pic{i} = temp;
   %temp(cluster{i},:) = bestparticle(i,1);
   %cluster_pic{i}= (cluster_pic{i}+temp)/2;
   %pic{i} = reshape(cluster_pic{i},a,b,k);
   pic{i}=reshape(data(1:t,1:3),a,b,k);
   result_pic{i}=uint8(pic{i});
   figure;
        imshow(uint8(pic{i}));

end
toc;   
           

3 仿真结果

4 参考文献

[1]刘欢, and 肖根福. "基于粒子群的改进模糊聚类图像分割算法." 计算机工程与应用 49.13(2013):152-155.

部分理论引用网络文献,若有侵权联系博主删除。

图片

标签:分割,图像,pic,cluster,matlab,聚类,cmax
来源: https://blog.csdn.net/qq_59747472/article/details/121889329