sel*_*cia 3 matlab image image-processing k-means
是否可以使用matlab对图像的RGB +空间特征进行聚类?
注意:我想kmeans用于群集.
事实上,基本上我想做一件事,我想得到这个形象

由此

我想你正在寻找颜色量化.
[imgQ,map]= rgb2ind(img,4,'nodither'); %change this 4 to the number of desired colors
%in quantized image
imshow(imgQ,map);
Run Code Online (Sandbox Code Playgroud)
结果:

使用kmeans:
%img is the original image
imgVec=[reshape(img(:,:,1),[],1) reshape(img(:,:,2),[],1) reshape(img(:,:,3),[],1)];
[imgVecQ,imgVecC]=kmeans(double(imgVec),4); %4 colors
imgVecQK=pdist2(imgVec,imgVecC); %choosing the closest centroid to each pixel,
[~,indMin]=min(imgVecQK,[],2); %avoiding double for loop
imgVecNewQ=imgVecC(indMin,:); %quantizing
imgNewQ=img;
imgNewQ(:,:,1)=reshape(imgVecNewQ(:,1),size(img(:,:,1))); %arranging back into image
imgNewQ(:,:,2)=reshape(imgVecNewQ(:,2),size(img(:,:,1)));
imgNewQ(:,:,3)=reshape(imgVecNewQ(:,3),size(img(:,:,1)));
imshow(img)
figure,imshow(imgNewQ,[]);
Run Code Online (Sandbox Code Playgroud)
结果kmeans:
Run Code Online (Sandbox Code Playgroud)
kmeans距离约束的结果:
