Promiňte, nezdůraznil jsem, že se jedná pouze o matematický aparát pro určení "průhlednosti na daném místě". Nevím, jak řešíte ostatní filtry - zkuste napsat, jak máte třeba řešen lineární filtr a můžeme to zkusit dát nějak dohromady (netuším, jakým způsobem řešíte filtrování ve své aplikaci, jestli využíváte transformačních matic, zamykáte bitmapu v paměti nebo jak s tím dál pracujete (těch způsobů je opravdu hodně). Jinak já svým příspěvkem toliko rozvíjel odpověď kolegy, který Vás odkázal na Pythagora a nějaké umocňování, tak jsem Vám ten postup zkonkretizoval. Napsal jsem to "do programu" jenom z toho důvodu, že mi to připadalo čitelnější, než popisovat matematický vzorec v textu. Ale opět pro příklad (prakticky to nemá význam, protože by to bylo šíleně pomalé, ale mělo by to fungovat), tak, jak je to napsáno, by se to mělo dát použít tím způsobem, že: - obrázek si načtete ve formátu, který má pro každý pixel i gama hodnotu - vše, co jsem napsal (vyjma X, Y,a gama) dáte (pro jednoduchost) jako globální proměnné, nebo to celé uděláte jako třídu a pak z toho uděláte veřejnou vlastnost, kterou na začátku nastavíte - zbytek kódu dáte do funkce, kde vstupem budou hodnoty X a Y, funkce bude vracet hodnotu gama - pak projdete (cyklem X a vnořeným cyklem Y) celý obrázek pixel po pixelu a pro každý nastavíte hodnotu gama (vrátí Vám ji na základě konkrétních X a Y ta Vaše funkce) - no a vykreslíte s akceptováním hodnot gama Ještě jednou podotýkám, jedná se pouze o matematický aparát a zřejmě touto cestou by to nebylo prakticky použitelné, ale pokud byste třeba použil metodu uzamknutí bitmapy v paměti, pak by rychlost mohla být dostačující a přitom byste postupoval vlastně dost podobně). Ale to už se točím v kruhu, nejlépe bude, napíšete-li, jak řešíte ostatní filtry a zjistíme, dá-li se na to naroubovat i tento postup.
|