1 / 37

Antialiasing parzialmente tratto da: Han-Wei Shen

Corso Di Programmazione Grafica aa2005/2006. Antialiasing parzialmente tratto da: Han-Wei Shen. Daniele Marini. Cos’è un alias?. Alias - In telecomunicazione un falso segnale dovuto a interferenza tra frequenza del segnale e frequenza di campionamento

hal
Download Presentation

Antialiasing parzialmente tratto da: Han-Wei Shen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Corso Di Programmazione Grafica aa2005/2006 Antialiasingparzialmente tratto da: Han-Wei Shen Daniele Marini

  2. Cos’è un alias? • Alias - In telecomunicazione un falso segnale dovuto a interferenza tra frequenza del segnale e frequenza di campionamento • aliasing c’è ovunque in computer graphics poichè il rendering è un processo di campionamento • Esempi: • linee a dente di sega (jagged lines) • false tramature di texture (moirée) Programmazione Grafica aa2005/2006

  3. Aliasing spaziale di linee e di texture • Osserviamo aliasing sia su singole linee o bordi (denti di sega) sia su texture (moirée) Programmazione Grafica aa2005/2006

  4. Aliasing temporale • Si osserva aliasing anche in sequenze di immagini: Programmazione Grafica aa2005/2006

  5. Il rendering è un processo di campionamento Programmazione Grafica aa2005/2006

  6. Il rendering è un processo di campionamento rendere una curva Programmazione Grafica aa2005/2006

  7. Veloce rassegna di campionamento di segnali • Due passi nella rappresentazione digitale di un segnale: campionamento e ricostruzione • Campionamento: da segnale continuo a campioni discreti • Ricostruzione: dai valori discreti al segnale continuo • Aliasing può derivare da entrambi i passaggi Programmazione Grafica aa2005/2006

  8. Alias provocato da sotto-campionamento • una ruota sembra girare in senso inverso Osserva solo a 1/4 della frequenza problema di sotto campionamento Programmazione Grafica aa2005/2006

  9. segnale effettivo segnale campionato Alias provocato da sotto-campionamento • segnale 1D Programmazione Grafica aa2005/2006

  10. Alias provocato da sotto-campionamento • segnale 2d: moirée aliasing moderato aliasing più forte Programmazione Grafica aa2005/2006

  11. f=1 rpm Se aumentiamo la frequenza di campionamento? 1 campione per rivoluzione 1 < campione/rivoluzione < 2 2 campioni/rivoluzione > 2 campioni/rivoluzione Programmazione Grafica aa2005/2006

  12. Quanto basta? • qual’è la giusta frequenza di campionamento? • teorema del campionamento (o limite di Nyquist) - la frequenza di campionamento deve essere almeno doppia della massima frequenza del segnale due campioni in questo periodo Programmazione Grafica aa2005/2006

  13. Si può evitare totalmente aliasing • Dato il limite di Nyquist ? • In realtà no – la frequenza massima potrebbe essere infinita, segnale non limitato in banda • La maggior parte delle scene grafiche non sono bandlimited: bordi netti non possono mai venire campionati correttamente in modo digitale (point sampling) • Come si può correggere o limitare l’aliasing? Programmazione Grafica aa2005/2006

  14. Ricostruzione • Dopo aver campionato (idealmente) in modo corretto, dobbiamo ricostruire il segnale continuo • Si procede usando filtri di ricostruzione Programmazione Grafica aa2005/2006

  15. Filtri di ricostruzione • Filtri più comuni: Filtro a tenda Box Sinc = sin(px)/px Programmazione Grafica aa2005/2006

  16. Box • Molto semplice ma non molto buono • Si chiama anche nearest neighbor Programmazione Grafica aa2005/2006

  17. Lineare Filtro triangolare • Basato su interpolazione lineare. Migliore ma ancora non smooth 32x32 Nearest neighbor Programmazione Grafica aa2005/2006

  18. Sinc • Filtro passa basso ideale: nearestneighbor lineare bicubica Programmazione Grafica aa2005/2006

  19. Ricampionamento • Allargare o ridurre il segnale • Supponiamo che i campioni siano a intervalli unitari: 0,1,2,3,4,… • Ricampionare in modo che la loro distanza valga a • a< 1 produce magnification • a>1 produce minification Programmazione Grafica aa2005/2006

  20. Ri-campionamento • Minification e Magnification – ricampiona il segnale a risoluzioni diverse Minification Magnification (in questo caso la minificazione è stata fatta male) Programmazione Grafica aa2005/2006

  21. Magnification • facile da usare, ricampiona in modo semplice il segnale da ricostruire Segnale ricostruito Ricampionamento a frequenza doppia del segnale ricostruito Programmazione Grafica aa2005/2006

  22. Minification • Raddoppiamo la distanza tra i campioni • Si ha un effetto di sfocatura Programmazione Grafica aa2005/2006

  23. Minification • Più difficile • La frequenza del segnale è troppo alta per evitare aliasing • Soluzioni possibili: • Accresci l’ampiezza del filtro passa basso del filtro ideale sinc - sfoca l’immagine • Prima sfoca l’immagine (con qualunque metodo), poi ricampionala Programmazione Grafica aa2005/2006

  24. Tecniche di Antialiasing in tempo reale • Tecniche pratiche usate in hardware grafico • Lavorano nello spazio schermo Programmazione Grafica aa2005/2006

  25. Algoritmi basati su spazio schermo • Approccio comune: campiona più fittamente la scena e calcola la media (sovracampionamento) • È più difficile: i bordi hanno infinite frequenze idea risultato Programmazione Grafica aa2005/2006

  26. Differenti schemi di sovracampionamento • Formula comune: c(i,x,y): colore del campione i per pixel(x,y); wi: peso Diversi schemi di sovracampionamento Programmazione Grafica aa2005/2006

  27. Campionamento perturbato (Jittered) • Il campionamneot regolare non può eliminare l’aliasing, può solo ridurlo! • Perché ? • Poiché i bordi richiedono la presenza di alte frequenze infinite • Jittering rimpiazza l’aliasnig con rumore • Si usa nel ray tracing • Esempio: Programmazione Grafica aa2005/2006

  28. Tecniche di multicampionamneto con A-buffer • Prende >1 campione / pixel, suddivide la computazione tra campioni entro il pixel • Lighting • Texturing • Fattori di forza: aliasing dei bordi e accurato trattamento della trasparenza Programmazione Grafica aa2005/2006

  29. A-buffer • Per trattare meglio i bordi si usa una maschera di ricoprimento per pixel • La maschera di ricoprimento, la profondità e il colore costituiscono un fragment • Durante il rendering i fragment possono esser scartati quando possibile (test di profondità) • Quando tutti i poligoni sono stati resi, i fragment vengono fusi in un solo colore visibile • Costa in memoria! Programmazione Grafica aa2005/2006

  30. Multicampionamento: Quincunx • Genera 2 campioni per pixel • w1=0.5, w2=0.125, w3=0.125, w4=0.125, w5=0.125 (filtro triangolare 2D ) • Tutti i pixel producono lo stesso effetto sull’immagine (pixel di centro= 0.5, pixel d’angolo = 4*0.125=0.5) Programmazione Grafica aa2005/2006

  31. Quincunx • Fatti prestare qualcosa dal vicino • Qualità comparabile al metodo 4x a metà del costo Programmazione Grafica aa2005/2006

  32. FLIPQUAD • Pesi: 0.25 per campione • Si comporta meglio di Quincunx Programmazione Grafica aa2005/2006

  33. OGSS RGSS FSAA (full screen anti-aliasing) • Rendi la scena a una risoluzione molto più alta poi fanne la media • Nvidia GeForce 2: usa ordered grid supersampling (OGSS) • 3dfx voodo 5: rotated grid supersampling (RGSS) – elimina meglio alias • 2x or 4x: numero di subpixels per ciascun pixel • Costoso: l’intera scena può dover essere resa più volte! Programmazione Grafica aa2005/2006

  34. Multisampling AA • Nvidia GeForce3 – per accrescere performance • 2x RGSS e 4x OGSS • Non si inviano più texture per subpixels – usa la stessa texture di colore per i subpixels • Usata solo sui pixel di contorno – GPU ha più intelligenza (è la maggiore differenza dal sovra campionamento) Programmazione Grafica aa2005/2006

  35. Confronto 4X - Quincunx 4X FSAA 4X Quincunx Programmazione Grafica aa2005/2006

  36. Jittering: ATI - SMOOTHVISIONTM • usa un pattern di campionamento jittered • Ogni pixel ha (2x, 4x, 8x) locazioni di campionamneto alternative pre-programmate, jittered. • Pseudo-random-look (La visione umana è meno sensibile a configurazioni di campionamento casuali) Possibili locazioni per SMOOTHVISION 4x Programmazione Grafica aa2005/2006

  37. ATI - SMOOTHVISIONTM 4x multi-sampling SMOOTHVISION™ 2x High-Quality mode Quake3 screen shot Programmazione Grafica aa2005/2006

More Related