Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.28;
Скачать: CL | DM;

Вниз

Цветовая задачка.   Найти похожие ветки 

 
Radionov Alexey ©   (2003-07-11 07:26) [0]

Для желающих размяться предлагаю одну практическую задачу, с которой я недавно столкнулся и которая оказалась довольно нетривиальной.
Итак: Задано некоторое натуральное число N. Необходимо в пр-ве RGB найти N максимально отличающихся (контрастных) друг от друга цветов фиксированной интенсивности (если угодно - яркости).


 
Думкин ©   (2003-07-11 07:58) [1]

1. Каую метрику вводим для контрастности?
2. Что значит максимально? Сумма растояний между всеми парами максимальна?
3. Про интенсивность подробнее.


 
Radionov Alexey ©   (2003-07-11 08:07) [2]

>Думкин © (11.07.03 07:58)

1. Метрика евклидова. Про "контрастность" становится ясно после прочтения 2.
2. Максимально возможное расстояние между двумя ближайшими точками.
3. Интенсивность здесь - евклидово расстояние от начала координат (от черного цвета)


 
Думкин ©   (2003-07-11 08:15) [3]

Задача не всегда имеет решение. Пространство дискретно.
Количество точек с заданной интенсивностью конечно. Соответственно N точек может и не найтись.


 
Radionov Alexey ©   (2003-07-11 08:21) [4]

>Думкин © (11.07.03 08:15)
Сорри, пр-во считаем непрерывным ;) Обычное R^3


 
Думкин ©   (2003-07-11 08:29) [5]

Хорошо.
А тогда работаем и с отрицательными значениями или как?


 
SergP ©   (2003-07-11 08:37) [6]

Думаю все же нужно определиться что такое контрастность и что такое интенсивность.

2 Radionov Alexey
что ты считаешь интенсивностью:
Y=R+G+B,
Y=sqrt(R*R+G*G+B*B)
или что-то другое, типа Y=a*R+b*G+c*B ?

и насчет контрастности:
как ее считать:
K=abs(R1-R2)+abs(G1-G2)+ABS(B1-B2) или по другому?


 
Radionov Alexey ©   (2003-07-11 08:37) [7]

>Думкин © (11.07.03 08:29)
В принципе, запрета нет. Но если рассматривать естественные ограничения (единичный куб (после нормирования RGB куба) пересеченный сферой) - то отрицательные значения как-то не приходят на ум.


 
Думкин ©   (2003-07-11 08:45) [8]

SergP © (11.07.03 08:37)
Это он уже указал. Второй вариант.

Radionov Alexey © (11.07.03 08:37)
Приходить - не приходят, но раз уж дискретность побоку, то почему бы и нет? :-)


 
MBo ©   (2003-07-11 08:46) [9]

HSL-пространство не подойдет?


 
Radionov Alexey ©   (2003-07-11 08:46) [10]

>SergP © (11.07.03 08:37)
Я уже писал, что метрика евклидова.
То есть
Y=sqrt(R*R+G*G+B*B)
K=sqrt(sqr(R1-R2)+sqr(G1-G2)+Sqr(B1-B2))


 
Radionov Alexey ©   (2003-07-11 08:53) [11]

>MBo © (11.07.03 08:46)
В принципе, подойдет. Ведь оно однозначно в RGB преобразуется. Так что переходить к другой системе координат можно, только все-таки хорошо бы обратный переход "домой" сделать:)


 
MBo ©   (2003-07-11 08:59) [12]

В RGB-пространстве у тебя есть кривая поверхность равной яркости.
В HSL H-оттенок от 0 до 1 или от 0 до 240, S - насыщенность, L- яркость. Если цветовой куб в этой системе построить, то задача в плоскость переходит, находим в ней цвета - полагаю, гексагональная сетка - плотнейшая, затем переводим найденные значения обратно в RGB


 
Думкин ©   (2003-07-11 09:01) [13]

MBo © (11.07.03 08:59)
А при этом сохранится условие по контрастности?


 
Radionov Alexey ©   (2003-07-11 09:05) [14]

>MBo © (11.07.03 08:59)
Борис, если не ошибаюсь, HSL - это куб, "поставленный на вершину". То есть преобразование линейное и сфера не перейдет в плоскость. Или я неправильного мнения об HSL?


 
MBo ©   (2003-07-11 09:36) [15]

http://www.iro.umontreal.ca/~ostrom/publications/pdf/Scottsdale97_LEF.pdf

http://diwww.epfl.ch/w3lsp/pub/publications/colour/scdialcs_.pdf

http://www.sapdesignguild.org/resources/glossary_color/index1.html#cs_lab

http://www.normankoren.com/color_management.html

http://perlhorizons.com/article_images/manning/graphicsprogrammingwithperl-chap01.pdf

http://www.neuro.sfc.keio.ac.jp/~aly/polygon/info/color-space-faq.html



 
MBo ©   (2003-07-11 10:11) [16]

http://www.efg2.com/Lab/Library/Color/Science.htm

разделы contrast и differences
особенно ссылки XRite и по CIE-модели


 
Катерина ©   (2003-07-11 16:02) [17]

Если перевести задачу в R^3, то на 1/8 сферы радиуса "интенсивность", x,y,z >= 0 (сферический треугольник), надо найти точки в кол-ве N, ближайшие из которых равноудалены друг от друга на максимальное расстояние (контрастность).
Мое решение таково:
1. Найти ровно N точек не всегда получится. Определим k так, чтобы N <= 1+2+3+...+k+(k+1), причем k - минимальное. Именно столько точек и получится.
2. Разобьем каждую сторону треугольника на к равных частей и проведем из этих точек дуги, "параллельные" сторонам треугольника. Координаты (x,y,z) точек пересений дуг друг с другом и со сторонами треугольника (а их будет 1+2+3+...+k+(k+1)) и будут удовлетворять заднным условиям.



Страницы: 1 вся ветка

Текущий архив: 2003.07.28;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.01 c
3-91625
Step[B.M.]
2003-06-28 09:29
2003.07.28
Хранимая процедура для InterBase. Help.


3-91694
ruslan
2003-07-02 16:02
2003.07.28
TQuery


3-91622
Step[B.M.]
2003-07-04 08:57
2003.07.28
Триггер InterBase


14-91898
MatrixX
2003-07-11 20:08
2003.07.28
Зависание Win2k при установке.


4-91945
Spider
2003-05-24 16:52
2003.07.28
Как придать объекту свойства саption panel?