Quel est le raisonnement fondamental pour l'anti-aliasing utilisant plusieurs échantillons aléatoires dans un pixel?


12

Dans les graphiques, il est courant de prendre plusieurs échantillons dans les limites d'un pixel et de les combiner ensemble (le plus souvent en faisant simplement une moyenne) pour une couleur finale de pixel d'échantillon. Cela a pour effet d'anti-aliaser une image.

D'une part, cela a du sens pour moi car ce que vous faites effectivement est d'intégrer la couleur du pixel sur la zone que le pixel représente. Dans cette ligne de pensée, la moyenne des échantillons "aléatoires" semble être la configuration idéale pour faire l'intégration de Monte Carlo. ("aléatoire" pourrait être stratifié, basé sur le bruit bleu, des séquences à faible écart, etc.)

D'un autre côté, cela semble faux (ou du moins pas aussi correct qu'il pourrait l'être) du point de vue du traitement du signal numérique. De ce point de vue, on a l'impression que nous prenons beaucoup d'échantillons puis sous-échantillonnons en utilisant un filtre de boîte (boîte flou) pour obtenir la valeur finale de pixel. Dans cette optique, il semble que l'idéal serait de recourir à un filtrage sinc au lieu de faire la moyenne des échantillons. Je pourrais voir que le filtre de boîte est une aproximation moins chère à une réflexion sincère dans ce sens.

Cela me laisse un peu confus. L'idée centrale selon laquelle nous intégrons la zone de pixels et la moyenne est-elle correcte? Ou est-ce que nous sommes en train de sous-échantillonner et que nous devrions utiliser sinc, mais utilisons un filtre de boîte parce qu'il est rapide?

Ou est-ce autre chose entièrement?

Un peu lié: Anti-aliasing / Filtering in Ray Tracing


Réponses:


9

Du point de vue du traitement du signal, vous échantillonnez un signal de domaine continu et vous devez le filtrer pour vous débarrasser des fréquences au-delà de la limite de Nyquist. C'est ce filtrage qui mène à l'intégration sur la zone de pixels - ou plus généralement, à l'intégration sur le support de votre noyau d'anticrénelage (qui n'a pas besoin d'être une boîte).

x,y

Vous voulez maintenant le convertir en un nombre fini de pixels. Tout comme la numérisation d'un signal audio, lorsque vous l'échantillonnez, vous obtenez un alias sauf si vous éliminez d'abord les fréquences au-delà de la limite de Nyquist imposée par la fréquence d'échantillonnage. En d'autres termes, vous devez vous débarrasser des fonctionnalités plus petites que la grille de pixels. Pour ce faire, vous appliquez un filtre passe-bas. Le filtre passe-bas idéal est la fonction sinc, mais pour diverses raisons pratiques, nous utilisons d'autres filtres (qui n'éliminent pas parfaitement les fréquences au-delà de la limite de Nyquist, mais ils les atténuent au moins).

f(x,y)k(x,y)

ffiltered(x,y)=f(x,y)k(xx,yy)dxdy

Ensuite, l'image peut être échantillonnée en toute sécurité, de sorte que les valeurs finales des pixels sont obtenues en évaluant simplement aux coordonnées du pixel.ffiltered

Si est un filtre de boîte, qui ressemble à dans la boîte de pixels et ailleurs, cela simplifie simplement l'intégration de sur la boîte de pixels. Mais comme indiqué, le filtre de boîte n'est pas si bon et il existe de meilleurs choix tels que les filtres de tente, bicubiques et gaussiens.kk=1k=0f

Quoi qu'il en soit, maintenant que nous avons une intégrale, nous pouvons utiliser Monte Carlo pour cela et la combiner avec toutes les autres intégrales que nous aimerions faire - pour l'éclairage, le flou de mouvement, etc. Nous pouvons même appliquer un échantillonnage d'importance au facteur dans l'intégrale, en générant des échantillons pour chaque pixel qui sont répartis autour du centre du pixel selon .kk


Excellente réponse, comme toujours.
ivokabel

4

Vous faites en fait les deux choses. Vous intégrez la zone et parce que votre résultat est toujours des échantillons discrets, vous reconstruisez le signal pour le faire fonctionner en continu. Par conséquent, le filtrage d'ordre supérieur. (L'œil humain est également un échantillonneur discret, il reconstruit donc également le signal)

Il m'a fallu beaucoup de temps pour accepter cette explication. La chose qui m'a aidé était un article de Tony Apodaca intitulé The Lore of TDs .


Merci pour le super lien! le dernier lien sur cette page semble plonger directement dans cela. Concrètement, savez-vous si faire quelque chose au-dessus d'un flou de boîte donne vraiment beaucoup de différence visuelle? Ou donnerait-elle un coup de pouce à la convergence?
Alan Wolfe

2
C'est la meilleure introduction aux concepts de rendu graphique 3D que j'ai jamais vus (difficile, ce n'est pas tellement sur les trucs physiques ou de traçage, mais de toute façon). Une image filtrée sinc est beaucoup plus nette que le filtre carré donne un aspect très flou. Aurait-il convergé plus vite, j'en doute.
joojaa

On dirait que ce lien a disparu maintenant. À quel titre faisiez-vous référence comme étant le meilleur apprêt 3D que vous ayez lu?
johnbakers
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.