Посмотрите на два изображения Тони Старка ниже. Правая выглядит как постеризованная версия левой, верно? И что круто, этот эффект был достигнут с помощью Machine Learning: алгоритма кластеризации scikit-learn.

Недавно я возился с KMeans Clustering и нашел очень классный способ постеризации (своего рода) любого изображения. Я покажу вам, что я имею в виду и как в этой статье.

Я использовал алгоритм кластеризации KMeans для кластеризации пикселей цветового канала RGB с использованием разных значений K.

Во-первых, давайте начнем с импорта необходимых библиотек. Я использовал:

  • numpy: для различных операций с массивом.
  • KMeans от sklearn: основная управляющая библиотека
  • matplotlib & seaborn : для чтения изображения из файла в массив и для отображения изображения

Теперь импортируйте любое изображение, которое хотите импортировать. Я использовал образ Железного человека, вы можете выбрать любой. Но помните, чем выше разрешение изображения, которое вы используете, тем больше времени потребуется для работы алгоритма кластеризации.

Прочитав изображение, я создал переменную img_flat.

img_flatпреобразует массив изображений в массив, состоящий из его аналогов RGB, т. е. преобразовываетизображение в таблицу, в которой каждый пиксель находится в строке. столбец представляет красный, зеленый и синий каналы.

Теперь выберите размер n_clusters. Я выбрал 8, вы можете выбрать и любое другое число. После его выбора мы помещаем наш объект KMeans в нашу переменную img_flat.

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

И вуаля! Изображение выглядит так, как будто оно было постеризовано.

Это в этой статье. Надеюсь, вам понравится!

Дополнительные примеры по кластеризации KNN см. в моей записной книжке здесь: https://www.kaggle.com/code/arnavr10880/knn-clustering или

проверьте код на github:

https://github.com/arnavrneo/ML-codes/blob/main/Clustering/KMeans/code1.py