问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求助谁有基于模糊C均值的图像分割的代码

发布网友 发布时间:2022-05-14 00:57

我来回答

1个回答

热心网友 时间:2023-11-16 01:35

unction [U,P,Dist,Cluster_Res,Obj_Fcn,iter]=fuzzycm(Data,C,plotflag,M,epsm)
% 模糊 C 均值聚类 FCM: 从随机初始化划分矩阵开始迭代
% [U,P,Dist,Cluster_Res,Obj_Fcn,iter] = fuzzycm(Data,C,plotflag,M,epsm)
% 输入:
% Data: N×S 型矩阵,聚类的原始数据,即一组有限的观测样本集,
% Data 的每一行为一个观测样本的特征矢量,S 为特征矢量
% 的维数,N 为样本点的个数
% C: 聚类数,1<C<N
% plotflag: 聚类结果 2D/3D 绘图标记,0 表示不绘图,为缺省值
% M: 加权指数,缺省值为 2
% epsm: FCM 算法的迭代停止阈值,缺省值为 1.0e-6
% 输出:
% U: C×N 型矩阵,FCM 的划分矩阵
% P: C×S 型矩阵,FCM 的聚类中心,每一行对应一个聚类原型
% Dist: C×N 型矩阵,FCM 各聚类中心到各样本点的距离,聚类中
% 心 i 到样本点 j 的距离为 Dist(i,j)
% Cluster_Res: 聚类结果,共 C 行,每一行对应一类
% Obj_Fcn: 目标函数值
% iter: FCM 算法迭代次数
% See also: fuzzydist maxrowf fcmplot
Data=imread('qq.jpg');
C=10;%%
if nargin<5
epsm=1.0e-6;
end
if nargin<4
M=2;
end
if nargin<3
plotflag=0;
end
[N,S]=size(Data);
m=2/(M-1);
iter=0;
Dist(C,N)=0;
U(C,N)=0;
P(C,S)=0;
% 随机初始化划分矩阵
U0 = rand(C,N);
U0=U0./(ones(C,1)*sum(U0));
% FCM 的迭代算法
while true
% 迭代计数器
iter=iter+1;
% 计算或更新聚类中心 P
Data=uint8(Data);
P=uint8(P);
Um=U0.^M; Um=uint8(Um);
P=Um.*Data./(ones(S,1).*sum(Um'))'; %错误行
% 更新划分矩阵 U
for i=1:C
for j=1:N
Dist(i,j)=fuzzydist(P(i,:),Data(j,:));
end
end
U=1./(Dist.^m.*(ones(C,1)*sum(Dist.^(-m))));
% 目标函数值: 类内加权平方误差和
if nargout>4 || plotflag
Obj_Fcn(iter)=sum(sum(Um.*Dist.^2));
end
% FCM 算法迭代停止条件
if norm(U-U0,Inf)<epsm
break
end
U0=U;
end
% 聚类结果
if nargout > 3
res = maxrowf(U);
for c = 1:C
v = find(res==c);
Cluster_Res(c,1:length(v))=v;
end
end
% 绘图
if plotflag
fcmplot(Data,U,P,Obj_Fcn);
end

function
[U,P,Dist,Cluster_Res,Obj_Fcn,iter]=fuzzycm2(Data,P0,plotflag,M,epsm)
% 模糊 C 均值聚类 FCM: 从指定初始聚类中心开始迭代
% [U,P,Dist,Cluster_Res,Obj_Fcn,iter] = fuzzycm2(Data,P0,plotflag,M,epsm)
% 输入: Data,plotflag,M,epsm: 见 fuzzycm.m
% P0: 初始聚类中心
% 输出: U,P,Dist,Cluster_Res,Obj_Fcn,iter: 见 fuzzycm.m
% See also: fuzzycm
if nargin<5
epsm=1.0e-6;
end
if nargin<4
M=2;
end
if nargin<3
plotflag=0;
end
[N,S] = size(Data);
m = 2/(M-1);
iter = 0;
C=size(P0,1);
Dist(C,N)=0;
U(C,N)=0;
P(C,S)=0; % FCM 的迭代算法
while true % 迭代计数器
iter=iter+1; % 计算或更新划分矩阵 U
for i=1:C
for j=1:N
Dist(i,j)=fuzzydist(P0(i,:),Data(j,:));
end
end
U=1./(Dist.^m.*(ones(C,1)*sum(Dist.^(-m)))); % 更新聚类中心 P
Um=U.^M;
P=Um*Data./(ones(S,1)*sum(Um'))'; % 目标函数值: 类内加权平方误差和
if nargout>4 | plotflag
Obj_Fcn(iter)=sum(sum(Um.*Dist.^2));
end % FCM 算法迭代停止条件
if norm(P-P0,Inf)<epsm
break
end
P0=P;
end % 聚类结果
if nargout > 3
res = maxrowf(U);
for c = 1:C
v = find(res==c);
Cluster_Res(c,1:length(v))=v;
end
end
% 绘图
if plotflag
fcmplot(Data,U,P,Obj_Fcn);
end

function f = addr(a,strsort)
% 返回向量升序或降序排列后各分量在原始向量中的索引
% 函数调用:f = addr(a,strsort)
% strsort: 'ascend' or 'descend'
% default is 'ascend'
% -------- example --------
% addr([ 4 5 1 2 ]) returns ans:
% [ 3 4 1 2 ]
if nargin==1
strsort='ascend';
end
sa=sort(a);
ca=a;
la=length(a);
f(la)=0;
for i=1:la
f(i)=find(ca==sa(i),1);
ca(f(i))=NaN;
end
if strcmp(strsort,'descend')
f=fliplr(f);
end

function ellipse(a,b,center,style,c_3d)
% 绘制一个椭圆
% 调用: ellipse(a,b,center,style,c_3d)
% 输入:
% a: 椭圆的轴长(平行于 x 轴)
% b: 椭圆的轴长(平行于 y 轴)
% center: 椭圆的中心 [x0,y0],缺省值为 [0,0]
% style: 绘制的线型和颜色,缺省值为实线蓝色
% c_3d: 椭圆的中心在 3D 空间中的 z 轴坐标,可缺省
if nargin<4
style='b';
end
if nargin<3 | isempty(center)
center=[0,0];
end
t=1:360;
x=a/2*cosd(t)+center(1);
y=b/2*sind(t)+center(2);
if nargin>4
plot3(x,y,ones(1,360)*c_3d,style)
else
plot(x,y,style)
end

function fcmplot(Data,U,P,Obj_Fcn)
% FCM 结果绘图函数
% See also: fuzzycm maxrowf ellipse
[C,S] = size(P);
res = maxrowf(U);
str = 'po*x+d^v><.h';
% 目标函数绘图
figure(1),plot(Obj_Fcn)
title('目标函数值变化曲线','fontsize',8)
% 2D 绘图
if S==2
figure(2),plot(P(:,1),P(:,2),'rs'),hold on
for i=1:C
v=Data(find(res==i),:);
plot(v(:,1),v(:,2),str(rem(i,12)+1))
ellipse(max(v(:,1))-min(v(:,1)), ...
max(v(:,2))-min(v(:,2)), ...
[max(v(:,1))+min(v(:,1)), ...
max(v(:,2))+min(v(:,2))]/2,'r:')
end
grid on,title('2D 聚类结果图','fontsize',8),hold off
end
% 3D 绘图
if S>2
figure(2),plot3(P(:,1),P(:,2),P(:,3),'rs'),hold on
for i=1:C
v=Data(find(res==i),:);
plot3(v(:,1),v(:,2),v(:,3),str(rem(i,12)+1))
ellipse(max(v(:,1))-min(v(:,1)), ...
max(v(:,2))-min(v(:,2)), ...
[max(v(:,1))+min(v(:,1)), ...
max(v(:,2))+min(v(:,2))]/2, ...
'r:',(max(v(:,3))+min(v(:,3)))/2)
end
grid on,title('3D 聚类结果图','fontsize',8),hold off
end

function D=fuzzydist(A,B)
% 模糊聚类分析: 样本间的距离
% D = fuzzydist(A,B)
D=norm(A-B);

function mr=maxrowf(U,c)
% 求矩阵 U 每列第 c 大元素所在行,c 的缺省值为1
% 调用格式: mr = maxrowf(U,c)
% See also: addr
if nargin<2
c=1;
end
N=size(U,2);mr(1,N)=0;
for j=1:N
aj=addr(U(:,j),'descend');
mr(j)=aj(c);
end

[MH MW]=textread('C:\Users\Administrator\Desktop\MALE.txt','%f %f');
Data(1:50,1)=FH;
Data(51:100,1)=MH;
Data(1:50,2)=FW;
Data(51:100,2)=MW;
C=input('????C??')
[U,P,Dist,Cluster_Res,Obj_Fcn,iter]=fuzzycm(Data,C)
plot(Data(:,1), Data(:,2),'o');
hold on;
maxU = max(U);
index1 = find(U(1,:) == maxU);
index2 = find(U(2,:) == maxU);
line(Data(index1,1),Data(index1,2),'marker','*','color','g');
line(Data(index2,1),Data(index2,2),'marker','*','color','r');
plot([P([1 2],1)],[P([1 2],2)],'*','color','k')
hold off;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
绿茶要猛冲吗,绿茶鲜嫩不需要(绿茶冲泡的正确方式) 绿茶为什么越好越不耐泡 绿茶要泡几泡?哪种绿茶最耐泡? 哪种绿茶最耐泡 职场故事:美女职员遇到暴躁老板 老板脾气坏得要命,我该怎么办 老板老爱发脾气,我们应该怎么做呀? 害怕老总发脾气怎么办 网络上用名字测和另一个人的关系准确吗 一个男生把自己的名字和另一个人的名字放在一起,中间放个"&amp;"符号... 哪个网站可以下CAD和注册机? 为什么我玩热血无赖的画面不流畅,很卡? 基于像元的局部模糊图像分割代码 热血无赖这个配置怎么调画质 现在00后孩子都喜欢什么 现在的00后都对什么感兴趣? 00后有什么喜欢做的事情? 现在00后大学生喜欢看什么剧? 00后的人有什么兴趣爱好? 00后喜欢什么 做小本生意如何开始? 鹅肉很好吃,怎么做可以做出周黑鸭的味道? 炖鸭子能不能放香菜 传统锅鸭的做法步骤图,传统锅鸭怎么做好吃 求助正宗的锅鸭怎么做 税率12%的消费税,其征税环节将从生产端移后销售端,会给白酒行业带来什么? 进口优惠税率12%和进口普通税率80%是什么意思,要交哪个税? 租房代开发票税率12%都是什么税 12个点的税怎么算 南京市尧新考场科目三考试今年何时可以约考? 热血无赖最终版设置极限画质,跟最低几乎没区别,还是模模糊糊,边角全是刺,怎么回事,设定使用gtx8 想入手个手机,价格不超过3500,吃鸡高清以上不卡不烫手,拍照好点,要大屏的 vb 拼图游戏(图形的分割)的代码 求cad2012 免费下载的网站 不要 进去就要下别的东西直接下载cad 谁有CAD2007下载网址?无病毒的那种。 3500元左右的手机玩吃鸡哪款好? 我这样的配置完热血无赖为什么有点卡 怎么调整热血无赖? 我的配置玩热血无赖能效果全开吗 求图像分割的c语言代码 能推荐一个实用的CAD软件的下载地址吗? 热血无赖高特效卡顿怎么调显卡设置 图像处理高手请进!请问什么是均值漂移图像分割技术?它的原理是什么?小弟谢了啊! 大家给推荐一下CAD下载地址,哪个版的CAD比较好呢? opencv或matlab的meanshift对图像分割,怎么生成类似下图的效果_百度知 ... 帮帮我 我不知道分水岭算法在图像分割中的应用…… 代码,还有别的帮帮我 谁那里有免费的CAD 制图软件,给我推荐一个,不要共享版的 天下黄河九十九道湾的歌词是什么 谁知道天下黄河九十九道弯的歌词 天下黄河九十九道湾的歌曲鉴赏 黄河九道湾在哪里?