Так что проблема в том, что трудно определить, что такое «красный». Дело не только в том, что разные люди имеют разные определения, разные культуры также оказывают влияние (некоторые культуры не рассматривают красный и желтый как разные цвета. Фактически, по крайней мере, одна племенная культура, которая все еще присутствует сегодня, не может назвать цвета. См. https://www.sapiens.org/language/color-perception/) о том, что мы думаем о цветах. Таким образом, это всегда выгодное предложение.
Одна простая вещь, которую вы можете сделать, это просто сделать алгоритм наименьшей разницы. Имейте набор эталонных цветов и посмотрите, какая из них имеет наименьшую дельту между ним и цветом, который вы ищете. Затем относитесь к нему как к эталонному цвету. Это будет работать - вроде. Если в вашем наборе достаточно цветов, чтобы не зайти слишком далеко.
Это будет только вид работы, хотя rgb на самом деле не одинаково различимы для человеческого глаза, и некоторые различия имеют большее значение, чем другие - его нелинейность. Разница в 10 в зеленом важнее, чем в красном. Разница в 10 в диапазоне [0,20] может быть более или менее резкой, чем разница в 10 в диапазоне [100,120]. Если вам нужно, чтобы это работало действительно хорошо, вам, возможно, придется поговорить с кем-то, кто изучал цвет и как работает человеческий глаз, чтобы придумать собственный алгоритм. Давным-давно поработав над принтерами, у нас были команды экспертов, разрабатывающих определение цифровых цветов для чернил. Здесь то же самое.