Výpočet rozdílu barev

hjkl

Výpočet rozdílu barev
« kdy: 27. 03. 2014, 01:03:15 »
Zdravím. Dejme tomu, že mám například barvu #289bd6 a potřebuju nějak automaticky zjistit, kterýma funkcema pro úpravu barev to mám prohnat, abych z ní dostal #289ad6. Stačí mě nějak postrčit - kód v libovolném jazyce, pseudokód, odkaz na teorii, cokoliv. Díky.
« Poslední změna: 27. 03. 2014, 15:41:50 od Petr Krčmář »


fdvgdsfsda

Re:Rozdíl barev
« Odpověď #1 kdy: 27. 03. 2014, 07:00:35 »
no tak ja bych rekl, ze proste projdes vsechny data obrazku, budes nacitat obrazek pomoci nejake knihovny, ktera ti zpristupni RGB slozky kazdeho pixelu a kdyz najdes svoji hodnotu R==neco, G==neco, B==neco tak to nahradis novymi hodnotami RGB a ulozis treba jako novy soubor.

3ugeene

Re:Rozdíl barev
« Odpověď #2 kdy: 27. 03. 2014, 09:53:34 »
No, tak si tu původní barvu rozložím na RGB:

r=28 g=9b b=d6


a pak je to normální matematika, ne?

r=28 g=9b b=d6
r=28 g=9a b=d6
-------------------
r=00 g=01  b=00


tzn musíš od původní barvy odečíst jedničku v části zelené barvy?

hjkl

Re:Rozdíl barev
« Odpověď #3 kdy: 27. 03. 2014, 09:55:44 »
Díky za odpověď, ale nejedná se o úpravu obrázku ani o nahrazení jedné barvy druhou. Mám návrh UI, ve kterém je hodně odstínů modré a chci přidat možnost zvolit si místo modré třeba oranžovou nebo šedou. Takže potřebuju mít jednu výchozí barvu, ze které se ostatní odstíny dopočítají. No a není mi úplně jasné jak na to, s barvami jsem ještě nějak moc nepracoval.

Jirka1

Re:Rozdíl barev
« Odpověď #4 kdy: 27. 03. 2014, 10:11:24 »
Tohle nemá žádné jednoznačné řešení, je to otázka intuitivnosti rozhraní. Pro barvy se nejčastěji používá volba na základě HLS systému. Barvu definujete pomocí odstínu (hue) a dál nastavujete její jas (light) a sytost (saturation). Podívejte se třeba na výběr barvy v Gimpu, kde je použito HLS i RGB.


k1k1n

Re:Rozdíl barev
« Odpověď #5 kdy: 27. 03. 2014, 10:13:42 »
pokud to chápu správně tak, že máte např. modré UI s pěti odstíny modré a chcete červené UI s pěti odstíny červené posunuté podobně, jako byly ty odstíny modré od základní modré, tak bych k tomu přistoupil jako k třírozměrnému vektoru, a jiné odstíny dělal jako kolmice k tomu původnímu modrému odstínu...
př: máš základní odstín modré - kolmý k němu je odstín červené, potom trochu jiný odstín modré a kolmý k němu bude trochu jiný odstín červené...

případně základní odstíny k sobě nemusí být kolmé, ale posunuté o jiný úhel...

...

Re:Rozdíl barev
« Odpověď #6 kdy: 27. 03. 2014, 11:14:25 »
k barevne teorii je jedna vyborna aplikace pod widle. vyberes barvy ktery uz mas a ona ti zobrazi na barvy, ktere s ni "ladi". tech metod/schemat ktere ladi je pomerne hodne a v podstate jde o matematiku - doplnky, zlomky odstinu a podobne. jen ji najit... v gui to bylo radek nadepsany jmenem schematu podle ktereho barvy k sobe ladi a pod jmenem na radku barevna policka vedle sebe. je to paradni na interierovy design, kdyz mas par kousku a vymyslis co vsechno za varianty k nim bude pasovat. ukladalo se to souboru s koncovkou cs nebo cc. takze bud color schema chooser nebo color chooser nebo tak neco.

jedno z tech mnoha schemat ma implementovany i afterstep nebo kterasi jeho knihovna asimage mozna. nejaky menu style helper nebo chooser ci jak se to jmenuje. byla to mrnava aplikacka ktera zobrazi jen vnoreny a prekryvajici obdelniky s titulkem. vyberes hlavni barvu a dopocita ostatni a pak jen cyklis na kterou cast dialogoveho okna se pouzije.

a na ten uplny zaklad uz tu informace mas. jde jen o prevody mezi barevnymi prostory a ktery prostor povazujes za "nejpouzitelnejsi" a to se dost lisi podle uzivatelskeho navyku. ono najit nejsytejsi cervenou/zelenou/modrou v HLS je skoro nadlidsky vykon. (rgb FF0000, 00FF00, 0000FF)

...

Re:Rozdíl barev
« Odpověď #7 kdy: 27. 03. 2014, 11:18:35 »

cezanne

Re:Rozdíl barev
« Odpověď #8 kdy: 27. 03. 2014, 11:46:46 »
Díky za odpověď, ale nejedná se o úpravu obrázku ani o nahrazení jedné barvy druhou. Mám návrh UI, ve kterém je hodně odstínů modré a chci přidat možnost zvolit si místo modré třeba oranžovou nebo šedou. Takže potřebuju mít jednu výchozí barvu, ze které se ostatní odstíny dopočítají. No a není mi úplně jasné jak na to, s barvami jsem ještě nějak moc nepracoval.
Je dobré vedieť, že ľudské oko nevníma farebné rozdiely lineárne. Rovnaký číselný rozdiel medzi dvoma farbami pôsobí inak pri svetlých a inak pri tmavých farbách.

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Výpočet rozdílu barev
« Odpověď #9 kdy: 27. 03. 2014, 15:57:47 »
Take mam pocit, ze ne na kazdou barevnou slozku z RGB je lidske oko stejne citlive - dalsi nelinearita.

PetrP

Re:Výpočet rozdílu barev
« Odpověď #10 kdy: 27. 03. 2014, 19:44:48 »
A každé oko je nakonec jinak citlivé. Dneska jsme shodou okolností řešili problém (ne v počítači), že zákazník chce béžovou, ale ta co mu nabízíme je pro něj příliš zelená, on by ji chtěl červenější. On to vidí tu barvu jako příliš zelenou, jeden náš spolupracovník také, jiný kolega to vidí příliš červené a objektivní měření barevnosti proti předloze to také vyhodnotí, že je to moc červené. Ale on, zákazník, to vnímá jako příliš zelené a chce to přebarvit. (Celou dobu opravdu mluvím o béžové barvě)

Jenda

Re:Rozdíl barev
« Odpověď #11 kdy: 27. 03. 2014, 22:35:08 »
pokud to chápu správně tak, že máte např. modré UI s pěti odstíny modré a chcete červené UI s pěti odstíny červené posunuté podobně, jako byly ty odstíny modré od základní modré, tak bych k tomu přistoupil jako k třírozměrnému vektoru, a jiné odstíny dělal jako kolmice k tomu původnímu modrému odstínu...
Počítání s vektorem se složkama (R,G,B) nejspíš dopadne dost hnusně. Převedl bych si to na nějaký prostor, kde je zvlášť barva, saturace a jas (HSV) a točil jenom s barvou.

Re:Výpočet rozdílu barev
« Odpověď #12 kdy: 28. 03. 2014, 19:36:16 »
Já bych doporučil se podívat na http://colorschemedesigner.com/. Petr Staníček ( aka Pixy ) vyrobil generátor barevných schémat, který určitě stojí za to aspoň vyzkoušet.