Application of fuzzy c-means clustering algorithm for image segmentation

封面

如何引用文章

全文:

详细

Application of fuzzy clustering algorithm with с-means for image analysis is considered in this article. A software implementation of the algorithm in C# is provided.

全文:

Введение. Разбиение изображения на однородные области является ключевым элементом компьютерного (технического) зрения. Для этих целей могут быть использованы методы кластерного анализа, так как они позволяют осуществить сегментацию пикселей на основе сходства по цвету или уровня интенсивности серого.

В работе приведена программная реализация сегментации цветного изображения методом с-means, относящегося к методам «мягкой» кластеризации и позволяющего более точно вычислить принадлежность элемента кластеру. Этот алгоритм успешно используется для кластеризации изображений и неконтролируемой сегментации медицинских, геологических, спутниковых изображений и т.п. [1].

Описание алгоритма. Нечеткий алгоритм кластеризации с-means был разработан (для случая m=2) J. C. Dunn в 1973 г. и усовершенствован (для случая m>2) J. C. Bezdek в 1981 г. Данный метод предполагает, что входные данные могут принадлежать более чем одному кластеру одновременно, то есть первоначально для каждого вектора, описывающего исследуемый объект, случайным образом определяется вероятность принадлежности заданным кластерам. Алгоритм получает на входе набор кластеризуемых векторов, количество кластеров, коэффициент неопределенности и коэффициент > 0, определяющий точность алгоритма. Затем запускается итерационный процесс, состоящий в выполнении следующей последовательности действий: 1) расчет центров кластеров; 2) расчет расстояния от каждого вектора до центра каждого кластера; 3) расчет и нормализация коэффициентов принадлежности векторов кластерам; 4) расчет значения матрицы нечеткого разбиения и сравнение этого значения со значением матрицы нечеткого разбиения на предшествующей итерации. На выходе получают матрицу вероятностей принадлежности каждого входного вектора каждому кластеру.

Таким образом, нечеткий алгоритм c-means минимизирует величину

i=1Xj=1Cui,jmxicj2,  1m, (1)

где m∈ R, ui,j – коэффициент принадлежности вектора xi кластеру cj, xi i-ый компонент |X|-мерного вектора X, C – количество кластеров, cj – центр j-ого кластера, а || ∗ ||– норма, определяющая расстояние от вектора до центра кластера. Нечеткое разбиение входных данных на кластеры производится итеративной оптимизацией функции (1), пересчетом коэффициентов принадлежности ui,j и переопределением центров кластеров cj. [2]

Вычисляемые величины. На каждой итерации вычисляются следующие величины.

  1. Центры кластеров:

cj=i=1nui,jmxii=1nui,jm, (2)

где ui,j – коэффициент принадлежности xi вектора к кластеру cj.

  1. Коэффициент принадлежности:

ui,j=1i=1nxicjxick2m1. (3)

  1. Решающая функция:

maxui,jkui,jk1, (4)

где k – номер итерации алгоритма.

4.Проверка завершения итерационного процесса.

Реализация алгоритма. Далее приведена программная реализация алгоритма с-means для сегментации цветных изображений на языке С# в программной среде VisualStudio 2017 [3].

Графический интерфейс представлен на рисунке 1. Для загрузки сегментируемого изображения предусмотрено меню «File».

 

Рис. 1. Графический интерфейс.

 

Параметры, доступные для изменения, приведены в правой верхней части интерфейса программы – это количество кластеров, максимальное количество итераций и точность.

При активации «Fuzzy C-means Clustering» запускается процесс создания точечных объектов кластера для каждого пикселя изображения (см. код, приведенный ниже).

 

List<ClusterPoint> points = new List<ClusterPoint>();

for (int row = 0; row < originalImage.Width; ++row)

{

for (int col = 0; col < originalImage.Height; ++col)

{

Color c2 = originalImage.GetPixel(row, col);

points.Add(new ClusterPoint(row, col, c2));

}

}

 

Затем создается заданное количество «ClusterCentroid» объектов кластера. Центры кластеров (или центроиды) на первой итерации выбираются случайным образом и корректируются алгоритмом (см. код).

 

List<ClusterCentroid> centroids = newList<ClusterCentroid>();

//Create random points to use a the cluster centroids

Random random = new Random();

for (int i = 0; i < numClusters; i++)

{

int randomNumber1 = random.Next(sourceImage.Width);

int randomNumber2 = random.Next(sourceImage.Height); centroids.Add(new ClusterCentroid(randomNumber1,randomNumber2,

filteredImage.GetPixel(randomNumber1, randomNumber2)));

}

 

Далее создается FCM-объект и запускаются итерации (см. код).

 

FCM alg = new FCM(points, centroids, 2, filteredImage,(int)numericUpDown2.Value);

k++;

alg.J = alg.CalculateObjectiveFunction();

alg.CalculateClusterCentroids();

alg.Step();

double Jnew = alg.CalculateObjectiveFunction();

Console.WriteLine("Run method i={0} accuracy = {1} delta={2}",

k, alg.J, Math.Abs(alg.J - Jnew));

backgroundWorker.ReportProgress((100 * k) / maxIterations, "Iteration " + k);

if (Math.Abs(alg.J - Jnew) < accuracy) break;

 

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

Для тестового примера было выбрано изображение, представленное на рисунке 2. Сегментация осуществлялась на 2 кластера.

 

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

 

Результирующее изображение представлено на рисунке 3.

 

Рис.3. Результат выполнения алгоритма.

×

作者简介

D. Kurbatov

编辑信件的主要联系方式.
Email: ogarevonline@yandex.ru

D. Egorova

Email: ogarevonline@yandex.ru

参考

  1. Jain A. K. Data clustering: 50 years beyond K-means // Pattern Recognition Letters. – 2010. – Vol. 31. – Р. 651–666.
  2. Барсегян А. А., Куприянов М. С., Холод И. И., Тесс М. Д., Елизаров С. И. Анализ данных и процессов: учеб. пособие / под ред. А. А. Барсегян. – 3-е изд., перераб. и доп. – СПб.: БХВ–Петербург, 2009. – 512 с.
  3. Gauge C. Cluster analysis [Электронный ресурс]. – Режим доступа: https://ru.scribd.com (дата обращения 08.05.2019).

补充文件

附件文件
动作
1. JATS XML
2. Fig. 1. Graphical interface.

下载 (23KB)
3. Fig. 2. Original image.

下载 (13KB)
4. Fig.3. Result of the algorithm execution.

下载 (7KB)

Мы используем файлы cookies, сервис веб-аналитики Яндекс.Метрика для улучшения работы сайта и удобства его использования. Продолжая пользоваться сайтом, вы подтверждаете, что были об этом проинформированы и согласны с нашими правилами обработки персональных данных.

Согласие на обработку персональных данных с помощью сервиса «Яндекс.Метрика»

1. Я (далее – «Пользователь» или «Субъект персональных данных»), осуществляя использование сайта https://journals.rcsi.science/ (далее – «Сайт»), подтверждая свою полную дееспособность даю согласие на обработку персональных данных с использованием средств автоматизации Оператору - федеральному государственному бюджетному учреждению «Российский центр научной информации» (РЦНИ), далее – «Оператор», расположенному по адресу: 119991, г. Москва, Ленинский просп., д.32А, со следующими условиями.

2. Категории обрабатываемых данных: файлы «cookies» (куки-файлы). Файлы «cookie» – это небольшой текстовый файл, который веб-сервер может хранить в браузере Пользователя. Данные файлы веб-сервер загружает на устройство Пользователя при посещении им Сайта. При каждом следующем посещении Пользователем Сайта «cookie» файлы отправляются на Сайт Оператора. Данные файлы позволяют Сайту распознавать устройство Пользователя. Содержимое такого файла может как относиться, так и не относиться к персональным данным, в зависимости от того, содержит ли такой файл персональные данные или содержит обезличенные технические данные.

3. Цель обработки персональных данных: анализ пользовательской активности с помощью сервиса «Яндекс.Метрика».

4. Категории субъектов персональных данных: все Пользователи Сайта, которые дали согласие на обработку файлов «cookie».

5. Способы обработки: сбор, запись, систематизация, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передача (доступ, предоставление), блокирование, удаление, уничтожение персональных данных.

6. Срок обработки и хранения: до получения от Субъекта персональных данных требования о прекращении обработки/отзыва согласия.

7. Способ отзыва: заявление об отзыве в письменном виде путём его направления на адрес электронной почты Оператора: info@rcsi.science или путем письменного обращения по юридическому адресу: 119991, г. Москва, Ленинский просп., д.32А

8. Субъект персональных данных вправе запретить своему оборудованию прием этих данных или ограничить прием этих данных. При отказе от получения таких данных или при ограничении приема данных некоторые функции Сайта могут работать некорректно. Субъект персональных данных обязуется сам настроить свое оборудование таким способом, чтобы оно обеспечивало адекватный его желаниям режим работы и уровень защиты данных файлов «cookie», Оператор не предоставляет технологических и правовых консультаций на темы подобного характера.

9. Порядок уничтожения персональных данных при достижении цели их обработки или при наступлении иных законных оснований определяется Оператором в соответствии с законодательством Российской Федерации.

10. Я согласен/согласна квалифицировать в качестве своей простой электронной подписи под настоящим Согласием и под Политикой обработки персональных данных выполнение мною следующего действия на сайте: https://journals.rcsi.science/ нажатие мною на интерфейсе с текстом: «Сайт использует сервис «Яндекс.Метрика» (который использует файлы «cookie») на элемент с текстом «Принять и продолжить».