घर
Top.Mail.Ru Yandeks.Metrika
मंच: "मीडिया";
वर्तमान संग्रह: 2004.03.03;
डाउनलोड करें: [xml.tar.bz2];

नीचे

फूलों के बीच की दूरी इसी तरह की शाखाएँ खोजें


Borealis   (2003-10-23 12:21) [0]

По каким формулам можно посчитать расстояние между цветами (или как это правильно называется?)?
На битмапе нужно выделить область с некоторым цветом с определённым допуском, для этого нужно уметь подсчитывать расстояние между цветами от контрольного цвета до цвета очередного пиксела. Тогда проверить входит ли цвет пиксела в допустимый диапазон или нет - задача тривиальная.



MBo   (2003-10-23 12:32) [1]

1) допуск по каждой цветовой составляющей - выделить их GetRvalue и т.п.
2) расстояние в цветовом пространстве - так же, как в обычной геометрии - корень из суммы квадратов разностей составляющих (корень можно и не извлекать)



Borealis   (2003-10-23 13:01) [2]


> MBo © (23.10.03 12: 32) [1]
> 1) допуск по каждой цветовой составляющей - выделить их
> GetRvalue и т.п.
> 2) расстояние в цветовом пространстве - так же, как в обычной
> геометрии - корень из суммы квадратов разностей составляющих
> (корень можно и не извлекать)

Я тоже в первую очередь подумал об этой формуле. А как насчёт коэффициентов? Мне нужно чтобы было близко к человеческому восприятию.
Например преобразование к серому градиенту производится не по формуле:
(GetRValue(RGBColor) + GetGValue(RGBColor) + GetBValue(RGBColor ))/3, как следовало бы ожидать, а по формуле:
0.30 * GetRValue(RGBColor) + 0.59 * GetGValue(RGBColor) + 0.11 * GetBValue(RGBColor )



MBo   (2003-10-23 13:09) [3]

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



Borealis   (2003-10-23 13:31) [4]


> MBo © (23.10.03 13: 09) [3]
> >было близко к человеческому восприятию.
> возможно, тогда будет лучше сравнивать в HSV или HSL пространстве.
> можно и поэкспериментировать с указанными коэффициентами.

Насчёт HSL это идея. Нужно будет попробовать. А что такое HSV?



MBo   (2003-10-23 14:13) [5]

Покопайся на www.efg2.com



miek   (2003-10-23 20:18) [6]

Математически точная формула:
D := SQRT ( SQR (R2-R1)+SQR (G2-G1)+SQR (B2-B1))



CMPXCHG8   (2003-10-28 22:24) [7]

Как такового расстояния между "цветами" нет, потому что цветовая модель RGB не совсем корректна для отображения.
Допустим описываем чистый цвет Red = RGB(255,0,0) и белый - (255,255,255) - если вести расчет как предложено - то "расстояние" между ними велико, хотя на самом деле яркость Red такая же, как и у чистого белого,отличается только уровень Saturation (смешения) Лучший способ оценки - цветовая модель HSV.
Пиши на hotfix@rambler.ru, я как раз заканчиваю программу для обработки фотографий и накопал довольно прилично.



miek   (2003-10-28 23:55) [8]

2CMPXCHB: Пример неверный, но в общем абсолютно правильно. В KOL вообще ближайший цвет выбирается как логической расстояние, т.е. RGB1 XOR RGB2



Думкин   (2003-10-29 07:12) [9]


> miek © (28.10.03 23:55) [8]
> 2CMPXCHB: Пример неверный, но в общем абсолютно правильно

Это как? Переведи.



cmpxchg8   (2003-10-29 09:43) [10]

2miek - это смотря как понимать



Sapersky   (2003-10-29 09:55) [11]

Можно ещё YUV, если нужно сделать сравнение независимым от яркости (сравниваем U и V, Y выбрасываем). Строго математически оно, наверное, некорректно, но преобразование в YUV делается быстрее, чем в HSV (впрочем, если кто-нибудь предложит быструю формулу перевода в HSV...)



miek   (2003-10-29 23:45) [12]

2CMPXCHG, Думкин: Поясняю. То, что расстояние между цветами можно и нужно по-разному считать, это верно,
То, что RGB (255,0,0) и (255,255,255) это одно и то же - неверно. Вторая точка ровно втрое ярче. Как цветной монитор работает - представляете?



cmpxchg8   (2003-10-30 22:53) [13]

2Sapesky Быстро - даже очень быстро на SSE (asm)
2miek неверно, вывод на монитор и оценка цвета - две разные вещи



Asteroid   (2003-10-30 23:43) [14]

> miek © (29.10.03 23:45) [12]
Не-а, не втрое. Восприятие яркости отличается для разных цветов.



miek   (2003-10-31 00:04) [15]

Я и говорил не про восприятие, а про физическую яркость. Восприятие вообще вещь субъективная. А так - втрое, именно втрое.
Три точки в триаде (пикселе) освещены тремя электронными пушками, интенсивность складывается.

2Cmpxchg: Автор темы спрашивал про реальный пример из жизни, по этому не надо путать. Ему предстоит на мониторе все показывать, или как кто себе это представляет???



cmpxchg8   (2003-10-31 23:18) [16]

2all конкретный ответ:// Не в качестве сентенции или поучения
Речь идет по-видимому об инструменте наподобие Magic Wand
Во первых надобно учесть, что практически все модели цветов нелинейны во всех отношениях.
Оценивать разность цветов надо
1. по тону - наиболее важно
2. по степени смешения
3. по яркости
कुछ इस तरह:
// Функция вычисления разности углов, поелику значение HUE - евто угол от 0 до 360
abstract function AngleDiff(Angle1,Angle2)
//Нормализуем углы
while Angle1<0 do Inc(Angle1,360);
while Angle1>=360 do Dec(Angle1,360);
while Angle2<0 do Inc(Angle2,360);
while Angle2>=360 do Dec(Angle2,360);
if Angle1>Angle2 then Result:=Angle1-Angle2
else Result:=Angle2-Angle1;
//Нормализуем результат, угол должен быть наименьшим
if Result>180 then Result:=360-Result;

abstract function ColorDiff(Color1,Color2:TRGB)
HSV1,HSV2: THSV;
HSV1:=RGBtoHSV(Color1);
HSV2:=RGBtoHSV(Color2);
Result:=AngleDiff(HSV1.Hue-HSV2.Hue)*
Hyp(HSV1.Sat-HSV2.Sat,
HSV1.Value-HSV2.Value);

Может быть я и ошибаюсь, но приведенный пример я использую в своих разработках, единственно я оптимизировал его по вычислениям и переложил на asm.
Если у Вас есть лучшее решение предложите.
С уважением, всегда признающий себя чайником, CMPXCHG8.
P.S. Определение яркости цветового сигнала по коэфициентам не совсем корректно - эта весчь принята на вооружении в телевидении и енти самые коэффициенты были подобраны методом статистического опроса людей, хотя при конвертировании цветной фотографии в черно-белую иногда даже очень подходят



पन्ने: 1 पूरी शाखा

मंच: "मीडिया";
वर्तमान संग्रह: 2004.03.03;
डाउनलोड करें: [xml.tar.bz2];

ऊपर





मेमोरी: 0.61 एमबी
समय: 0.049 c
1-6068
TUser
2004-02-21 15:34
2004.03.03
आँकड़े


3-5939
_yuzer_
2004-02-06 16:39
2004.03.03
तालिका xxx उपयोग में है


3-5965
ज़ाइलॉग
2004-02-05 16:23
2004.03.03
F1 ग्रिट करता है कि TGridDrawState क्लासेस मॉड्यूल में रहता है।


14-6182
माखनदेव ए.एस.
2004-02-12 11:01
2004.03.03
TDWebBrowserEvents बनाम ServiceApplication ...


1-6035
Kair
2004-02-19 08:05
2004.03.03
संदेश





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский