Cosa causa l'aliasing?


47

Ho sempre sentito parlare di aliasing e anti-aliasing e so che aspetto ha, ma ciò che non capisco è ciò che lo causa. È un fenomeno fisico? O uno numerico?

Se aiuta a spiegare, ho alcune conoscenze di programmazione, ma non nei videogiochi o nella grafica.

Risposte:


60

È un fenomeno fisico? o numerico?

Questa domanda implica per me che in realtà non sai cosa significa aliasing / anti-aliasing. Voglio dire, dici di "sapere che aspetto ha" ma se in realtà sapessi cosa significano i termini, probabilmente ti accorgeresti che la tua domanda non ha senso. L'aliasing è un effetto collaterale del modo in cui la grafica del computer viene renderizzata e la computer grafica è praticamente per definizione non fenomeni fisici.

"Aliasing" si riferisce solo al gradino delle scale su linee angolate perché la computer grafica è in realtà composta da molti piccoli quadrati in una griglia. Ecco un'immagine per illustrare di cosa sto parlando: inserisci qui la descrizione dell'immagine

Questo è un problema ogni volta che visualizzi i pixel in un'immagine, sia che tu stia disegnando a mano libera o che stia scrivendo un algoritmo per calcolare i pixel per un poligono 3D. È solo un effetto collaterale del fatto che l'immagine è una griglia quadrata di pixel. "Anti-aliasing" è quando si nasconde l'aspetto del gradino mescolando i colori lungo i pixel del bordo.


18
@Kruncho Non essere mai dispiaciuto di aver torto, a meno che non insegni agli altri i tuoi errori! Spiacente solo quando non provi a capire o non sei disposto a essere corretto. Il tuo errore in realtà ha aiutato a chiarire che cosa esattamente ti chiedevi di sapere: ('come' avviene l'aliasing nella computer grafica?). A proposito, mentre questa risposta è la migliore per illustrare cosa, come e perché, è un problema numerico. Potresti pensarlo come una limitazione del tentativo di rappresentare numeri frazionari usando solo numeri interi interi. Non ci sono mezzi pixel, ecc. Quindi finisci con immagini dall'aspetto a blocchi.
Fuzzy Logic,

5
@jhocking Una correzione pedante: la quadratura dei pixel non è effettivamente rilevante. L'aliasing sarebbe lo stesso se ogni pixel avesse punti rotondi della stessa dimensione.
Fuzzy Logic,

10
@jhocking "Griglia quadrata" non lo taglierà neanche. Avresti comunque un aliasing (un po 'diverso) se i tuoi pixel fossero disposti in una griglia esagonale. Tutto ciò che conta è che i pixel siano disposti secondo uno schema regolare e abbiano dimensioni diverse da zero, ed entrambe le condizioni sono vere per qualsiasi tecnologia di visualizzazione concepibile.
Mike Scott,

3
Ti stai bloccando sulla parola "quadrato" quando è solo un descrittore di "griglia".
jhocking

11
@MikeScott: anche con pixel disposti in modo irregolare verrà visualizzato l'aliasing. :))) La condizione importante per l'apparizione dell'aliasing è che la frequenza massima del segnale originale (l'immagine originale) sia superiore a 2 * (1 / T) (dove T è l'intervallo tra i campioni = la distanza tra i pixel ). --- Quando l'immagine originale ha bordi nitidi (come la linea nera su uno sfondo bianco), la sua frequenza massima è infinita.
pabouk,

121

La risposta accettata non è strettamente corretta, sebbene si rivolga all'uso più comune nella computer grafica. L'aliasing è un concetto fondamentale nell'elaborazione del segnale e la sua teoria matematica precede i display dei computer. Inoltre, non è proprio vero che "è un effetto collaterale del fatto che i pixel sono quadrati". L'aliasing esiste ogni volta che campionate discretamente un segnale ad una velocità inferiore alla frequenza di Nyquist per quel segnale e influenza l'audio digitale così come le immagini e molti altri tipi di segnali discretamente campionati. L'aliasing nella computer grafica è un effetto collaterale del campionamento discreto, non della forma dei pixel.

L'antialiasing nella computer grafica è un argomento profondo e complesso e c'è molto di più oltre all'antialiasing edge. Ancora una volta, c'è molta teoria di base dall'elaborazione del segnale ed è un'area attiva di ricerca in computer grafica su come anti-alias in modo efficace, non solo per i bordi ma anche per aliasing temporale, per aliasing quando si ricostruisce un BRDF in pixel shader, per l'ombra bordi e in molte altre aree. La mappatura mip delle trame nella grafica 3D è una tecnica antialiasing ben consolidata che sta affrontando un problema importante diverso dall'antialiasing dei bordi, ad esempio.

È davvero un fenomeno matematico più che fisico, ma si manifesta in ingegneria in molte aree diverse dalla computer grafica. Non lo descriverei nemmeno come un fenomeno numerico: è il risultato di un campionamento discreto, non della rappresentazione discreta di valori numerici su un computer, sebbene ciò possa causare anche effetti di aliasing. Comprendere i fondamenti dell'elaborazione del segnale è una buona base per capire come si manifesta l'aliasing nella computer grafica e per capire come procedere per ridurlo.


6
Da un lato, ehi, ho imparato qualcosa di nuovo oggi, non ho mai sentito parlare di alias in nessun contesto diverso dai bordi grafici. Detto questo, questo ulteriore dettaglio tecnico non sembra contraddire la spiegazione "è un effetto collaterale del fatto che i pixel sono quadrati". "Campionamento discreto" è solo un modo elegante per dire "il bordo è in realtà un mucchio di pixel discreti, non una linea continua".
jhocking

15
+1 per correttezza tecnica. Anche se un po 'troppo tecnico dato il livello della domanda posta e in realtà non affronta la domanda implicita. La risposta accettata è più adatta all'intento della domanda. Ho imparato qualcosa di nuovo, quindi grazie per l'elaborazione :)
Fuzzy Logic,

6
@jhocking scusate, noi programmatori di grafica tendiamo a lavorare un po 'su aliasing :) Penso che la vostra risposta affronti la domanda ma se qualcuno vuole approfondire la computer grafica penso che sia utile capire che l'aliasing è un fenomeno matematico con un mucchio di teoria dietro di esso. Tutti questi dettagli tecnici sono utili per l'obiettivo finale di realizzare belle immagini nei nostri giochi :)
mattnewport,

4
@jhocking Il punto è che non importa quale sia la forma dei pixel - quindi non è un effetto collaterale del fatto che i pixel sono quadrati , è un effetto collaterale del fatto che i pixel non cambiano colore rispetto ai loro estensione. E comunque, un pixel non è un piccolo quadrato .
Daniel Wagner,

1
Alla tua risposta mancano le foto, altrimenti sarebbe sicuramente quella accettata. A parte l'esempio di anti-aliasing di bordo ha bisogno di: 1) gif animato di ruote auto che ruotano in senso orario e si fermano e cambiano improvvisamente direzione. 2) una scacchiera 3D (sai quella che va all'infinito) ... Ho studiato anche l'elaborazione del segnale.
MartinTeeVarga,

68

Aggiungendo alle altre due risposte, ecco una spiegazione più intuitiva di ciò che accade.

Alias ​​in un poligono 2D

I quadrati della griglia rappresentano i pixel. Il poligono rosso a sinistra è la forma che viene disegnata, rappresentata internamente come una sequenza di punti. Quando viene eseguito il rendering, viene convertito da un elenco di punti in un buffer di colori di pixel. Il campionamento discreto determina quali pixel sono scuri e quali pixel sono chiari, in base a quanto del poligono copre ciascun pixel.

Per rispondere alla tua domanda, questo è un fenomeno numerico / matematico perché le informazioni sulla forma originale vengono perse a causa dell'approssimazione.

Anti aliasing

L'anti-aliasing è quando il rendering tenta di correggere l'aliasing rendendo i pixel parzialmente coperti meno intensi.


5
Ecco la prima risposta che spiega davvero cosa sta succedendo. Molto bene.
Beska,

1
"Rendere i pixel parzialmente coperti meno intensi" non è esattamente come lo capisco. Credo che la maggior parte degli algoritmi di antialiasing applichi un filtro passa basso (uguale a un filtro di sfocatura), a volte su tutto il fotogramma di rendering (come con FXAA) o che algoritmi più intelligenti lo eseguono solo oltre i confini. MSAA lo fa in modo diverso, ma l'effetto complessivo rimane quello di un LPF oltre i limiti del limite massimo.
Luca,

1
@Luke Non intendevo che l'ultimo paragrafo fosse una spiegazione di come funzionano le cose; sta solo descrivendo il risultato dell'antialiasing. "Intenso" non è il termine corretto da usare, ma si applica quando l'antialiasing viene eseguito su una forma il cui colore è più intenso dello sfondo. Questo è tutto ciò che stavo dicendo.
aebabis,

3

Nel campo dell'elaborazione del segnale, l'aliasing si riferisce all'identificazione errata della frequenza del segnale. Ad esempio, a causa della mancanza di un'adeguata considerazione nella fase di sottocampionamento, ciò può causare errori di generazione e distorsione. Può essere generalizzato al segnale discreto 2D come un'immagine.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.