V grafických editoroch často nájdeme funkciu, ktorá prevedie plne farebný obrázok alebo fotku na čiernobielu. Zamysleli ste sa niekedy nad tým, ako sa to robí? Ukážeme si tri metódy (určite ich existuje viac) prevádzania farebnej palety na čiernobielu. Možno budete prekvapený, že vaše intuitívne riešenie nebude pre ľudské oko optimálne.
Reprezentácia farieb pomocou RGB
Jednotlivé farby budeme reprezentovať vo formáte RGB (formátov existuje viac: CMYK, HSV, HSL… Vyberáme ten najviac používaný.), to znamená, že každú farbu dokážeme rozložiť do troch zložiek a to do intenzity troch farieb: červenej (Red), zelenej (Green) a modrej (Blue). Tieto tri farby nám stačia na to, aby sme namiešali akúkoľvek farbu. Každá zložka nech nadobúda hodnoty od 0 do 255, kde 0 znamená najmenšiu intenzitu a 255 najväčšiu intenzitu. Tu je ukážka niekoľkých farieb, ako sa dajú zostrojiť v RGB reprezentácii:
- Čierna – R = 0, G = 0, B = 0. Všetky tri zložky majú najmenšiu intenzitu.
- Biela - R = 255, G = 255, B = 255. Ak je intenzita najvyššia, dostaneme bielu farbu.
- Červená – R = 255, G = 0, B = 0.
- Zelená – R = 0, G = 255, B = 0.
- Modrá – R = 0, G = 0, B = 255.
Týmto systémom dokážeme popísať 256 * 256 * 256 = 16 777 216 rôznych farieb.
Čiernobiela paleta
Farby máme definované, pozrime sa na to, aké hodnoty v RGM formáte, má čiernobiela paleta. Neprekvapí nás, že odtiene šedej majú hodnoty všetkých troch zložiek rovnaké. Čiže R = G = B. V nami použitej reprezentácii dokážeme popísať 256 farieb z čiernobielej palety. To je výrazne menej, ako všetkých možných farieb.
Ako previesť farebnú paletu s vyše 16 miliónmi farieb na 256 odtieňov šedej? Predtým, než sa pustíte ďalej do čítania, urobte si malú prestávku a skúste sami navrhnúť prevodovú tabuľku. Tu je zatiaľ fotka, ktorú budeme prevádzať na čiernobielu formu.
Intuitívne riešenie: priemer intenzít
Zrejme ako prvé vás napadlo urobiť priemer intenzít jednotlivých zložiek. Každú farbu s intenzitami R, G a B prevediem nasledovne: Rn, Gn aj Bn budú mať rovnakú hodnotu a to (R + G + B) / 3.
Priemer zložky s najmenšou intenzitou a najvyššou intenzitou
Druhé riešenie zoberie len dve zložky a tie spriemeruje. Vyberie zložku s najnižšou intenzitou a s navjyššou intenzitou: Rn, Gn aj Bn budú mať rovnakú hodnotu a to (MAX(R + G + B) + MIN(R +G + B)) / 2.
Vážený priemer intenzít s najväčšou váhou zelenej zložky
Ľudské oko nevníma všetky tri základné zložky rovnako. Najviac citlivé je na zelenú farbu a najmenej na modrú. Preto pri prevode farieb použijeme priemerovanie, ale jednotlivým farebným zložkám pridelíme iné váhy: Rn, Gn aj Bn budú mať rovnakú hodnotu a to R * 0,21 + G * 0,72 + B * 0,07. Výsledný obrázok je najlepší z tých predchádzajúcich.
Táto metóda sa najčastejšie využíva v grafických programoch. Neznamená to však, že je vždy najvýhodnejšia. Nájdu sa obrázky, pre ktoré je vhodnejšie využiť inú metódu.
Na záver
Pre jednoduchšie porovnanie, tu sú všetky tri čiernobiele obrázky vedľa seba po poradí, ako sme transformácie predstavovali. Ktorý obrázok sa vám najviac páči?