gusucode.com > matlab程序语言实现的水准网平差程序,使用于测绘人员 > 一种基于极大值稳定区域的文本定位方法matlab源码程序/毕业设计/代码/k.m

    clear all
[filename,pathname]=uigetfile('*.*','choose a picture');
path = [pathname filename];
I = imread(path);
subplot(2,3,1);imshow(I);
xlabel('(a)H&E图像');
%将图像的色彩空间由RGB色彩空间转换到L*A*B*色彩空间
cform=makecform('srgb2lab');
lab_I=applycform(I,cform);
%使用K均值聚类算法对L*A*B*色彩空间中的色彩进行分类
ab=double(lab_I(:,:,2:3));%数据类型转换
nrow=size(ab,1);%求矩阵尺寸
ncol=size(ab,2);%求矩阵尺寸
ab=reshape(ab,nrow*ncol,2);%矩阵型转变
ncolors=3;%聚类重复三次避免局部最小值
[c_idx,c_center]=kmeans(ab,ncolors,'distance','sqEuclidean','Replicates',3);
%使用k均值聚类算法得到的结果对图像进行标记
pixel_labels=reshape(c_idx,nrow,ncol);
subplot(2,3,2);imshow(pixel_labels,[]);
xlabel('(b)使用簇索引对图像进行标记');
s_image=cell(1,3);
rgb_label=repmat(pixel_labels,[1 1 3]);
for k=1:ncolors
    color=I;
    color(rgb_label~=k)=0;
    s_image{k}=color;
end
subplot(2,3,3);imshow(s_image{1});
xlabel('(c)簇1中的目标');
subplot(2,3,4);imshow(s_image{2});
xlabel('(d)簇2中的目标');
subplot(2,3,5);imshow(s_image{3});
xlabel('(e)簇3中的目标');