function [mu,mask]=kmeans(ima,k)
% 功能:运用k-means算法对图像进行分割
% 输入: ima-输入的灰度图像 k-分类数
% 输出: mu-均值类向量 mask-分类后的图像
ima=double(ima);
copy=ima;
ima=ima(:);
mi=min(ima);
ima=ima-mi+1;
s=length(ima);
% 计算图像灰度直方图
m=max(ima)+1;
h=zeros(1,m);
hc=zeros(1,m);
for i=1:s
if(ima(i)>0) h(ima(i))=h(ima(i))+1;end
end
ind=find(h);
hl=length(ind);
% 初始化质心
mu=(1:k)*m/(k+1);
% start process
while(true)
oldmu=mu;
% 现有的分类
for i=1:hl
c=abs(ind(i)-mu);
cc=find(c==min(c));
hc(ind(i))=cc(1);
end
%重新计算均值
for i=1:k
a=find(hc==i);
mu(i)=sum(a.*h(a))/sum(h(a));
end
if(mu==oldmu) break;end;
end
% calculate mask
s=size(copy);
mask=zeros(s);
for i=1:s(1),
for j=1:s(2),
c=abs(copy(i,j)-mu);
a=find(c==min(c));
mask(i,j)=a(1);
end
end
mu=mu+mi-1;
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:kmeans_1.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开kmeans_1.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 能量泛函分割:DBSCAN、GAC水平集、snake、分水岭、 阙值分割: 特征增强分割:超像素SFFCM图像分割、关键像素点FLICM图像分割 智能算法图像分割:遗传算法、灰狼算法、人工鱼群、贝叶斯、北方苍鹰、萤火虫、和声搜索、粒子群、蚁群算法
资源推荐
资源详情
资源评论
收起资源包目录
【图像分割】基于matlab K-means聚类算法图像分割【含Matlab源码 1476期】.zip (6个子文件)
【图像分割】基于matlab K-means聚类算法图像分割【含Matlab源码 1476期】
lab.m 185B
kmeans.m 945B
8.jpg 247KB
运行结果1.jpg 21KB
kmeans_1.m 127B
运行结果2.jpg 22KB
共 6 条
- 1
资源评论
- ZYX1519142022-05-01用户下载后在一定时间内未进行评价,系统默认好评。
海神之光
- 粉丝: 3w+
- 资源: 2094
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功