Crénelage

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

En informatique, et plus précisément en infographie, le crénelage[1] ou effet d'escalier, est un artefact caractérisé par la visibilité de motifs en forme d’escaliers sur les contours obliques des objets, dû à l'impossibilité de tracer des courbes lisses[2].

Le crénelage, effet visuel indésiré dû à des contraintes techniques, peut être délibérément grossi pour imprimer un style pixel art à une œuvre graphique.

Le crénelage est également désigné par l’anglicisme aliasing. Ce terme recouvre, outre l'effet de l'échantillonnage spatial et de la discretisation de l'espace infographique sur les images, toutes les autres formes de repliement de spectre.

Espaces numériques[modifier | modifier le code]

Crénelage1.png

Tout signal numérique, quel que soit le nombre de ses dimensions, constitue une suite de nombres. Une erreur de quantification irréversible apparaît lors du passage d'un ensemble à un autre, si le second contient moins d'éléments que le premier entre deux éléments quelconques du premier. En informatique, cela se produit lorsqu'un processus convertit un résultat exprimé en nombre en virgule flottante en vue de l'affichage qui n'accepte que des coordonnées en nombres entiers.

Erreur d'arrondi ou de quantification  :

Pour passer d'un nombre en virgule flottante à un nombre entier, généralement, on arrondit le nombre réel au nombre entier le plus proche. Mais on peut également l'arrondir soit au nombre entier inférieur, soit au nombre entier supérieur, selon les contraintes techniques.

  • 5,4 devient 5 et 5,6 devient 6 s'ils sont arrondis à l'entier le plus proche ;
  • 5,4 et 5,6 deviennent 5 s'ils sont arrondis à l'entier inférieur (on dit aussi tronquer) ;
  • 5,4 et 5,6 deviennent 6 s'ils sont arrondis à l'entier supérieur ;
  • 5,6 devient 5 et -5,6 devient -5 s'ils sont tronqués par suppression de la partie décimale ;

Cette erreur de quantification est particulièrement visible parce que les écrans sont composés de pixels, c'est-à-dire de petits éléments carrés ou rectangulaires, d'une seule couleur, au contour net et au contact les uns des autres. Cette particularité rend les mathématiques de base du traitement du signal inopérantes, car elles supposent un échantillonnage par points sans dimension.

Les pixels sont accessibles par leur numéro de ligne et leur numéro de colonne, des nombres entiers. Lorsque le processus doit inscrire une ligne définie par un programme informatique sur l'écran, il prend une ligne, soit horizontale, soit verticale, et recherche à quel niveau se trouve le pixel qui doit être rendu visible. La ligne est définie par une fonction. Le résultat n'est pas nécessairement un nombre entier, il y aura donc un arrondi. Sauf pour les lignes horizontales ou verticales, ce qui apparaît à l'écran est crénelé, sur une hauteur de un pixel. Sur les droites obliques à 45 °, ce crénelage est peu visible, parce que sa largeur est de un pixel. Sur les autres, il est plus large, et donc plus visible.

Le résultat est tout à fait différent quand l'image est produite par un dispositif optique. Dans ce cas, la ligne paraît légèrement floue, parce qu'en général, sa luminosité se trouve répartie sur les pixels auxquels elle touche, mais l'effet d'escalier est beaucoup moins visible.

Le facteur technologique[modifier | modifier le code]

Le phénomène du crénelage est étroitement lié au facteur technologique. Ainsi, en informatique, on utilisera, tant matériellement que logiciellement, des matrices afin de stocker l'information d'un signal. Cependant, ce facteur ne constitue qu'une contrainte dont on peut s'extraire selon la manière dont on interprète les informations stockées. Ainsi, on peut parfaitement stocker des valeurs numériques en nombre en virgule flottante. Mais la technologie a ses limites. La précision des nombres en virgule flottante (c'est-à-dire, le nombre de décimales) aura ses propres limites d'un système technologique à un autre et sera un facteur prépondérant à l'effet de crénelage[Comment ?][réf. nécessaire].

Imagerie numérique[modifier | modifier le code]

Exemple de crénelage sur la lettre A en Times New Roman. À gauche l'image crénelée, à droite l'image anticrénelée.
IntegerPythagore.png

L'imagerie numérique a cette particularité d'être souvent appliquée à des espaces matriciels. Dans ce type d'environnement, les règles de la géométrie euclidienne sont profondément bouleversées. Par exemple, le théorème de Pythagore ne s'y appliquera pas[réf. nécessaire].

Il est cependant nécessaire de bien distinguer les deux branches fondamentales de l'imagerie numérique. Ainsi, l'imagerie numérique dite « vectorielle », ne souffre de ce phénomène de crénelage que par les limitations techniques dans son utilisation, dues essentiellement à la précision des nombres en virgule flottante stockés et/ou reproduits.

En imagerie matricielle (parfois dite « pixelique » du fait de l'utilisation de pixels), le phénomène de crénelage peut se produire de différentes manières. L'exemple le plus récurrent est sans doute le tracé d'un segment. Classiquement, on utilisera la fonction affine (f(x) = ax + b) pour le tracé d'un segment. Le crénelage se produira alors lorsque la largeur et la hauteur différeront l'une de l'autre. Pour pallier ce problème (voir l'article anticrénelage), on fera appel à l'algorithme de tracé de segment de Xiaolin Wu. On parlera alors de « Wu pixeling ».

Cette technique consiste essentiellement à transformer les pixels matriciels en « pixels vectoriels » avant de tracer le segment comme en géométrie traditionnelle (i.e., en espace euclidien). La notion de « pixel vectoriel » peut paraître paradoxale et c'est pour cela que certains lui préfèrent la notion de « point graphique vectoriel ». L'idée sous-jacente est de considérer le centre de chaque pixel comme étant la correspondance entre nombres entiers et nombres en notation à virgule flottante. Ainsi, la taille de chaque pixel vectoriel reste bien égale à 1 pixel (taille variable, d'où un certain intérêt) mais chaque pixel ira de > -0,5 à +0,5 relativement à son unité en nombres réels. Ensuite, on calculera chaque surface que le pixel vectoriel recouvre sur ses pixels matriciels adjacents. Après, on devra faire une synthèse additive de la couleurs initiale de chaque pixels matriciel adjacent avec la couleur du pixel vectoriel selon la surface que ce dernier recouvre. Il est à noter que ceci constitue la base du procédé de rendu 2D des boxels et autres voxels.

Le crénelage peut également arriver lorsque l'on redimensionne une image vers une résolution différente à la résolution de numérisation. Si on la réduit, il s'ensuit cet effet de pixellisation, plus ou moins marqué, sur les bordures d'éléments visuels, ou entre éléments visuels adjacents. Ceci est dû à la manière dont la perte d'informations s'opère. Ce ré-échantillonnage peut s'opérer de bien des manières. Une approche naïve consistera à ne conserver que les pixels existants selon l'approximation de leur position relative. Le résultat sera épouvantable. Une des solutions (voir plus bas) viables réside dans la vectorisation de l'image d'origine afin de la tracer réduite avec des « Wu-pixels ». Cela revient plus ou moins à faire une moyenne chromatique de chaque zone enlevée. Dans le cas d'un agrandissement, le phénomène apparaîtra si l'on redessine les pixels sous la forme de carrés proportionnels au lieu de les considérer tel des points de couleurs qu'il faut lier par des dégradés.

Imagerie 3D[modifier | modifier le code]

Ce domaine est complexe et les méthodes de rendu sont extrêmement variées selon les utilisations et ce phénomène peut apparaître pour diverses raisons selon les procédés de rendu employés. Par conséquent, les solutions sont très variées tant sur le plan conceptuel que sur les plans mathématique, algorithmique et technique.

On peut néanmoins classer ces méthodes selon :

  • qu'elles soient vectorielles (la grande majorité des cas; citons par exemple le ray-tracing) ou matricielles (tel que l'approche par voxels/boxels)
  • qu'elles soient destinées à un rendu en temps réel (le cas des jeux vidéo) ou non (cas des logiciels d'animation 3D)
  • qu'elles utilisent les fonctions matérielles ou logicielles,

Néanmoins, beaucoup de méthodes mélangent tous ces procédés pour arriver à leurs fins.

Le domaine le plus inventif en matière de solutions reste celui des jeux vidéo en 3D qui utilisent autant des procédés matériels que logiciels.

On notera cependant que les techniques d'anti-crénelage sont généralement orientées vers une approche du traitement global de l'image.

Photo[modifier | modifier le code]

Lors de la photographie d'une scène avec un capteur numérique, les fréquences spatiales présentes dans l'image et supérieure à la fréquence de Nyquist peuvent être repliées vers une fréquence inférieure. Ceci se traduit alors par des effets de « grille » ou de moiré coloré (sur les capteurs à matrice de Bayer, les plus courants). Pour éviter ces artefacts, les fréquences supérieures à la fréquence de Nyquist sont généralement supprimées du signal par un filtre passe-bas placé devant le capteur[réf. nécessaire].

Solutions[modifier | modifier le code]

Dans bien des cas il n'est malheureusement pas possible mathématiquement d'éliminer rigoureusement le crénelage, mais il est toutefois possible de le réduire à des niveaux infimes. Une technique courante est de suréchantillonner le signal à une fréquence d'échantillonnage nettement supérieure à la fréquence voulue, appliquer les traitements voulus (par exemple redimensionnement d'image, rééchantillonnage ou distorsion de son), puis de lui appliquer un filtre passe-bas pour éliminer toute fréquence supérieure à la fréquence de Nyquist. On peut alors redescendre en toute sécurité à la fréquence d'échantillonnage voulue, puisqu'aucune fréquence supérieure à la fréquence de Nyquist n'est présente. Cette méthode nécessite une puissance de calcul très importante, elle n'est donc pas applicable à toutes les situations : c'est ainsi qu'à l'heure actuelle, nombre de jeux vidéo préfèrent encore consacrer toute la puissance du processeur graphique à l'affichage de détails supplémentaires plutôt qu'à la réduction du crénelage.

Notes et références[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Bibliographie[modifier | modifier le code]