Вместо порогового значения вы можете рассмотреть кластеризацию.
В качестве быстрого и грязного теста я увеличил яркость изображения в пространстве HSB (используя Mathematica):
BrightAdjusted = Image [Map [# ^ {1, 1, 0.2}&, ImageData [ColorConvert [img, "HSB"]], {2}], ColorSpace -> "HSB"]
![enter image description here](https://i.stack.imgur.com/XJJIx.jpg)
Тогда я использовал простойK-ближайшая кластеризация:
(cluster = ClusteringComponents [ColorConvert [brightAdjusted, "RGB"], 3, метод -> "KMeans"]) // Colorize
![enter image description here](https://i.stack.imgur.com/9C4my.jpg)
, чтобы найти кластеры схожих цветов на изображении (есть еще много, возможно, более подходящих алгоритмов кластеризации, поэтому вам следует немного поэкспериментировать).Тогда я могу просто настроить цвет в одном из кластеров:
Image [MapThread [If [# 1 == 2, # 2 [[{1, 3, 2}]], # 2] &, {cluster, ImageData [brightAdjusted]}, 2]]
![enter image description here](https://i.stack.imgur.com/oDL8n.jpg)
Если вы хотите использовать пороговое значение, вам, вероятно, следует использовать цвет CIEпространство , поскольку евклидовы расстояния в этом цветовом пространстве ближе к человеческому восприятию.