Za pocetak pogledaj sajt [url]http://www.gamedev.net/reference/articles/article2007.asp[/url]
Pokusacu da ti dam ideju kako rade filteri i efekti koji se koriste kako u PS tako i u drugim programima za obradu slike.
Brightness/Contrast:
Brightness dodaje na sva tri kanala konstantan offset
Code:
R += offset;
G += offset;
B += offset;
Clamp( R, G, B );
gde je Clamp funkcija koja vrednosti kanala ogranicava od 0.0-1.0 ili 0-255
Contrast:
linearna funkcija prenosa
Code:
R = (R - 128)*contrastFactor + 128;
G = (G - 128)*contrastFactor + 128;
B = (B - 128)*contrastFactor + 128;
Clamp( R, G, B );
Inverzija slike
Code:
R = 255 - R;
G = 255 - G;
B = 255 - B;
Posterizacija:
Code:
R = int(R/(255.0f/(float)N))*int(255.0f/(float)N)
...
Kako rade razni blurovi, "izostravanja", detekcije ivica mozes da vidis ako u PS pozoves Filte/Other/Custom...
Npr. za blur unesi u sredisnja polja vrednost
1 1 1
1 1 1
1 1 1
a u scale 9
Filter se ponasa kao integrator - centralni pixel racuna tako da izracuna srenju vrednost okolnih boja.
Algoritmi kolor transformacija su opisani npr. na [url]http://www.cvl.iis.u-tokyo.ac.jp/~miyazaki/tech/teche01.html[/url]
Medijan filter (po secanju:) ) radi tako sto matricu 3x3 piksela (primer za gray scale) sortira u niz od 9 vrednosti v[0]-v[9] i kao rezultat filtriranja uzme vrednost v[4]. Ovaj filter je idealan za otklanjanje "salt-paper" suma.
Ekvivalizacija histograma radi tako sto se napravi histogram slike (primer za gray scale) i napravi se takva prenosna funkcija koja daje sto je moguce ravniji histogram slike (na ovaj nacin se dobije max. kontrastna slika)
Raznim transformacijama koordinata piksela postizu se efekti distorzije slike. Npr. twirl se dobije tako sto posmatraju sfericne koordinate slike (polozaj piksela odredjen uglom i udaljenoscu od centra slike). Uzme se piksel sa polosaja (r, alpha) i preslika se na piksel (r, scaleCoef*r*alpha). Naravno, bolji se rezultati dobiju ako se koristi interpolacija (bilo linearna ili bilinearna ili ....)
Ili, da bi se dobio efekat slican kao refrakcija slike kroz sferu moze se koristiti transformacija (r,alpha)->(sqrt(r), alpha)
...