Re[6]: Поиск ближайшего цвета
От: AcidTheProgrammer Россия https://hts.tv/
Дата: 24.01.05 16:31
Оценка: 6 (2)
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Reunion, Вы писали:


R>>Есть голубой1 (170, 196, 200). В палитре есть серый (200, 200, 200) и голубой2 (197, 255, 249).


R>>(170-197)*(170-197)+(196-255)*(196-255)+(200-249)*(200-249) = 6611

R>>(170-200)*(170-200)+(196-200)*(196-200)+(200-200)*(200-200) = 916

R>>голубой1 меняется на серый, а не на голубой2. А мне надо наоборот...

WH>Ну знаешь на мой субъективный взгляд голубой1 гораздо ближе к серому чем к голуботму2

А к Васиному — голубой2
И если чтисто математически, то да?
Но ... есть физика — МОЗАЙКА, и задание, это уже совсем другое. Я так понял человек, хочет, чтоб голубой оставался голубым, пусть даже по яркости это не правда...

Поэтому и придумали HLS которая блище к среднестатистическому ощущению цвета человеком.

ГРУБО оцениваем:
H = 90
L = (min + max) / 2
S = max — min

Голубой 1
H 90
L (200 + 170) / 2 = 185
S 30

Cерый
H — вообще не определен
L (200 + 200) / 2 = 200
S 0

Голубой 2
H 90
L (249 + 197) / 2 = 223
S 52

тут и ежу становится понятно, что второй голубой ближе чем серый.
Re[2]: Поиск ближайшего цвета
От: Аноним  
Дата: 24.01.05 17:54
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Попробуй квадратичную метрику в пространстве HSL.


У данной НЕ линейной метрики (она же HSV, HSB если мне память не изменяет) недостаток заключается в том, что она становится неустойчивой при малом значении L. Вообщем надо быть осторожным. К сожалению нет метрики (кроме разве что интегральной), которая бы могла устроить всех, а все из-за попытки представить интегральную природу света проекциями на 3-4 оси цветового пространства. Совет во-первых почитать про различные цветовые пространства и метрики растояний для этих пространств, а также порыться в гугле по: color reduction, color segmentation, k-means color clustering. Сам работаю над алгоритмом сегментации цветных изображений и редукции цветов — статей много.
Re: Поиск ближайшего цвета
От: _JoKe_  
Дата: 24.01.05 18:44
Оценка:
Здравствуйте, Reunion, Вы писали:

R>Всем привет!


R>Есть картинка — из нее берется пиксель (x, y). Есть набор цветов. Надо для пикселя (x, y) найти наиболее похожий для глаза цвет из данного набора.

R>В интернете я нашел следующую функцию оценки похожести цветов: f = 30 * (rp — ri) * (rp — ri) + 59 * (gp — gi) * (gp — gi) * 11 * (bp — bi) * (bp — bi), где rp, gp и bp — цвет пикселя, ri, gi и bi — цвет из таблицы цветов. НО это бред! Мы ведь не интенсивность должны сравнивать. Точнее, наверное будет сказать, не только интенсивность!
R>Народ, подскажите как быть в данной ситуации.

R>Заранее спасибо.


можно представлять цвет RGB как координаты в трехметном пространстве тогда считая расстояние между двумя точками (цветами) где оно меньше там и цвет больше похож.
... << RSDN@Home 1.1.4 @@subversion >>
Re[2]: Поиск ближайшего цвета
От: ansi  
Дата: 25.01.05 00:41
Оценка:
Здравствуйте, _JoKe_, Вы писали:

_JK>можно представлять цвет RGB как координаты в трехметном пространстве тогда считая расстояние между двумя точками (цветами) где оно меньше там и цвет больше похож.


Именно это человека и не устраивает. Я уже говорил, что нужно искать не минимальное расстояние между двумя точками, а минимальное расстояние между точкой и прямой, соединяющей начало координат и точку исходного цвета. Мысль понятна?
Re: Поиск ближайшего цвета
От: McSeem2 США http://www.antigrain.com
Дата: 25.01.05 01:15
Оценка: 49 (3)
Здравствуйте, Reunion, Вы писали:

R>НО это бред! Мы ведь не интенсивность должны сравнивать. Точнее, наверное будет сказать, не только интенсивность!

R>Народ, подскажите как быть в данной ситуации.

Здесь сравнивается не инетенсивность, здесь вычисляется расстояние между цветами в RGB-кубе. Да, именно расстояние, в манхеттенской метрике, причем, с учетом коэффиентов по осям RGB. Декартово расстояние требует вычисления квадратного корня из суммы квадратов (возможно, тоже взвешенных). Здесь все зависит от того, в каком RGB-пространстве мы работаем. Есть физически линейное пространство, и есть перцептуально линейное. В первом считается, что интенсивность пропорциональна R+B+G, следовательно, везде используются Manhattan Distances. Во втором — интенсивность пропопорциональна длине вектора (0,0,0)->(R,G,B), то есть используется Cartesian Distances. Все это мне очень грамотно объяснили в этой ветке: http://www.rsdn.ru/Forum/Message.aspx?mid=695821
Автор: McSeem2
Дата: 26.06.04


Общий итог: http://www.rsdn.ru/Forum/Message.aspx?mid=701951&amp;only=1
Автор: McSeem2
Дата: 01.07.04
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[7]: Поиск ближайшего цвета
От: Reunion  
Дата: 25.01.05 05:34
Оценка:
Здравствуйте, AcidTheProgrammer, Вы писали:

ATP>Поэтому и придумали HLS которая блище к среднестатистическому ощущению цвета человеком.


ATP>ГРУБО оцениваем:

ATP>H = 90
ATP>L = (min + max) / 2
ATP>S = max — min

ATP>Голубой 1

ATP>H 90
ATP>L (200 + 170) / 2 = 185
ATP>S 30

ATP>Cерый

ATP>H — вообще не определен
ATP>L (200 + 200) / 2 = 200
ATP>S 0

ATP>Голубой 2

ATP>H 90
ATP>L (249 + 197) / 2 = 223
ATP>S 52

ATP>тут и ежу становится понятно, что второй голубой ближе чем серый.


Это больше похоже на правду — по крайней мере в формулах. Сегодня попробую. А пока вот вопрос: какую оценочную функцию брать? И значение "вообще не определен" за что принимать?
Re[8]: Поиск ближайшего цвета
От: AcidTheProgrammer Россия https://hts.tv/
Дата: 25.01.05 08:47
Оценка: 3 (1)
Здравствуйте, Reunion, Вы писали:

R>Здравствуйте, AcidTheProgrammer, Вы писали:


ATP>>Поэтому и придумали HLS которая блище к среднестатистическому ощущению цвета человеком.


ATP>>ГРУБО оцениваем:

ATP>>H = 90
ATP>>L = (min + max) / 2
ATP>>S = max — min

ATP>>Голубой 1

ATP>>H 90
ATP>>L (200 + 170) / 2 = 185
ATP>>S 30

ATP>>Cерый

ATP>>H — вообще не определен
ATP>>L (200 + 200) / 2 = 200
ATP>>S 0

ATP>>Голубой 2

ATP>>H 90
ATP>>L (249 + 197) / 2 = 223
ATP>>S 52

ATP>>тут и ежу становится понятно, что второй голубой ближе чем серый.


R>Это больше похоже на правду — по крайней мере в формулах. Сегодня попробую. А пока вот вопрос: какую оценочную функцию брать?


Попробуйте ту же самую...

R>И значение "вообще не определен" за что принимать?


Ну по логике за любое.... тоесть понятьно что абсолютно серый, не отдает ни в красный, ни в желтый, и не вообще не в один из цветов....
Следовательно скорее так;

Если в искомом цвете тоже неопределен H, то искать только среди цветов в таблице, в которых также не определен H
Если определен — то искать среди цветов с опредленным H.
Re: Поиск ближайшего цвета
От: DoС  
Дата: 25.01.05 10:19
Оценка:
Здравствуйте, Reunion, Вы писали:

R>Надо для пикселя (x, y) найти наиболее похожий для глаза цвет из данного набора.

Посмотрите на алгоритм сжатия JPEG. может оттуда можно взять какие-нить формулы.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re: Поиск ближайшего цвета
От: Reunion  
Дата: 27.01.05 05:29
Оценка:
Всем привет!

Большое спасибо всем за помощь и ценные советы!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.