📄 kmeansimage.m
字号:
function y = kmeansimage( img,k )%函数返回聚类中心的值[n,d]=size(img);Cell=cell(1,k); %创建一个cell来保存距离矩阵center=sort(255*rand(1,k)); %随机创建k个聚类中心while 1 temp=center; for t=1:k Cell{t} = abs(img-temp(t)); %依次计算各点与中心距离,通过矩阵表示,并将矩阵放入cell中 end c=zeros(k,d); for p=1:d for q=1:k c(q,p) = Cell{q}(p); %将距离放入一个新的矩阵,方便重新划分聚类.其中列表示聚类中心,行表示相应中心到各点的距离. end end [z,g] = min(c); %找出距离的最小值所在的行 for m = 1:k position = find(g==m); if (length(position) == 0) %防止出现0/0的情况 center(m) = temp(m); else center(m) = sum(img(position))/length(position); %求出平均值作为新的聚类中心 end end miner = abs(temp-center); %对比前后两个聚类中心,当精度小于某一个值时,退出循环 if miner<0.001 y=center; break; endend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -