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

Вниз

Сравнение цветов   Найти похожие ветки 

 
Сашенька   (2004-06-08 18:59) [0]

может кто знает какие есть способы обьединения нескольких цветов
по похожести(коэфициент может меняться)


 
Сашенька   (2004-06-11 11:14) [1]

ау


 
Сашенька   (2004-06-11 11:15) [2]

это же не такой и сложный вопрос, просто у меня все идеи кончились


 
Damage ©   (2004-06-11 11:20) [3]

Ну, например, раскладывай цвета на RGB составляющие и вычисляй разницу между каждой составляющей для двух цветов (по модулю).
Потом эти 3 числа, например, складывай - чем меньше результат, тем цвета похожее.


 
Сашенька   (2004-06-11 13:35) [4]

так я делал, группируются только те цвета которые практически идентичны, а при увеличеннии коэфициента в группу попадают не совсем похожие цвета, хотя те которые на глаз похожи тула не попадают.


 
Amoeba ©   (2004-06-11 15:54) [5]

А что есть упоминаемый тобой коэффициент? Как делается группировка?


 
Amoeba ©   (2004-06-11 15:56) [6]

Может кластерный анализ поможет?


 
Сашенька   (2004-06-11 16:19) [7]

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


 
Pipa   (2004-06-11 19:43) [8]

HSL + CMYK


 
Jurijs ©   (2004-06-12 01:44) [9]

Вот кусок кода для сравнения цветов. В принципе, то же, что Damage предлагал.


// This function is only intended to demonstrate the concept of finding the
// "nearest" color from a list.
FUNCTION NearestColor(CONST color:  TColor):  TColor;
 CONST
   ColorList:  ARRAY[0..15] OF TColor =
     (clBlack, clMaroon,  clGreen,  clOlive, clNavy, clPurple,
      clTeal,  clGray,    clSilver, clRed,   clLime, clYellow,
      clBlue,  clFuchsia, clAqua,   clWhite);
 VAR
   DistanceSquared:  INTEGER;
   B1, B2:  INTEGER;
   G1, G2:  INTEGER;
   i:  INTEGER;
   R1, R2:  INTEGER;
   SmallestDistanceSquared:  INTEGER;
BEGIN
 RESULT := clBlack;                       // Assume black is closest color
 SmallestDistanceSquared := 256*256*256;  // Any distance would be shorter
 R1 := GetRValue(color);
 G1 := GetGValue(color);
 B1 := GetBValue(color);
 FOR i := 0 TO High(ColorList) DO
 BEGIN
   R2 := GetRValue(ColorList[i]);
   G2 := GetGValue(ColorList[i]);
   B2 := GetBValue(ColorList[i]);
   DistanceSquared := SQR(R1-R2) + SQR(G1-G2) + SQR(B1-B2);
   IF   DistanceSquared < SmallestDistanceSquared
   THEN BEGIN
     RESULT := ColorList[i];
     SmallestDistanceSquared := DistanceSquared
   END
 END
END {NearestColor};


Взято с http://homepages.borland.com/efg2lab/Library/Delphi/Graphics/Color.htm
Там же можно найти огромное количество информации (уже реализованные алгоритмы на Delphi) по работе с цветом.


 
Сашенька   (2004-06-16 15:21) [10]

спасибо



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

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

Наверх




Память: 0.49 MB
Время: 0.048 c
3-1092146946
Koala
2004-08-10 18:09
2004.09.05
Как записать в поле даты - Null


3-1091974607
VID
2004-08-08 18:16
2004.09.05
Где живёт подробное описание SQL-команд на русском ?


6-1088668648
Prosto Imya
2004-07-01 11:57
2004.09.05
Как отправить файл без сервера


14-1092560966
Кириешки
2004-08-15 13:09
2004.09.05
Посмотрите на мой сайт. Я его только что сделал. Клевый?


6-1088683199
P@vel
2004-07-01 15:59
2004.09.05
Error 10053