Qu'est-ce qui cause le crénelage?

47

J'ai toujours entendu parler de crénelage et d'anti-crénelage et je sais à quoi ça ressemble, mais ce que je ne comprends pas, c'est ce qui le cause. Est-ce un phénomène physique? Ou un numérique?

Si cela peut aider à expliquer, j'ai quelques connaissances en programmation, mais pas en jeux vidéo ni en graphisme.

Kruncho
la source

Réponses:

60

Est-ce un phénomène physique? ou numérique?

Cette question m'implique en quelque sorte que vous ne savez pas vraiment ce que signifie aliasing / anti-aliasing. Je veux dire, vous dites que vous "savez à quoi ça ressemble", mais si vous saviez réellement ce que signifient les termes, vous vous rendrez probablement compte que votre question est absurde. Le crénelage est un effet secondaire de la manière dont les graphiques informatiques sont rendus, et les graphiques informatiques ne sont pas, par définition, des phénomènes physiques.

Le "crénelage" fait simplement référence à l'aspect en escalier des lignes inclinées, car les images de synthèse sont en réalité composées d'une multitude de petits carrés dans une grille. Voici une image pour illustrer ce dont je parle: entrez la description de l'image ici

C'est un problème lorsque vous restituez les pixels d'une image, que vous dessiniez à main levée ou que vous écriviez un algorithme pour calculer les pixels d'un polygone 3D. C'est juste un effet secondaire du fait que l'image est une grille carrée de pixels. Le terme "anti-aliasing" consiste à masquer l'aspect de l'escalier en mélangeant les couleurs le long des pixels du bord.

jhocking
la source
18
@Kruncho Ne soyez jamais désolé de vous tromper, à moins d'enseigner vos erreurs aux autres! Ne soyez désolé que lorsque vous n'essayez pas de comprendre ou que vous ne souhaitez pas être corrigé. Votre erreur a en fait contribué à clarifier ce que vous demandiez exactement de savoir: ("comment" se produit un aliasing en infographie?). En fait, bien que cette réponse soit la meilleure pour illustrer quoi, comment et pourquoi, il s’agit d’un problème numérique. Vous pourriez penser à cela comme une limitation de la tentative de représentation de nombres fractionnaires en utilisant uniquement des entiers entiers. Il n'y a pas de demi-pixels, etc. Vous obtenez donc des images en blocs.
Fuzzy Logic
5
@jhocking Une correction pédante: la perpendicularité des pixels n'est pas réellement pertinente. Le crénelage se produirait de la même manière si chaque pixel était constitué de points ronds de la même taille.
Fuzzy Logic
10
@jhocking "Square grid" ne le coupera pas non plus. Vous obtiendrez toujours un aliasing (semblant légèrement différent) si vos pixels étaient disposés dans une grille hexagonale. Tout ce qui compte, c'est que les pixels soient disposés selon un motif régulier et qu'ils aient une taille non nulle, et ces deux conditions sont valables pour toute technologie d'affichage imaginable.
Mike Scott
3
Vous commencez à utiliser le mot "carré" alors que ce n'est qu'un descripteur pour "grille".
Jhocking
11
@MikeScott: Même avec des pixels disposés de manière irrégulière, l'aliasing apparaîtra. :))) La condition importante pour que le crénelage apparaisse est que la fréquence maximale du signal d'origine (l'image d'origine) soit supérieure à 2 * (1 / T) (où T est l'intervalle entre les échantillons = la distance entre les pixels ). --- Lorsque l'image d'origine présente des contours nets (comme la ligne noire sur un fond blanc), sa fréquence maximale est infinie.
pabouk
121

La réponse acceptée n’est pas strictement exacte, bien qu’elle aborde l’usage le plus courant en infographie. Le crénelage est un concept fondamental du traitement du signal et sa théorie mathématique est antérieure à celle des écrans d'ordinateur. Il n’est pas vrai non plus que "c’est un effet secondaire du fait que les pixels sont carrés". Le crénelage existe chaque fois que vous échantillonnez discrètement un signal à un taux inférieur à celui de Nyquist et affecte l'audio numérique ainsi que les images et de nombreux autres types de signaux échantillonnés discrètement. La création d'alias en infographie est un effet secondaire de l'échantillonnage discret et non de la forme des pixels.

L'anti-aliasing en infographie est un sujet complexe et complexe, qui va bien au-delà d'un simple anti-aliasing. Encore une fois, il existe beaucoup de théorie sous-jacente au traitement du signal et c'est un domaine de recherche actif en infographie: comment lutter efficacement contre les alias, non seulement pour les contours, mais aussi pour les alias temporels, pour les alias lors de la reconstruction d'un BRDF en pixel shaders, pour l'ombre bords et dans de nombreux autres domaines. Le mappage MIP de textures dans des graphiques 3D est une technique d'anti-aliasing bien établie qui aborde un problème important autre que l'anti-aliasing de bord, par exemple.

C’est un phénomène mathématique plus qu’un phénomène physique, mais il apparaît en ingénierie dans de nombreux domaines autres que l’infographie. Je ne le décrirais pas vraiment comme un phénomène numérique non plus - c'est le résultat d'un échantillonnage discret, pas de la représentation discrète de valeurs numériques sur un ordinateur, bien que cela puisse également causer des effets de repliement du spectre. Comprendre les principes fondamentaux du traitement du signal constitue un bon point de départ pour comprendre comment se manifeste le crénelage dans les graphiques informatiques et pour savoir comment s'y prendre pour le réduire.

mattnewport
la source
6
D'un côté, j'ai appris quelque chose de nouveau aujourd'hui, je n'ai jamais entendu parler de crénelage dans un contexte autre que les contours graphiques. Cela dit, ce détail technique supplémentaire ne semble pas contredire l'explication «c'est un effet secondaire du fait que les pixels sont carrés». "L'échantillonnage discret" est juste une manière élégante de dire "le bord est en réalité un groupe de pixels discrets, pas une ligne continue".
Jhocking
15
+1 pour l'exactitude technique. Bien que ce soit un peu trop technique compte tenu du niveau de la question posée et ne répondant pas à la question implicite. La réponse acceptée est plus adaptée à l'intention de la question. J'ai appris quelque chose de nouveau, alors merci pour cette élaboration :)
Fuzzy Logic
6
@jhocking désolé, nous, les programmeurs graphiques, avons tendance à être un peu fatigués par l'aliasing :) Je pense que votre réponse répond à la question, mais si quelqu'un veut approfondir ses connaissances en infographie, il est utile de comprendre que l'aliasing est un phénomène mathématique tas de théorie derrière elle. Tous ces détails techniques sont utiles pour l'objectif ultime de créer de jolies images dans nos jeux :)
mattnewport
4
@jhocking Le fait est que la forme des pixels importe peu - il ne s'agit donc pas d'un effet secondaire du fait que les pixels sont carrés , mais du fait que les pixels ne changent pas de couleur. Le degré. Et de toute façon, un pixel n'est pas un petit carré .
Daniel Wagner
1
Il manque des images à votre réponse, sinon ce serait certainement la photo acceptée. En plus de l'exemple d'anticrénelage des bords, il a besoin: 1) d'un gif animé de roues de voiture tournant dans le sens des aiguilles d'une montre, puis d'un arrêt brusque à un changement de direction. 2) un échiquier 3D (vous connaissez celui qui va à l'infini) ... J'ai aussi étudié le traitement du signal.
MartinTeeVarga
68

En ajoutant aux deux autres réponses, voici une explication plus intuitive de ce qui se passe.

Crénelage dans un polygone 2D

Les carrés de la grille représentent les pixels. Le polygone rouge à gauche est la forme en train d'être dessinée, représentée en interne par une séquence de points. Lorsqu'il est rendu, il est converti à partir d'une liste de points en un tampon de couleurs de pixels. L'échantillonnage discret détermine quels pixels sont sombres et quels pixels sont clairs, en fonction de la quantité de polygone recouvrant chaque pixel.

Pour répondre à votre question, il s'agit d'un phénomène numérique / mathématique car les informations sur la forme d'origine sont perdues à cause de l'approximation.

Anti crénelage

L'anti-aliasing se produit lorsque le rendu tente de corriger l'aliasing en rendant moins intenses les pixels partiellement recouverts.

Aebabis
la source
5
Voici la première réponse qui explique vraiment ce qui se passe. Bien joué.
Beska
1
"réduire l'intensité des pixels partiellement couverts" n'est pas exactement ce que je comprends. Je pense que la plupart des algorithmes anti-crénelage appliquent un filtre passe-bas (identique à un filtre anti-flou), parfois sur toute la trame restituée (comme avec FXAA), ou des algorithmes plus intelligents ne l'effectuant que sur les limites des contours. MSAA le fait d'une manière différente, mais l'effet global reste celui d'un LPF au-delà des limites dures.
Luke
1
@Luke Je n'avais pas l'intention que le dernier paragraphe soit une explication de la façon dont les choses fonctionnent; il décrit simplement le résultat de l'anti-aliasing. "Intense" n'est pas le terme correct à utiliser, mais il s'applique lorsque l'anti-aliasing est effectué sur une forme dont la couleur est plus intense que l'arrière-plan. C'est tout ce que je disais.
aebabis
3

Dans le domaine du traitement du signal, les alias font référence à la mauvaise identification de la fréquence du signal. Par exemple, en raison de l’absence de prise en compte adéquate dans l’étape de sous-échantillonnage, il peut en résulter des erreurs et des distorsions. Il peut être généralisé au signal discret 2D tel qu'une image.

utilisateur70164
la source