Было рассмотрено два случая:
- Изображение с лодкой. Перевод в пространство CIE LAB (необходимое для снижения влияния освещенности на результат классификации) помогает. Видно, особенно для кластеризации по 2 классам, что сегментация работает очень даже неплохо. При разбиении на кратно большее количество кластеров результат должен улучшится, но это требует больших вычислительных мощностей - все-таки, k-means - достаточно ресурсозатратный метод.
- Изображение с цветами. Перевод в пространство CIE LAB плохо сказывается на классификации. Если посмотреть на изображение в цветовом пространстве Lab, заметен розоватый оттенок у всего изображения, что сбивает наш алгоритм с толку. Зато если перевести в HSV - дело пойдет лучше, и результат кластеризации будет более приемлимым. Если к этому добавить сглаживание изображения через cv::medianBlur на этапе предварительной обработки изображения, количество ошибок при классификации уменьшится ещё больше
Результаты:
Все результирующие изображения можно найти в папке: https://github.com/D2J3D/K_means_segmentation/tree/main/kmeans_img/result