Я написал компьютерную программу, которая может обнаруживать монеты в статическом изображении (.jpeg, .png и т. Д.), Используя некоторые стандартные методы для компьютерного зрения (размытие по Гауссу, определение порога, преобразование Хафа и т. Д.). Используя соотношения монет, взятых из данного изображения, я могу с уверенностью установить, какие монеты какие. Тем не менее, я хочу добавить к своим уровням уверенности, а также определить, имеет ли монета, которую я выводил, типа A (из отношения радиусов), также правильное colo [u] r. Проблема в том, что для британских монет и соавт. (медь, серебро, золото), соответствующие цвета (особенно от меди до золота) очень похожи.
У меня есть подпрограмма, которая извлекает средний цвет данной монеты в терминах «цветового пространства» RedGreenBlue (RGB) и подпрограмм для преобразования этого цвета в «цветовое пространство» HueSaturationBrightness (HSB или HSV).
С RGB не очень приятно работать, пытаясь провести различие между тремя цветами монет (см. Пример на прикрепленном [базовом] изображении). У меня есть следующие диапазоны и типичные значения для цветов разных типов монет:
Примечание: типичное значение здесь выбирается с использованием среднего значения реального изображения по пикселям.
**Copper RGB/HSB:** typicalRGB = (153, 117, 89)/(26, 0.42, 0.60).
**Silver RGB/HSB:** typicalRGB = (174, 176, 180)/(220, 0.03, 0.71).
**Gold RGB/HSB:** typicalRGB = (220, 205, 160)/(45, 0.27, 0.86)
Сначала я попытался использовать «евклидово расстояние» между заданным средним цветом монеты (используя RGB) и типичными значениями для каждого типа монет, приведенными выше, рассматривая значения RGB как вектор; для меди у нас будет:
где наименьшее значение разности ( ) говорит нам, какой тип данной монеты, скорее всего, будет. Этот метод показал себя очень неточным.
Я также попытался просто сравнить оттенок монет с типичными значениями типов, приведенных выше. Хотя теоретически это обеспечивает гораздо лучшее «цветовое пространство» для работы с изменяющимися уровнями яркости и насыщенности изображений, оно также было недостаточно точным.
Вопрос: Каков наилучший метод определения типа монет по цвету (из статического изображения)?
Большое спасибо за ваше время.
Редактировать 1
Примечание: я испробовал все идеи, обсуждаемые ниже, и почти ничего не достиг. Различия в условиях освещения (даже в пределах одного изображения) делают эту проблему очень сложной и должны быть приняты во внимание.
Редактировать 2 (Итоги)
Спасибо за ответ. Дальнейшее мое собственное исследование (включая ваши ответы и комментарии) выявило, насколько сложна эта проблема в общем случае произвольного освещения, произвольной камеры (мобильного устройства), колебаний цвета монет (даже для одного вида / типа). и т. д. Я впервые посмотрел на распознавание цвета кожи (очень активная область исследований) в качестве отправной точки, и до сих пор существует множество проблем даже с распознаванием цвета кожи только для кавказцев (см. эту статью для обзора современных методов), и тот факт, что эта проблема содержит три различных цветовых объекта, каждый из которых может иметь непрерывную и изменяющуюся цветность, делает эту тему компьютерного зрения очень трудной для классификации и решения соответственно (на самом деле вы могли бы получить хорошую степень доктора философии по ней !).
Я посмотрел на метод ограничения гаммы из очень полезного поста DW ниже. На первый взгляд это было очень многообещающе в качестве этапа предварительной обработки для преобразования изображения и отдельных монетных объектов в цвета, независимые от условий освещения. Тем не менее, даже этот метод не работает идеально (и включает в себя библиотеку изображений / гистограмм для отображений - в которые я не хочу входить), а также не делает гораздо более сложные методологии архитектуры нейронной сети. На самом деле эта статья в абстрактном виде утверждает, что:
"current machine colour constancy algorithms are not good enough for colour-based
object recognition.".
Это не значит, что на эту тему не так много актуальных статей, но я не могу их найти, и в настоящее время эта область исследований не очень активна.
Ответ на АВБ был также полезным , и я посмотрел в L B * кратко.
"The nonlinear relations for L*, a*, and b* are intended to mimic the nonlinear
response of the eye. Furthermore, uniform changes of components in the L*a*b* colour
space aim to correspond to uniform changes in perceived colour, so the relative
perceptual differences between any two colours in L*a*b* can be approximated by
treating each colour as a point in a three dimensional space."
Из того, что я прочитал, преобразование в это цветовое пространство для моих зависимых от устройства изображений будет сложным, но я рассмотрю это подробно (с целью некоторой реализации), когда у меня будет немного больше времени.
Я не задерживаю дыхание, чтобы найти конкретное решение этой проблемы, и после попытки с L A B * я буду пренебрегать цветом монет и стараюсь проверить свои текущие алгоритмы геометрического обнаружения (точное эллиптическое преобразование Хафа и т. Д.).
Спасибо вам всем. И в завершение к этому вопросу, вот то же изображение с новым геометрическим алгоритмом обнаружения, который не имеет распознавания цвета: