Я немного застрял в разработке системы распознавания цвета - я не могу придумать, как легко это сделать.
-
По сути, у меня есть библиотека изображений, которую я хочу отсортировать по цвету. Поэтому, если пользователь указывает «сортировать по синему», в верхней части результатов отображаются самые синие изображения, а в нижней части - наименее синий.
Проблема в том, что изображения не все одного цвета, поэтому он делает две вещи одновременно:
1 - поиск самой синей части изображения
2 - ранжирование этого синего цвета (на основе оттенка цвета и количества этого цвета).
Я пробовал около 3 или 4 разных подходов с разными результатами - хотя ни один из них не работал хорошо, и 2 из них были довольно математическими алгоритмами (которые все работают намного лучше на бумаге, чем на практике, ха-ха).
-
Какими разными путями я мог бы пройти весь процесс? Я, вероятно, упускаю некоторые действительно очевидные способы, которыми это могло бы работать - любая помощь или идеи очень ценились бы:)
-
РЕДАКТИРОВАТЬ: Спасибо за все ответы - вот что я попробовал до сих пор:
получение среднего значения rgb для всего изображения и сравнение его с синим. Сравнение проводилось с использованием нормализованных пространственных векторов rgb 3 и нахождения расстояний между ними. Это работает наименее хорошо, изображение без синего может легко появиться над изображением с частичным очень сильным синим.
нахождение доминирующего цвета и сравнение его с синим (снова с использованием 3 пространственных векторных расстояний). Это не сработало, так как, возможно, была большая синяя часть изображения, которая не была самой (или в верхней паре) доминирующих цветовых срезов.
поиск пикселей, близких к синему, усреднение всех этих значений и сравнение ответа с фактическим синим.
найти все пиксели, близкие к синему, увеличить счетчик и найти процент на основе количества / общего количества пикселей.