资源简介
利用kmeans算法对图像聚类的一个小程序,里面包含图片和对应的主函数和调用函数,可以直接运行。
代码片段和文件信息
function [mumask]=kmeans1(imak)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% kmeans image segmentation
%
% Input:
% ima: grey color image
% k: Number of classes
% Output:
% mu: vector of class means
% mask: clasification image mask
%
% Author: Jose Vicente Manjon Herrera
% Email: jmanjon@fis.upv.es
% Date: 27-08-2005
%通过k均值算法对图像进行聚类运算,获得聚类图像
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% check image
gpp=size(ima1);
for i=1:gpp
for j=1:gpp
ima(ij)=uint16(ima(ij));
end
end
mask=ima;
ima=double(ima);
copy=ima; % make a copy
ima=ima(:); % vectorize ima 图像转成一个向量
mi=min(ima); % deal with negative 求图像中的最小灰度值
ima=ima-mi+1; % and zero values 图像所有值向下浮动至最小值为1
s=length(ima); % 计算向量总元素数
% create image histogram
m=max(ima)+1; %取最大像素值
h=zeros(1m); %聚类前图像向量中各灰度出现的次数统计
hc=zeros(1m); %聚类后图像向量所属类编号
for i=1:s
if(ima(i)>0)
%bpp=im2uint16(ima(i));
%h(bpp)=h(bpp)+1;
h(ima(i))=h(ima(i))+1;
end
end
ind=find(h); %找到图像向量中所有出现次数非0的值
hl=length(ind); %图像向量中所有非0值的个数
% initiate centroids
mu=(1:k)*m/(k+1);%确定初始聚类中心(k个)
% start process
while(true)
oldmu=mu; %记录上一次的聚类中心
% current classification
for i=1:hl
c=abs(ind(i)-mu); %计算图像向量中每一个分量与所有聚类中心的距离
cc=find(c==min(c)); %找到图像向量中每一个分量与聚类中心距离中最短的那一个聚类中心
hc(ind(i))=cc(1); %记录图像向量中每一个分量所属的类号
end
%recalculation of means
%更新聚类中心
for i=1:k
a=find(hc==i); %找到图像向量中所有属于第i类的分量
if sum(h(a))~=0
mu(i)=sum(a.*h(a))/sum(h(a)); %更新第i类的聚类中心
end
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(ij)-mu);
a=find(c==min(c));
mask(ij)=a(1);
end
end
mu=mu+mi-1; % recover real range
mu
mask
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-05-12 10:07 kmeans图像聚类程序\
文件 2287 2017-05-12 10:05 kmeans图像聚类程序\kmeans1.m
文件 263222 2015-06-08 17:13 kmeans图像聚类程序\lena.bmp
文件 52 2017-05-12 10:11 kmeans图像聚类程序\main.m
- 上一篇:图像处理系统
- 下一篇:金蝶代码框架报表开发
相关资源
- Kmeans++算法对图像进行分割
- AP聚类算法代码
- 基于SIFT+Kmeans+SVM的场景识别报告
- 一种高效的聚类算法.pdf
- 类平均聚类方法 类平均聚类方法
- 多种K-means聚类算法或改进算法包,
- 基于模糊c聚类的图像分割
- 模糊聚类算法
- KMeans GMM
- 产生雷达信号,雷达信号聚类分选
- 聚类测试数据
- 聚类、分类所用数据集
- 用MapReduce实现KMeans算法
- 聚类技术---复杂网络社团检测
- 聚类做预处理,基于关联规则推荐算
- 机器学习Kmeans实验报告
- 自适应布谷鸟搜索的并行K-means聚类算
- apcluster聚类算法
- 求网络的最短路径直径介数,度分布
- AP方法聚类及改进
- Caffe-ssd的宽高比聚类
- 模糊聚类Fortran的源代码
- k_means聚类算法和配套测试鸢尾花数据
- 轨迹聚类-trajectory-clustering
- 基本web数据挖掘中的聚类算法研究
- 基于遗传算法的k-means聚类
- spss之聚类分析--移动
- 基于密度的优化初始聚类中心K-means算
- 基于因子分析和聚类分析的技术创新
- synthetic_control.data
评论
共有 条评论