怎么利用模糊C均值聚类实现图像分割啊?具体代码?

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 18:52:32

怎么利用模糊C均值聚类实现图像分割啊?具体代码?
怎么利用模糊C均值聚类实现图像分割啊?具体代码?

怎么利用模糊C均值聚类实现图像分割啊?具体代码?
%%%%%%%%%%%%%%%模糊聚类%%%%%%%%%%%%%%%%%%%%%%%
clear;
load F:\从0开始\数据\data.txt;
INPUTDATA=data;
%--------原始数据标准化-------%
disp('请选择原始数据标准化方式: ');
disp('<1-总和标准化|2-标准差标准化|3-极大值标准化|4-极差标准化>');
wayforstand=input('请输入: ');
switch wayforstand
case 1,
DATAFORCLUS=standard_use_sum(INPUTDATA);
case 2,
DATAFORCLUS=standard_use_std(INPUTDATA);
case 3,
DATAFORCLUS=standard_use_max(INPUTDATA);
case 4,
DATAFORCLUS=standard_use_jc(INPUTDATA);
otherwise
error('您的输入不符合要求->执行结束!');
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%基于模糊等价关系的模糊聚类%%%%%%%%%%%%%%%%%%%%%%
%----------构造相似关系-----------%
numrows=size(DATAFORCLUS,1);
numcols=size(DATAFORCLUS,2);
disp('请选择对象之间相似性统计量的方式: ');
disp('<1-相关系数法|2-夹角余弦法|3-指数相似系数法|4-绝对值指数法|5-算术平均最小法|6-最大最小值法|7-绝对值差数法|8-数量积法>');
wayforr_ij=input('请输入: ');
switch wayforr_ij
case 1, %-----------------------------------相关系数法
for i=1:numrows,
for j=1:numrows,
meani=mean(DATAFORCLUS(i,:));meanj=mean(DATAFORCLUS(j,:));
simiR(i,j)=sum((DATAFORCLUS(i,:)-meani).*(DATAFORCLUS(j,:)-meanj))/...
(sqrt(sum((DATAFORCLUS(i,:)-meani).^2))*sqrt(sum((DATAFORCLUS(j,:)-meanj).^2)));
end
end
case 2, %-----------------------------------夹角余弦法
for i=1:numrows,
for j=1:numrows,
simiR(i,j)=sum(DATAFORCLUS(i,:).*DATAFORCLUS(j,:))/...
(sqrt(sum(DATAFORCLUS(i,:).*DATAFORCLUS(i,:)))*sqrt(sum(DATAFORCLUS(j,:).*DATAFORCLUS(j,:))));
end
end
case 3, %-----------------------------------指数相似系数法
case 4, %-----------------------------------绝对值指数法
case 5, %-----------------------------------算术平均最小法

case 6, %-----------------------------------最大最小值法

case 7, %-----------------------------------绝对值差数法

case 8, %-----------------------------------数量积法
otherwise
error('您的输入不符合要求->执行结束!');
end
%-------改造成等价关系----------%
sign=0;
numselfmul=1;
simiRk=eye(numrows);
equi_tem=simiR;
while sign==0,
for i=1:numrows,
for j=1:numrows,
for c=1:numrows,
rij_temp(c)=min([equi_tem(i,c) equi_tem(c,j)]);
end
simiRk(i,j)=max(rij_temp);
end
end
%--------------%
if sum(sum(simiRk-equi_tem,1))~=0,
numselfmul=numselfmul+1;
equi_tem=simiRk;
else
sign=1;
break
end
%--------------%
end
if sign==1,
disp('从相似矩阵到等价矩阵改造成功!');
else
disp('从相似矩阵到等价矩阵改造失败!');
end
equiR=simiRk;
numclass=input('请输入聚类数: ');
%---------在不同的截集水平进行聚类--------------%
clasc=0;
comp_vec(1,1:numrows)=0;
index=0;
clasc=0;
tip=0;
alpha=0;
temnumeachclass=0;
while (tip==0),
%alpha=input('请输入进行分类的截集水平λ: ');
%alpha=0.5; %调试
if (alpha<0 || alpha>1),
error('您输入的截集水平λ不符合分类要求->执行结束!');
end
comp_arr=ones(numrows)*alpha;
result_arr=(equiR>=comp_arr); %--------------------result_arr判断矩阵
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%捡菜算法
for i=1:numrows,
if sum(comp_vec(1,:)==result_arr(i,:))<numrows, %-----------说明没有归类
temnumeachclass=0;
%numeachclass(clasc)=index-temnumeachclass;
temsave=result_arr(i,:);
for j=1:numrows,
if sum(result_arr(j,:)==temsave)==numrows,
index=index+1;
class(index)=j;
result_arr(j,:)=0; %--------------------说明已经被归类
temnumeachclass=temnumeachclass+1;
end
end
clasc=clasc+1;
nec(clasc)=temnumeachclass;
else
continue;
end
end

if clasc>=numclass,
tip=1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%当模糊分类的数目小于等于所给出的类数时退出循环体
disp('成功!');
else
clear class;
clear numeachclass;
clear nec;
clasc=0;
index=0;
temnumeachclass=0;
alpha=alpha+0.01;
end
end
%----取聚类结果----%
num=0;
n=0;
for i=1:clasc,
for j=1:nec(i),
num=num+1;
n=n+1;
CLUS(n,:)=INPUTDATA(class(num),:);
end
n=n+1;
CLUS(n,:)=inf;
end
%format single(CLUS)
lenexport=size(CLUS,1);
for i=1:lenexport,
RESULT(i,:)=sprintf('%15.2f',CLUS(i,:));
end
RESULT

怎么利用模糊C均值聚类实现图像分割啊?具体代码? 模糊c均值算法matlab程序 在matlab中做模糊C均值聚类(fcm)算法如何体现初始隶属度?如题 图像处理高手请进!请问什么是均值漂移图像分割技术?它的原理是什么?小弟谢了啊! 几种图像阈值分割算法的实现与比较 利用opencv进行颜色分割:我想将一只斑马(黑白)从图像(图像有很多背景)中分割出来如果是其他颜色的东西呢?怎么分割出来? matlab 图像融合后 怎么求图像的均值, 聚类半径的意思?聚类半径的确定?聚类,又称分割,是对数据集进行分组,使类间 相似性最大化,而使类内相似性最大化.我刚开始学聚类分析,对其中的聚类半径的理解很是模糊,这个半径是一个具 k-均值聚类和c-均值聚类一样吗 在matlab里怎样对散点图做模糊C均值聚类,和模糊聚类?clearx=rand(1,200);y=rand(1,200);plot(x,y,'.');hold on xmean=mean(x);ymean=mean(y);plot(xmean,ymean,'*');这是样本点集,就对这个做聚类?拜托各位高手啦! matlab中,利用 plot做出了二维图像,并且知道图像上某点的纵坐标,怎么求出其横坐标?利用那些命令可以实现呢 遥感图像分割,在ENVI中怎么实现多尺度分割,以及参数的设定.需要编写程序吗?多尺度参数含 波段权重,尺度参数,紧密度和光滑度 matlab的题目,利用K均值算法对以下30个点集合实施聚类.实验题:利用K均值算法对以下30个点集合实施聚类.10个点:X方向:均值3,方差1.2Y方向:均值6,方差1.110个点:X方向:均值5,方差1.2Y方向 得到二维otsu法的阈值(二元组)后怎样做图像分割?怎么在opencv中实现?也就是得到最佳的一个二元组后,怎么二值化图像? k均值聚类出现空类怎么处理? 如何利用matlab提取一幅图像的所有灰度值,并计算均值,方差,CV 利用MATLAB实现二维图像傅立叶变换算法 怎么利用ARCGIS裁剪图像