clear all;
close all;
clc
im = imread(uigetfile('.bmp'));
k = 2;
%定义统计图像直方图信息变量
img_hist = zeros(256,1);
hist_value = zeros(256,1);
%统计直方图不同灰度对应的像素个数
for i=1:256
img_hist(i)=sum(sum(im==(i-1)));
end;
for i=1:256
hist_value(i)=i-1;
end;
%聚类类别初始化
cluster = zeros(k,1);%聚类的质心
cluster_count = zeros(k,1);%聚类类别个数统计
for i=1:k
cluster(i)=uint8(rand*255);
end;
old = zeros(k,1);%old存放迭代前的质心
%迭代终止条件
while (sum(sum(abs(old-cluster))) >1e-6)
old = cluster;
closest_cluster = zeros(256,1);
%初始化mindistance,存放所有灰度级到质心1的距离
min_distance = uint8(zeros(256,1));
min_distance = abs(hist_value-cluster(1));
%记录每个灰度级到自己所属类的最小距离
for i=2:k
min_distance =min(min_distance, abs(hist_value-cluster(i)));
end;
%确定每个灰度级所属类别序号
for i=1:k
closest_cluster(min_distance==(abs(hist_value-cluster(i)))) = i;
end;
%计算该类别的数量
for i=1:k
cluster_count(i) = sum(img_hist .*(closest_cluster==i));
end;
%更新质心
for i=1:k
if (cluster_count(i) == 0)
cluster(i) = uint8(rand*255);
else
cluster(i) = uint8(sum(img_hist(closest_cluster==i).*hist_value(closest_cluster==i))/cluster_count(i));
end;
end;
%为图像分配每个灰度级所处坐标的最终质心
imresult=uint8(zeros(size(im)));
for i=1:256
imresult(im==(i-1))=cluster(closest_cluster(i));
end;
%对每个灰度级对应坐标分配标签
clustersresult=uint8(zeros(size(im)));
for i=1:256
clustersresult(im==(i-1))=closest_cluster(i);
end;
%对每次迭代结果进行展示
result_image=uint8(zeros(size(im)));
for i = 1:128
for j = 1:128
if clustersresult(i,j)==1
result_image(i,j)=0;
else
result_image(i,j)=255;
end
end
end
result_image = uint8(result_image);
figure
subplot(1,2,1);
imshow(im);
subplot(1,2,2);
imshow(result_image);
end
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Matlab实现的Kmeans聚类算法仿真源码+数据(高分课程设计).zip 已获导师指导并通过的97分的高分课程设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 基于Matlab实现的Kmeans聚类算法仿真源码+数据(高分课程设计).zip 已获导师指导并通过的97分的高分课程设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。基于Matlab实现的Kmeans聚类算法仿真源码+数据(高分课程设计).zip 已获导师指导并通过的97分的高分课程设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。基于Matlab实现的Kmeans聚类算法仿真源码+数据(高分课程设计).zip 已获导师指导并通过的97分的高分课程设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。基于Matlab实现的Kmeans聚类算法仿真源码+数据(高分课程设计).zip 已获导师指导并通过的97分的高分课程设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。基于Matlab
资源推荐
资源详情
资源评论
收起资源包目录
基于Matlab实现的Kmeans聚类算法.zip (9个子文件)
Matlab_Kmeans_ImageSeg-main
2-1.bmp 17KB
2-2.bmp 17KB
main.m 218B
3.bmp 17KB
4.bmp 17KB
1.bmp 17KB
test.m 2KB
2.bmp 17KB
kmeansclustering.m 1KB
共 9 条
- 1
资源评论
- xiaoli2228692023-12-31资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。
- 肌肉小火车2023-11-28资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。
- m0_671166972024-01-22资源使用价值高,内容详实,给了我很多新想法,感谢大佬分享~
- 2301_775553832024-02-12内容与描述一致,超赞的资源,值得借鉴的内容很多,支持!
不安分的小女孩
- 粉丝: 9210
- 资源: 1990
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于STM32F103C8T6单片机蓄电池在线监测系统主板硬件(原理图+PCB)工程文件.zip
- mysql大纲资料.txt
- c++大纲资料.txt
- 效率工具bat脚本实现日志提取
- MyBatis 中动态 SQL 的示例
- STM8L101F3P6单片机+CC1100模块433M遥控器设计硬件(原理图+PCB)工程文件.zip
- 上传下载铁人下载系统 Liuxing 1.0-liuxing1.0.rar
- 南京邮电大学数学实验实力雄厚,凭借其优秀的师资力量、丰富的实践教学资源和卓越的科研成果,成为国内一流的数学实验教学和科研基地
- 【火爆朋友圈的今天吃什么源码 v1.0】随机的为用户带来每一天的用餐选择和推荐.rar
- MPU6050中文版数据手册
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功