K-средние более точны, чем модель смеси Гаусса в определенных областях изображения.

Я знаю, что Gaussian mixture model является обобщением K-means и поэтому должно быть более точным.

Но я не могу сказать по сгруппированному изображению ниже, почему результаты, полученные с помощью K-means, более точны в определенных областях (например, спекл-шум, показанный светло-голубыми точками, сохраняется в реке в результатах Gaussian Mixture Model, но не в результатах K-means).

Ниже приведен код matlab для обоих методов:

% 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))

А ниже показано исходное изображение, а также кластеризованные результаты:

Исходное изображение:

Исходное изображение

К-означает:

кластеры K-средних

Модель гауссовой смеси:

Модель гауссовой смеси

P.S: я группирую, используя только информацию об интенсивности, и количество кластеров равно 2 (т. е. вода и земля).


person Hakim    schedule 31.03.2016    source источник


Ответы (1)


Я думаю, что это интересный вопрос/проблема, поэтому я провел немного времени, играя.

Во-первых, предположение о том, что смешанная модель Гаусса должна быть более точной, чем k-средние, не обязательно верно. У них разные предположения, и хотя GMM более гибок, нет правила, согласно которому он всегда должен быть лучше, особенно в отношении чего-то столь субъективного, как классификация изображений.

С помощью кластеризации k-средних вы пытаетесь назначить пиксели одному из двух сегментов исключительно на основе расстояния от среднего или центроида этого сегмента. Если я взгляну на спекл-шум в реке, значения попадают между двумя центроидами. Построив гистограмму изображения и наложив положения центроидов и спекл-шума, я получаю следующее:

К-средние центроиды

Вы можете видеть, что спекл-шум ближе к центроиду более темного материала (воды), поэтому он относится к ведру с водой. Это в основном то же самое, что и смешанная модель Гаусса с равной дисперсией и равным весом.

Одним из преимуществ GMM является возможность учитывать дисперсию двух категорий. Вместо того, чтобы просто найти два центроида и провести линию между ними, чтобы разделить ваши категории, GMM находит два гауссиана, которые лучше всего соответствуют вашим данным. Это действительно хороший пример изображения, потому что вы можете ясно видеть две доминирующие фигуры: одну высокую и худую, а другую короткую и широкую. Алгоритм GMM видит данные так:

Модель гауссовой смеси

Здесь вы можете видеть, что спекл-шум явно попадает в широкую дисперсию pdf земли.

Еще одно различие между k-средними и GMM заключается в том, как сгруппированы пиксели. В GMM два распределения используются для присвоения значения вероятности каждому пикселю, поэтому оно нечеткое — оно не говорит «этот пиксель определенно является землей», а говорит (например) «у этого пикселя есть 30% шанс быть водой». и 70% шанс быть землей», поэтому он назначает его землей. В этом конкретном примере гистограмма воды очень плотная, поэтому она (в данном случае ошибочно) решает, что очень маловероятно, чтобы этот спекл-шум действительно был водой.

person cfcurtis    schedule 31.03.2016
comment
GMM более точно представляет данные, которые априори считаются имеющими определенную форму, в то время как kmeans — это просто еще одна кластеризация. Нечеткая зона связана с точностью; в сочетании с приличным марковским случайным полем это обеспечивает превосходную кластеризацию. Это конечно, если предположение верно. кстати хороший ответ. - person mainactual; 01.04.2016
comment
У меня есть небольшой технический вопрос (matlab- or probability-related) о том, как вы построили извлеченные распределения Гаусса. Я знаю, что gmm.mu и gmm.Sigma используются для получения mean и Covariance matrix (variances каждого дистрибутива - это просто его элементы). Предполагается, что нормальное распределение принимает значения между [0, 1] (как и каждый pdf), как вы растянули его график на y-axis (он умножается на максимальное значение гистограммы)? - person Hakim; 01.04.2016
comment
@Charbucks Другой вопрос: как вы определили точное положение пятна на гистограмме? он расположен визуально попиксельно? - person Hakim; 01.04.2016
comment
Что касается построения гауссовых распределений, мое первое предположение состоит в том, что вы просто умножили на numCols*numRows (количество населения на изображении). - person Hakim; 01.04.2016
comment
@ h4k1m Вы правы, я только что масштабировал распределение, чтобы оно хорошо выглядело на гистограмме - это больше не настоящий pdf. В этом случае масштабирование на самом деле представляет собой максимальное значение гистограммы, деленное на максимальное значение PDF, а затем взвешенное по пропорции смеси (gmm.PComponents). Что касается положения пятна, я просто увеличил изображение и использовал курсор данных, чтобы щелкнуть пятнышко - ничего особенного! - person cfcurtis; 01.04.2016