neděle 1. března 2015

Práce s vrstvama a maskama

Na rozdíl od Photoshopu, když budete pracovat s vrstvama budete psát příkazy přímo do txt souboru a nebude ani moc záležet na pořadí vrstev. Photoshop funguje tak, že když nad jednu vrstvu umístíte jinou vrstvu a dáte ji nějaký blending efekt  (například color) a pak do této vrstvy kreslíte, tak se barvy promítají do spodní vrstvy. Můj program ale nebude pracovat pomocí oken, takže si potřebujete uvědomit jak takové kreslení probíhá nebo jak se to dá realizovat z pohledu programátorského .

Když ve Photoshopu založíte novou vrstvu je to jako byste měli neprůsvitný raster (obraz), který zcela překrývá spodní vrstvu (obraz) ale k této vrstvě ve skutečnosti existuje nějaká maska, kterou nemůžete vidět. Co je to maska už asi víte: je to černobílý obraz. Když založíte novou vrstvu tak maska je černá a to znamená, že nic není ve vrstvě a v masce nakresleného. Když začnete kreslit do nové vrstvy, tak se současně provádí kreslení i do masky. Když uděláte první ťuknutí štětcem, nakreslíte kolečko. Toto kolečko má například hnědou barvu a nakreslí se do vrstvy. Tu vidíte. Ale do masky se nakreslí bílé kolečko. Tak program ví, že jste nakreslili nějaký tvar do obrazu. To co je černé je průsvitné a proto se vám to jeví jakoby kolem kolečka nic nebylo a proto vidíte to co je pod vrstvou.

To co se ve Photoshopu jeví jako pouhé klepnutí štětcem do nové vrstvy, se v mém programu musí udělat složitěji. Připomínám ale, že můj program není na kreslení pomocí nástrojů, ale spíše pro práci s již existujícími fotografiemi, texturami či mapkami. Takže pokud máte fotku na kterém jsou bílé objekty (čtverce, kolečka, atp.) a chcete vytvořit masku, tedy aby zbytek fotky byl průhledný. Musíte nejdříve vybrat barvy. První předpoklad je že takových fotek máte více a že všechny tvary na všech fotkách mají bílou barvu v určitém rozsahu. Musíte tedy nejdříve v nějakém programu, např. ve Photoshopu zjistit jaký barvový rozsah tento objekt či tvar obsahuje. Poté co si zapíšete minimální a maximální hodnoty pro HSV (kanály H,S,V), tyto hodnoty napíšete do txt souboru s barvama do kterého se můj program podívá.

Pak potřebujete vytvořit masky pro každou fotografii. Spustíte program s danými argumenty. Mezi argumenty bude i název toho souboru s barvama. Jakmile program najde soubor, načte vaše definice barev a podle valších argumentů vytvoří masku nebo více masek k danému souboru (ke všem souborům).

Masky se vytváří tak, že program prochází celý obraz a zjišťuje který pixel odpovídá požadavkům na vaše barvy a pak vytváří nový obraz, tj. černobílou masku. Měly by existovat dva typy mask. Jednobitová a osmibitová.

Osmibitová maska (BW 8)
To je obyčejná maska, kde jeden byte může obsahovat 256 hodnot od 0 až po 255, a tudíž kromě černé a bílé může obsahovat i přechody mezi barvama. Technicky vzato program s takovou maskou bude pracovat pomaleji než s jednobitovou maskou. Masku je nejlépe uložit do formátu PNG.

Jednobitová maska (BW 1)
Jednobitová maska obsahuje pouze černou a bílou, jsou to dvě hodnoty. Do jednoho bytu se vleze 128 pixelů. Z toho vyplývá, že obraz masky může být 128x menší než u 8-bit masky. Z programátorského hlediska se s 1-bitovýma maskama pracuje těžko, ale výsledek by měl být velmi rychlý přístup (hlavně pro čtení) k masce. Zpracovávání obrazů které obsahují 1-bitové masky by pak probíhalo mnohonásobně rychleji než u 8-bitových masek (v nejlepším případě 128x rychleji). Jednoduše proto, že při porovnávání mezi maskou a fotografií se čte z masky po 128 pixelech, ne po jednom pixelu. Čím více černé v masce je, tím rychleji porovnávání probíhá. Protože v případě černé masky se neprovádí žádné změny do cílové fotografie, pak je i zpracování úkolu mnohem rychlejší.

Jakmile jsou masky vytvořeny, můžete vytvořit nový příkaz a soubor pro práci s vrstvami, kde si nadefinujete co dělat, jaká maska náleží které vrstvě. Pak spustíte příkaz, který bude obsahovat definici zdrojů a masek. To celé se pak provede a měly byste dostat podobný efekt jako ve Photoshopu.

Samozřejmě to celé zabere spoustu času, včetně pochopení jak program funguje, takže se nevyplatí dělat to kvůli 10 ti fotografiím. Ale kvůli 10.000 ba 100.000 fotografiím se to už vyplatí.

Žádné komentáře:

Okomentovat