作业帮 > 数学 > 作业

K均值算法,我将一个没m*n的矩阵转换成一维的行向量矩阵,然后通过两个质心将他们分成两个簇,我想问一下

来源:学生作业帮 编辑:百度作业网作业帮 分类:数学作业 时间:2024/07/11 20:11:20
K均值算法,我将一个没m*n的矩阵转换成一维的行向量矩阵,然后通过两个质心将他们分成两个簇,我想问一下
如何将聚类后的结果重新排列呈一个m*n的矩阵,并将属于不同类的像素赋予不同的像素质
K均值算法,我将一个没m*n的矩阵转换成一维的行向量矩阵,然后通过两个质心将他们分成两个簇,我想问一下
%设矩阵A为m*n,分类数k=2
B=reshape(A,1,m*n);%将矩阵转化为1维的行向量
[IDX] = kmeans(B,k);%用k均值分为2类
a=reshape(IDX,m,n)%重新转化为m行n列
%此时,不同的类别已经是不同的值了,不知道你要什么样的,我通常标为不一样的颜色
%彩色显示分割结果
imseg=imageRGB(seg,k);%不同类别表示为彩色
imshow(imseg); %显示图像
function imseg=imageRGB(seg,K)
[nRow, nCol] = size(seg);
color=colormap(lines)*255;
imseg = zeros(nRow*nCol, 3);
for i=1:K
idx = find(seg == i);
imseg(idx, :) = repmat(color(i, :), [], length(idx));%repma复制个数组
end
imseg = reshape(imseg, nRow, nCol, 3);%reshape是重构数组的形式