• rasterizacija i omekšavanje

    Banožić Luka i Kežman Igor

Rasterizacija

Općenito o rasterizaciji

Ova tema se bavi sa problemom iscrtavanja,tj. prikaza na računalnim zaslonima. Kao što je poznato, postoje mnogi problemi kod iscrtavanja na zaslonu. Zbog toga se pronalaze načini i metode pomoću kojih će se rješiti takvi problemi. Jedan od tih problema je naravno i rasterizacija. Rasterizacija je postupak transformacije kontinuiranih opisa grafičkih primitiva u diskretne opise pomoću piksela. Zato prikaz nekog objekta na zaslonu zahtjeva diskretizaciju kako bi tom objektu dodijelili neki intenzitet.


Kada se na računalu nacrta linija koja je ukošena, ljudsko oko ima osjećaj da je ta linija nazubljena, tj. da nije glatka. To je zbog toga što se linija crta pomoću piksela i zbog toga je potrebna rasterizacija. Kako bi taj osjećaj nestao kod ljudskog oka koriste se posebne metode koje to omogućuju. Jedna od tih metoda je omekšavanje (antialiasing).


Rasterizacija linije

Da bi dobili informacije o linijama, samo postavite pokazivač miša na sliku.

Željena linija

Linija koja se želi prikazati korisniku, kako bi korisnik dobio osjećaj da je linija glatka.

Rasterizirana linija

Rasterizirana linija

Linija koja se dobiva pomoću algoritma.

Bresenhamov postupak

Određuje koje točke rastera trebaju biti osvijetljene kako bi načinili prikaz ravne linije.

Omekšana linija

Procesom omekšavanja linije dobije se linija koja je glatka.

Algoritmi rasterizacije

Iako postoji više metoda i algoritama, ovdje će biti prikazana tri algoritma. Algoritmi omogućuju osvjetljavanje točke rastera kako bi dobili neku liniju. Neki najjednostavniji algoritam biti će prvi prikazan. Drugi algoritam je Bresenhamov postupak, a treći je DDA algoritam (Digitalni diferencijalni analizator).


1. Algoritam

Algoritam čiji je pseudokod slijedeće opisan, je veoma jednostavan. Pseudokod:

                            
                            Za svaki X0 do X1 idu slijedeći koraci:
Y = (Y1-Y0) * (X - X0) / (X1 - X0) + y0
DrawPixel (X, Y)

Kao i svaki drugi algoritam i ovaj algoritam ima svojih mana.


2. Algoritam - Bresenhamov postupak


Ovaj postupak je već definiran, no nije i opisan algoritam ovog postupka. Prema prethodnoj slici koja opisuje postupak, za algoritam je potrebno odabrati cjelobrojne vrijednosti koje odgovaraju središtima piksela V0=(X0,Y0), V1=(X1,Y1);
Ovo je osnovni algoritam:

                            
                            line(x0, x1, y0, y1) { 
int dx = x1 - x0, dy = y1 - y0; // Pretpostavimo da linija nije vertikalna
float dD = abs(dy / (float) dx); // tj. dx != 0
float D = dD – 0.5,
int y = y0;
for (x= x0 to x1) {
crtaj(x,y);
if ( D ≥ 0 ) {
y = y + 1;
D = D - 1.0;
}
D = D + dD;
}
}

3. DDA algoritam (Digitalni diferencijalni analizator)


To je bio mehanički uređaj koji je za diferencijalne jednadžbe davao numerička rješenja.
Osnovna ideja algoritma je:

                            
                            For(X=X1; X<=X2,iX++) {
Y+=m;
crtaj_piksel(X, round(Y), line_color)
}

Treba napomenuti da za svaki Y postoji samo jedan piksel.


Primjer rasterizacije


Ovo je primjer crtanja linije koja je rasterizirana i prikazana tako da se može vidjeti na koji način se linija prikazuje na zaslonu.



Ovaj primjer rasterizacije prikazuje na koji način se može slika rasterizirati.



Izvor ovog primjera!

Omekšavanje


U računalnoj grafici, omekšavanje (eng. anti-aliasing) je softverska tehnika smanjivanja „efekta stepenica“, odnosno linija koje su namijenjene da izgledaju glatko, a izgledaju na neki način kao stepenice. Taj efekt je posljedica rasterizacije, a pojavljuje se zbog ograničenja u rezoluciji za prikaz dovoljno glatke linije. Omekšavanje smanjuje vidljivost „efekta stepenica“ dodavajući „stepenicama“ odgovarajuće nijanse sive boje (ukoliko je riječ o sivim tonovima), ili nijanse u boji (ukoliko je riječ o tonovima u boji).

Iako iscrtavanje linije Bresenhamovim postupkom daje liniju na brz način, ona ne izgleda glatko. Problem je u određivanju koji piksel je potrebno popuniti kod iscrtavanja linije. Taj problem rješava Gupta-Sproull algoritam koji je jako sličan Bresenhamovom postupku, uz neke dodane korake, a računa udaljenost linije i središta piksela, te prilagođava boju ispunjavanja piksela prema toj udaljenosti.


Bresenham.js (preuzeto s: http://members.chello.at/~easyfilter/bresenham.html)

Vaš preglednik ne podržava canvas.

Omekšavanje (Anti-aliasing)

Omekšavanje

Zoom

Točke

(x1, y1):

(x2, y2):

Pozicija miša


0, 0

Zaključak

Mogli bismo reći da je rasterizacija veoma važan pojam kao i omekšavanje, jer bez omekšavanja rasterizacija ne bi imala tolikog smisla u korištenju u današnje vrijeme. Razlog tome je se pomoću rasterizacije prikazuju elementi na zaslon. Pikel po piksel, blok po blok. No, u svemu tome, ljudsko oko vidi nedostatak rasterizacije. Zbog toga tu dolazi na red omekšavanje (antialiasing). Ono dodaje piksele slične boje koji se nalaze uz glavne piksele kako bi ljudsko oko dobilo privid omekšanog (glatkog) elementa. Ovo je bitno u svim područjima koje se odnose na prikazivanje elemenata na zaslon.


Literatura

Prezentacija

Ovdje se može preuzeti prezentacija ovog rada!


Preuzmite prezentaciju

Prezentacija(.pptx)!
Prezentacija(.pdf)!