Я могу захватывать значения цветов RGB с фотографии, но я хочу иметь возможность программно определять, является ли этот цвет значением красного, оранжевого, желтого, зеленого, синего, фиолетового, желто-коричневого, белого или черного.
Поэтому мне нужно указать диапазоны RGB, которые будут возвращать, например, значение красного ... или синего ... и так далее. Сейчас у меня есть что-то подобное, но оно не включает все возможные варианты RGB.
КРАСНЫЙ
R = 255, G <= 102, B = 0
R = 255, G = 0, B <= 150
ОРАНЖЕВЫЙ И ЖЕЛТЫЙ
R = 255, G> = 108 & ‹= 252, B = 0
R = 240, G = 255, B = 0
и так далее...
Кто-нибудь знает, как взять ЛЮБОЕ значение RGB и определить, является ли оно значением красного, оранжевого, желтого, зеленого, синего, фиолетового, желто-коричневого, белого или черного?
Ответ 2 · Ivaylo Strandjev
Я думаю, что эта классификация зависит от человека. Например, для многих моих друзей-мужчин (я среди них) есть только несколько цветов (красный, синий, зеленый, желтый), в то время как у многих моих подруг-девушек есть по крайней мере 20 слов для обозначения розового. Даже если мы игнорируем это и решаем придерживаться меньшего числа ценностей, мы часто ссоримся, если что-то красное или коричневое, или что-то пурпурное или розовое. Если люди не могут дать однозначный ответ, вы не сможете научить этому компьютер.
При этом ваша проблема на самом деле является алгоритмом кластеризации / классификации, и есть много алгоритмов для ее решения. Я бы порекомендовал использовать какую-либо нейронную сеть (например, backpropagation с 3 входными нейронами - для красного, зеленого и синего). Тем не менее, вам понадобится много примеров - например, укажите цвета и их классификацию (это синий цвет и т. Д.). Даже если вы решите использовать другой алгоритм, вам все равно потребуется предоставить обучающий набор - набор примеров, которые вы уже классифицировали, и чем больше примеров будет в этом наборе, тем лучше будет классификация.
Ответ 3 · Nicolas
Это сложно решить даже людям. Я бы просто увидел значение rgb как трехмерную цветовую комнату. Просто укажите несколько цветов (красный: 255, 0, 0, ...) и скажите, что все на евклидовом расстоянии x одного цвета.
расстояние (красный, цвет) = sqrt ((red.r - color.r) ^ 2 + (red.g - color.g) ^ 2 + (red.b - color.b) ^ 2)
Или просто измерьте все расстояния и получите самое короткое в цвете.