2016-03-29 12 views
0

私は画像内のセグメント化された色にK-meansを使用していますが、今は既にクラスタ化されている各色からRGB値を取得したいと考えています。そしてもう一つ、クラスタセンターに2つの値(6 x 2 double)がある理由を誰にでも説明できますか?これはクラスターセンターの範囲ですか?あなたがnColors=6を計算するためにkmeansを求めているのでK平均を使ってクラスタ中心からRGB値を決定する方法は?

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]); 
+0

cクラスタセンターの2つの値がありますが、それが1つの値だった場合 - たとえば16であると解釈しますか? 16番目のピクセル? 16行目? RGB値を読み込み、元の画像に(LABステップの前に)クラスタを適用し、RGB値を読み取る – GameOfThrows

+0

画像が2D(色の次元を除く)であると仮定しますか?この場合、中心には行と列の2つの値が必要です。 – Dan

+0

クラスタの中心がRGB値を表す座標であることを意味していますか? – userstack

答えて

0

あなたcluster_centerは、6-で-2である(すなわち、k=6は)Lab色空間のだけab部品の色空間で中央に配置します。あなたは

  1. Lコンポーネントのいくつかのデフォルト値、L'を修正し、L'ABはRGB値にセンターバック変換することができ、これらの6つの中心からRGB値を取得するために

  2. cluster_idxマスクを使用して、元のRGBイメージの各セグメントの平均カラーを計算します。
関連する問題