Anti Aliasing Ondej Burkert atrey karlin mff cuni
Anti – Aliasing Ondřej Burkert atrey. karlin. mff. cuni. cz/~ondra/stranka
Úvod Co je to anti - aliasing ? n Aliasing = vznik artefaktů v důsledku podvzorkování při vzorkování (sampling) obrazu n n Anti – aliasing n n podvzorkování = příliš vysoká frekvence dat vzhledem k vzorkovací frekvenci vzorkovací frekvence musí být alespoň 2 x větší než frekvence dat (Shannonův teorém) podvzorkování způsobuje rušivé efekty (jaggies, Moire) metody na odstranění nesrovnalostí způsobených podvzorkování Techniky n no – filter pre - filtering post - filtering n uniformní n Stochastický – Jitter
Techniky n n Pre-filtering n intenzita/barva pixelu se spočítá přes zastoupení jednotlivých segmetů v pixelu váženo plouchou, kterou zabírají n výpočetně náročné Uniformní post-filtering n zvýšení vzorkovací frekvence (rozlišení) n filtrace n rekonstrukce n nevýhody n špatné pro malé objekty n paměťové nároky n problém jen odsunut do vyšší frekvence n výhody n jednoduchá implementace
Stochastický post - filtering n pozice vzorků je náhodně pozměněna (jitter) n lidské oko lépe vnímá šum než aliasing n nevýhody n nefunguje dobře u paralelních výpočtů n výhody n vyšší frekvence nahrazeny šumem n rychlejší
Algoritmy pro kreslení přímky n n n Gupta-Sproull Fujimoto-Iwata Xiaolin Wu
Obecné předpoklady Oba popisované algoritmy předpokládají náležení přímky do prvního oktanu n To se snadno zařídí prostřednicvím symetrií n
Gupta – Sproull (1981) n n n Algoritmus pracuje s konvolučním filtrem tvaru kužele (další varianty krychle, Gaussian) Tvar kužele zvolen, vzhledem k chování CRT monitoru Střed kužele je roven středu počítaného pixelu, intenzita barvy pixelu závisí na ploše průniku kužele a kreslené přímky Ve sloupci jsou 3 pixely Výpočet se urychluje předpočítáním si tabulky hodnot pro jednotlivé druhy průmětů, tabulka je parametrizovaná úhlem a vzdáleností
… n n Algoritmus hodně záleží na volbě velikosti konvolučního filtru a stupňů intenzity Další možné vylepšení: readback n n n Barva pixelu je zohledněna i vzhledem k barvě pozadí a okolních pixelů Řeší rozumně protínání přímek Hodně časově náročné – časté přístupy do paměti
Příklady vlivu nastavení
Wu’s algorithm (1991) n n n Mnohem jednodušší a efektivnější než Gupta-Sproull Založen na úpravě Bresenhamova algoritmu pro kreslení přímky Snadno implementovatelný i hardwarově Používá proměnou určující vzdálenost středu pixelu od středu přímky k určení intenzity/barvy Kreslí místo jednoho pixelu dva, součet intenzity dává jedna Vystačí s operacemi sčítání a bitovými posuny
Nástin algoritmu n n n n n I(x 0, y 0)=I(x 1, y 1)=I; //pocatecni body D=0; d=[k 2^n+0. 5]; //dolni cela část, de facto obdoba DDA algoritmu while (x 0<x 1){ //postupuji z obou stran dokud nedojdu doprostřed x 0+=1; x 1 -=1; D+=d; if (D overflow){ //D presahne mez, posunu linku o pixel nahoru po souradnici y y 0+=1; y 1 -=1; } I(x 0, y 0)=I(x 1, y 1)=D div 2^(n-m); //prvnimu pixelu jeho stupen sedi //n je pocet bitu D, m je pocet stupnu sedi //intenzita je dana m nejvyznamejsimi bity D I(x 0, y 0+1)=I(x 1, y 1 -1)=I(x 0, y 0) doplnek; //druhemu priradim komplement hodnoty prvniho pixelu //I(x, y)=i <=> putpixel(x, y, i) i. . intenzita pixelu }}
Dodatky k algoritmu n n D … diference je reálné číslo s fixní desetinnou čárkou a velikostí rovnou velikosti slova stroje d … posun vzhledem k ose y (posun k x je 1) Konce přímek: v případě neceločíselných hodnot počátku a konce… pomocí poměrného přesahu poslední integerové hodnoty x-ové soořadnice Přímky kratší jednoho pixelu – intenzita určena poměrem délky a velikosti pixelu
Srovnání Gupta-Sproull x Wu n Gupta-Sproull n n Lepší výsledky Přímky jsou trochu rozmazanější Výpočetně náročné (výpočet tabulky) Neošetřuje konce přímek n Wu n n Rychlejší Jednodušší (jen přičtení a bitový posun) Benchmark data: Pentium III 450 Mhz, Visual C++ 6. 0 Release Build, Default Maximum Speed Optimization. . . Algorithm Lines Drawn (x 1000) (s) Lines Per Sec DDA 1600 504. 476 3171. 608 Bresenham 1600 80. 446 19889. 117 Wu 1600 72. 895 21949. 378 EFLA Variation E 1600 63. 801 25077. 97
Využití Oba algoritmy se dají s úspěchem použít i na vykreslování anti-aliasovaných kružnic a elips, pro vykreslování polygonů je třeba algoritmy příslušně upravit. n Při vykreslování na obrazovku se občas používá několik algoritmů a jejich nastavení najednou a postupně se zlepšuje kvalita obrazu n
Oblasti využití n Prakticky ve všech oblastech grafiky n n n Fraktály Renderování polygonů Ray – tracing Mapování textur Video (blur) Temporary antialiasing
Zdroje n n n n Graphic Gems III. , s. 349 -354 Fundamental Algorithms for Computer Graphics, s. 113 -133 Computer Graphics, July 1991 Computer Graphics Techniques, 131 -159 www. whisqu. se/per/docs/graphics 75. html www. herakles. zcu/education/apg_2002_2003/hradek/html/Ali asing. html http: //www. edepot. com/algorithm. html
- Slides: 17