2016-03-29 43 views
0

Resimde kesimli renk için K-araçları kullanıyorum ve şu anda zaten kümelenen her renkten RGB değerleri almak istiyorum. Ve bir şey daha, Kimse bana neden küme merkezinin iki değeri olduğunu açıklayabilir mi (6 x 2 çift)? Bu küme merkezi aralığı mı?K-araçları kullanarak küme merkezinden RGB değerleri nasıl belirlenir?

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

ofc küme merkezi 2 değere sahiptir, eğer sadece 1 değeri olsaydı, 16 diyelim, bunu nasıl yorumlardınız? 16. piksel mi? 16. sıra? RGB değerini okumak için, kümenizi orijinal görüntüye uygulayın (LAB adımından önce) ve RGB değerlerini okuyun – GameOfThrows

+0

Görüntünüzün 2D olduğunu varsayıyorum (renk boyutu hariç)? Bu durumda merkezlerin iki değer, bir satır ve bir sütun koordinatı gerekir. – Dan

+0

Küme merkezinin RGB değerini temsil eden bir koordinat olduğu anlamına mı geliyor? – userstack

cevap

0

Sizin cluster_center 6-by-2 size nColors=6 (yani k=6) Lab renk alanının yalnızca a ve b bileşenlerin bir renk uzayında merkezleri hesaplamak için kmeans istedi beri. Eğer

  1. Fix bazı varsayılan değeri, L bileşeni için L' ve L'ab geri dönüştürebilirsiniz bu 6 merkezlerinden RGB değerlerini almak için

    RGB değerlerine ortalar.

  2. Orijinal RGB görüntüsündeki her segmentin ortalama rengini hesaplamak için cluster_idx maskelerini kullanın.