Можно ли использовать K-средства, чтобы помочь в разделении изображения на основе значений пикселей? - PullRequest
8 голосов
/ 24 марта 2011

Я пытаюсь отделить изображение серого уровня на основе значения пикселя: предположим, что пиксели от 0 до 60 в одном бине, 60-120 в другом, 120-180 ... и т. Д. До 255. Диапазоны примерно равнорасположен в этом случае. Однако с помощью кластеризации K-средних можно будет получить более реалистичные показатели того, какими должны быть мои диапазоны значений пикселей? Попытка получить одинаковые пиксели вместе, а не мусорные баки там, где присутствует более низкая концентрация пикселей.

РЕДАКТИРОВАТЬ (чтобы включить полученные результаты): enter image description here enter image description here

k-средних без кластера = 5

Ответы [ 2 ]

10 голосов
/ 24 марта 2011

Конечно, K-средства можно использовать для квантования цвета. Это очень удобно для этого.

Давайте рассмотрим пример в Mathematica :

Начнем с изображения в оттенках серого (150x150):

enter image description here

Давайте посмотрим, сколько уровней серого при представлении изображения в 8 битах:

ac = ImageData[ImageTake[i, All, All], "Byte"];
First@Dimensions@Tally@Flatten@ac
-> 234

Ok. Давайте уменьшим эти 234 уровня. Нашей первой попыткой будет позволить алгоритму самостоятельно определить количество кластеров с конфигурацией по умолчанию:

ic = ClusteringComponents[Image@ac];
First@Dimensions@Tally@Flatten@ic 
-> 3

Он выбирает 3 кластера, и соответствующее изображение:

enter image description here

Теперь, если все в порядке или вам нужно больше кластеров, решать вам.

Предположим, вы решили, что необходимо более тонкое разделение цветов. Давайте попросим 6 кластеров вместо 3:

ic2 = ClusteringComponents[Image@ac, 6];
Image@ic2 // ImageAdjust  

Результат:

enter image description here

и вот пиксельные диапазоны, используемые в каждой ячейке:

Table[{Min@#, Max@#} &@(Take[orig, {#[[1]]}, {#[[2]]}] & /@ 
    Position[clus, n]), {n, 1, 6}]
-> {{0, 11}, {12, 30}, {31, 52}, {53, 85}, {86, 134}, {135, 241}}

и количество пикселей в каждой ячейке:

Table[Count[Flatten@clus, i], {i, 6}]
-> {8906, 4400, 4261, 2850, 1363, 720}

Итак, ответ ДА, и он прост.

Редактировать

Возможно, это поможет вам понять, что вы делаете неправильно в вашем новом примере.

Если я кластеризирую ваше цветное изображение и использую номер кластера для представления яркости, я получу:

enter image description here

Это потому, что кластеры не нумеруются в порядке возрастания яркости.

Но если я вычислю среднее значение яркости для каждого кластера и использую его для представления значения кластера, я получу:

enter image description here

В моем предыдущем примере это было не нужно, но это была просто удача: D (то есть кластеры были найдены в порядке возрастания яркости)

2 голосов
/ 24 марта 2011

K-средства могут быть применены к вашей проблеме. Если бы это был я, я бы сначала попробовал базовый подход, заимствованный из деревьев решений (хотя «проще» зависит от вашего точного алгоритма кластеризации!)

Предположим, что одна ячейка существует, начните вставлять интенсивность пикселей в ячейку. Когда корзина "достаточно заполнена", вычислите среднее значение и стандартное отклонение корзины (или узла). Если стандартное отклонение больше некоторого порога, разделите узел пополам. Продолжайте этот процесс, пока не пройдете все интенсивности, и у вас будет более эффективная гистограмма.

Этот метод может быть улучшен с дополнительными деталями курса:

  1. Вы можете рассмотреть возможность использования куртоза в качестве критерия расщепления.
  2. Для определения места разделения можно использовать асимметрию
  3. Вы можете пройти весь путь до земли дерева решений и позаимствовать индекс Jini для управления расщеплением (некоторые методы расщепления основаны на более «экзотической» статистике, такой как t-критерий).
  4. Наконец, вы можете выполнить последний этап консолидации, чтобы свернуть все малонаселенные узлы.

Конечно, если вы применили все вышеперечисленные "улучшения", то вы в основном реализовали один вариант алгоритма кластеризации k-средних; -)

Примечание: я не согласен с комментарием выше - проблема, которую вы описываете, не выглядит тесно связанной с выравниванием гистограммы.

...