- 1
- 0
- 约3.21千字
- 约 6页
- 2018-10-26 发布于山东
- 举报
多媒体实验1报告.doc
多媒体实验1报告
一、实验目的
通过模糊c-均值(FCM)聚类实现图像的分割。
二、算法概要
FCM聚类算法目标函数为:
(1-1)
如果表示每一个样本的维数,是一个矩阵;表示样本数目,通常表示图像像素数;表示聚类数目;是矢量隶属于第类的隶属度函数,满足且;聚类中心是矩阵,和更新等式分别为:
(1-2)
对于每一个模糊隶属度,由控制模糊度的权重指数;为相似性测度。
三、变量说明
数据样本维数(灰度图像时为1);
像素点数目;
像素特征(灰度图像时,表示灰度值);
图像分割类别数;
像素点属于第类的隶属度;
第类聚类中心。
四、算法步骤
Step1:设置目标函数精度,模糊指数(通常取2),最大迭代次数;
Step2:初始化模糊聚类中心;
Step3:由式(1-2)更新模糊划分矩阵和聚类中心
Step4:若或则结束聚类;否则,并转Step3;
Step5:由所得得到各像素点分类结果。
五、实验代码
%function[IX2]=fcm(IM);
%IM是输入的原图象
%IX2是分类结果
clear
close all;
IM2=imread(Winter.jpg);
IM=rgb2gray(IM2);
[maxX,maxY]=size(IM);
figure(3);
imshow(IM);
IMM=cat(4,IM,IM,IM,IM);
%初始化聚类中心(3类)
cc1=8;
cc2=100;
cc3=200;
cc4=150;
ttFcm=0;
while(ttFcm15)
ttFcm=ttFcm+1;
c1=repmat(cc1,maxX,maxY);
c2=repmat(cc2,maxX,maxY);
c3=repmat(cc3,maxX,maxY);
c4=repmat(cc4,maxX,maxY);
c=cat(4,c1,c2,c3,c4);
ree=repmat(0.000001,maxX,maxY);
ree1=cat(4,ree,ree,ree,ree);
distance=double(IMM)-c;
distance=distance.*distance+ree1;
daoShu=1./distance;
daoShu2=daoShu(:,:,1)+daoShu(:,:,2)+daoShu(:,:,3)+daoShu(:,:,4);
%计算隶属度u
distance1=distance(:,:,1).*daoShu2;
u1=1./distance1;
distance2=distance(:,:,2).*daoShu2;
u2=1./distance2;
distance3=distance(:,:,3).*daoShu2;
u3=1./distance3;
distance4=distance(:,:,4).*daoShu2;
u4=1./distance4;
%计算聚类中心z
ccc1=sum(sum(u1.*u1.*double(IM)))/sum(sum(u1.*u1));
ccc2=sum(sum(u2.*u2.*double(IM)))/sum(sum(u2.*u2));
ccc3=sum(sum(u3.*u3.*double(IM)))/sum(sum(u3.*u3));
ccc4=sum(sum(u4.*u4.*double(IM)))/sum(sum(u4.*u4));
tmpMatrix=[abs(cc1-ccc1)/cc1,abs(cc2-ccc2)/cc2,abs(cc3-ccc3)/cc3,abs(cc4-ccc4)/cc4];
pp=cat(4,u1,u2,u3,u4);
for i=1:maxX
for j=1:maxY
if max(pp(i,j,:))==u1(i,j)
IX2(i,j)=1;
elseif max(pp(i,j,:))==u2(i,j)
IX2(i,j)=2;
elseif max(pp(i,j,:))==u3(i,j)
IX2(i,j)=3;
else
原创力文档

文档评论(0)