Сходство цветов - PullRequest
       17

Сходство цветов

4 голосов
/ 24 июля 2009

Я пишу программу, которая работает с изображениями, и в какой-то момент мне нужно постеризовать изображение. Это означает, что мне нужно связать цвета, но у меня возникают проблемы с решением, как определить, насколько близок один цвет к другому.

Учитывая цвет в RGB, я могу придумать как минимум 2 способа увидеть, какони разные:

  1. | r1 - r2 |+ | g1 - g2 |+ | b1 - b2 |
  2. sqrt ((r1 - r2) ^ 2 + (g1 - g2) ^ 2 + (b1 - b2) ^ 2)

И если яперейдя в HSV, я могу придумать другие способы сделать это.

Поэтому я спрашиваю, не обращая внимания на скорость, как лучше всего определить, насколько похожи два цвета? Лучшее значение, наиболее точное для человеческого глаза.

Ответы [ 3 ]

1 голос
/ 24 июля 2009

Что ж, если скорость не является проблемой, наиболее точным способом было бы взять некоторые образцы изображений и применить к ним фильтр, используя различные значения отсечки для расстояния (расстояние определяется одним из уравнений на странице Color_difference, котораяastander связан со значением, означающим, что вам придется использовать одно из этих цветовых пространств, перечисленных там, с вычислениями, а затем преобразовать в sRGB или что-то еще [что также означает, что вам нужно сначала преобразовать изображение в другое цветовое пространство, если это не такначнем с]), а затем попросите большое количество людей изучить изображения, чтобы увидеть, что для них выглядит лучше, а затем перейдите к значению отсечения для изображений, которые, по мнению большинства, выглядят лучше всего.

В основномэто в значительной степени вопрос субъективности;на самом деле, это также зависит от того, насколько стилизованы вы хотите изображения, и вы можете даже захотеть добавить какой-то элемент управления, чтобы вы могли изменить расстояние отсечки на лету.

Если скорость делает становится проблемой, и / или вы хотите больше простоты, а затем просто используйте свой второй выбор для расчета расстояния (это просто уравнение CIE76; просто убедитесь, что вы используете L a b *цветовое пространство) с отсечкой около 2 или 2,3.

0 голосов
/ 29 января 2016

Просто комментарий, если вы собираетесь перейти на HSV (или аналогичные пробелы):

  • Различается по H: разница между 0 ° и 359 ° численно велика, но воспринимается незначительно,

  • Разница H, если V или S маленькие - мала.

  • Для приложений компьютерного зрения важнее разница не в восприятии (используется в основномпроизводители краски) но относятся ли эти цвета к одному объекту / сегменту или нет. Это означает, что мы можем частично игнорировать V, что может измениться от условий освещения.

0 голосов
/ 24 июля 2009

Что вы подразумеваете под «постеризацией изображения»?

Если вы пытаетесь объединить цвета в ячейки, вам следует взглянуть на кластерный анализ

...