. № 24 (366)
. Июнь 2021 г.
36 Информационные технологии Анализ изображений Алгоритм анализа изображения позволяет получить музы-
кальные характеристики изображения — определить характер
получаемой музыкальной композиции. Для этого, во-первых,
необходимо преобразовать исходное изображение в цветовое
пространство HSV. Это преобразование позволяет легко по-
лучить общую характеристику каждого пикселя из изобра-
жения — оттенок, насыщенность и яркость [3]. Вторая часть
анализа изображения — определение преобладающего цвета.
Преобладающий цвет позволит получить тональность резуль-
тирующей музыкальной композиции. Для этой задачи мы ис-
пользуем алгоритм кластеризации K-средних, поскольку он
имеет следующие преимущества:
— относительно высокая эффективность при простоте реа-
лизации;
— высокое качество кластеризация;
— возможность распараллеливания;
— существование множества модификаций.
Кластеризации K-средних — это неконтролируемый метод об-
учения. Если в образцах наборов данных есть метки, мы предпо-
читаем использовать контролируемый метод, но в реальном мире,
как правило, у нас нет меток, и поэтому мы предпочитаем методы
кластеризации, которые известны как неконтролируемые ме-
тоды. Цель этого алгоритма состоит в том, чтобы найти группы
в данных с количеством групп, представленных переменной K [4].
Алгоритм работает итеративно, чтобы назначить каждую точку
данных одной из K групп на основе предоставленных функций.
Точки данных сгруппированы на основе сходства признаков. Ре-
зультаты алгоритма кластеризации K-средних [5]:
— центроиды кластеров K, которые можно использовать
для маркировки новых данных;
— метки для обучающих данных (каждая точка данных на-
значается одному кластеру).
Сначала считаем данные изображения, используя функцию
cv2.imread из OpenCV. После того, как изображение прочитано
с использованием cv2, наш цветной канал изображения ста-
новится нам Blue-Green-Red. Но мы хотим, чтобы в качестве
цветового канала изображения использовался красный-зеле-
ный-синий, поэтому мы преобразуем его в нужный канал с по-
мощью функции cv2.cvtcolor (). Теперь имеем трехмерные пара-
метры в данных изображения: номер строки X, номер столбца
X и номер цветового канала. Но нам не нужна отдельная инфор-
мация о строках и столбцах. Кроме того, с 3D-матрицей трудно
иметь дело, поэтому мы меняем изображение и делаем его дан-
ными 2D-матрицы. Так как мы будем импортировать K-Means,
мы можем легко использовать его, указав только n_clusters, ко-
торый изначально представляет номер кластера. После этого
будем использовать функцию fit(), чтобы применить алго-
ритм кластеризации K-Means к нашим предварительно обрабо-
танным данным изображения, и результат вернется к объектам
clt. Используем функцию find_histogram(), чтобы ограничить
количество гистограмм желаемым количеством кластеров. По-
скольку нет необходимости находить гистограмму для всех
пикселей и всей цветовой палитры, нужно ограничить ее тре-
буемым количеством кластеров.