如何使用K-means确定来自集群中心的RGB值?

时间:2016-03-29 09:38:51

标签: matlab image-processing k-means image-segmentation

我正在使用K-means来分割图像中的颜色,现在我想从已经聚集的每种颜色中获取RGB值。还有一件事,任何人都可以向我解释为什么集群中心有两个值( 6 x 2 double )?这是集群中心的范围吗?

cform = makecform('srgb2lab');
lab = applycform(a,cform);

ab = double(lab(:,:,2:3));
nrows = size(ab,1);
ncols = size(ab,2);
ab = reshape(ab,nrows*ncols,2);

nColors = 6;
[cluster_idx, cluster_center] = kmeans(ab, nColors,   
                                       'distance','sqEuclidean', 'Replicates', 3);
pixel_labels = reshape(cluster_idx, nrows, ncols);
segmented_images = cell(1,3);
rgb_label = repmat(pixel_labels,[1 1 3]);

1 个答案:

答案 0 :(得分:0)

cluster_center kmeans计算nColors=6(即k=6)中心仅a的色彩空间以来,b为6乘2 } Lab颜色空间的L'个组件。

为了从这6个中心获取RGB值,您可以

  1. L组件修复一些默认值cluster_idx,并将L'ab中心转换回RGB值。
  2. 使用console.log($scope.files);蒙版计算原始RGB图像中每个线段的平均颜色。