2016-03-31 22 views
1

Gaussian mixture modelK-means'un genelleştirilmesi olduğunu biliyorum ve bu nedenle daha doğru olması gerekir.K-belirli görüntü bölgelerindeki Gaussian karışım modelinden daha doğru

Ama K-means ile elde edilen sonuçlar belli bölgelerde daha doğru neden aşağıda kümelenmiş resmin üzerine söyleyemem (Gaussian Mixture Model sonuçlarında ama nehirde devam eden, açık mavi noktalar halinde gösterilen benek gürültü gibi değil K-means sonuçlarında) . Aşağıda

Her iki yöntem için matlab kodudur:
% kmeans 
L1 = kmeans(X, 2, 'Replicates', 5); 
kmeansClusters = reshape(L1, [numRows numCols]); 
figure('name', 'Kmeans clustering') 
imshow(label2rgb(kmeansClusters)) 

% gaussian mixture model 
gmm = fitgmdist(X, 2); 
L2 = cluster(gmm, X); 
gmmClusters = reshape(L2, [numRows numCols]); 
figure('name', 'GMM clustering') 
imshow(label2rgb(gmmClusters)) 

Ve içinde

orijinal görüntü, hem de kümelenmiş sonuçlar göstermiştir şunlardır:

Orjinal resim:

Original image

K-anlamına gelir:

K-means clusters

Gauss Karışım Modeli:

Gaussian Mixture Model

P.S.: Yalnız yoğunluk bilgileri kullanarak kümeleme ediyorum ve küme sayısı 2 (yani su ve toprak).

cevap

4

Bunun ilginç bir soru/problem olduğunu düşünüyorum, bu yüzden etrafta biraz zaman geçirdim. İlk olarak, Gaussian karışım modelinin k-araçlarından daha doğru olması gerektiği varsayımı mutlaka doğru değildir. Farklı varsayımları var ve GMM daha esnek iken, özellikle sınıflandırma kadar öznel bir şeyle, her zaman daha iyi olması gerektiğini söyleyen bir kural yok.

K-araçları kümeleme ile pikselleri, yalnızca bu grubun ortalama ya da merkezindeki mesafeye göre iki kefeden birine atamaya çalışıyorsunuz. Nehirdeki benek gürültüsüne bakarsak, değerler iki santimetre arasında düşer. görüntü histogram çiziliyor ve centroids ve benek gürültüsü konumlarını atma, bu alın:

K-Means Centroids

Sen benek parazit koyu şeyler ağırlık merkezi (su) daha yakın olduğunu görebilirsiniz Böylece su kovasına atanır. Bu temelde eşit varyans ve eşit ağırlık ile bir Gaussian karışım modeli ile aynı şeydir.

GMM'nin avantajlarından biri, iki kategorinin varyansını dikkate alma becerisidir. GMM, kategorilerinizi ayırmak için iki centroid bulmak ve bir çizgi çizmek yerine, verilerinize en uygun olan iki Gaussian buluyor. Bu gerçekten iyi bir örnek resim çünkü iki baskın şekli açıkça görebiliyorsunuz: biri uzun boylu ve sıska, biri kısa ve geniş.GMM algoritması bu gibi verileri görüyor: Burada

Gaussian Mixture Model

Eğer benek parazit açıkça arazi pdf geniş varyans içine düştüğünü görebiliriz.

K-araçları ve GMM arasındaki bir başka fark, piksellerin nasıl kümelenmiş olduğudur. GMM'de iki dağılımları her piksele bir olasılık değeri atamak için kullanılır, bu yüzden bulanık - bu "bu piksel kesinlikle arazidir" demiyor, diyor (örneğin) "Bu piksel olma suyun% 30 şansı var ve% 70'lik bir arazi olma şansı ", bu yüzden toprak olarak atar. Bu özel örnekte su histogramı çok sıkıdır, bu yüzden (bu durumda yanlış) o benek gürültüsünün aslında su olması olasılığının çok düşük olduğuna karar verir.

+0

GMM, daha kesin bir şekilde, belirli bir şekle sahip olduğuna inanılırken, bir başka kümelenme ise, bir başka kümelenme olan verileri sunar. Bulanık bölge doğrulukla gelir; İyi bir Markov rastgele alanı ile birleştiğinde üstün bir kümeleme yapar. Elbette, varsayım geçerliyse. btw güzel cevap. – mainactual

+0

Sana çıkarılan Gauss dağılımları çizmek için nasıl yaptığını hakkında küçük bir teknik soru ('matlab- veya olasılık-related') var. Ben 'gmm.mu' ve' gmm.Sigma' 'mean' ve' Kovaryans matrix' almak için kullanılır (her dağılımın 'variances' sadece bunun unsurlardır) biliyoruz. normal dağılım arasında değerler alması gereken '[0, 1] ', nasıl' y-axis' üzerindeki grafik streç göstermedi (her pdf) (bu histogram maksimum değeri ile çarpılır)? – h4k1m

+0

@Charbucks Başka bir soru, beneklerin histogramdaki tam konumunu nasıl söylediniz? piksel tarafından görsel olarak piksel mi? – h4k1m

İlgili konular