1- Généralités
Voici quels sont typiquement les artéfacts que l'on peut corriger avec l'antialiasing :
|
|
|
|
|
Source (analogique)
|
non traité (2 niveaux)
|
antialiasing sur 3 niveaux
|
antialiasing sur 5 niveaux
|
antialiasing sur 256 niveaux
|
L'antialiasing permet l'amélioration de la qualité d'une image par lissage des artéfacts visuels. Ce lissage s'opère en jouant sur le camouflage des pixels disgracieux par le changement de leur couleur. Il n'est donc pas question, comme pour le hinting, de déplacer les artéfacts là où on les voit le moins, mais de les gommer en jouant sur le contraste par rapport à leur environnement. On parle aussi de "lissage", même si je trouve à ce mot un sens différent. L'antialiasing est particulièrement performant sur les courbes et les détails.
2- Explication mathématique :
Lorsque l'on réduit une image à une grille de pixels (échantillonnage), on attribue selon différentes méthodes une couleur à chaque pixel. Si par exemple on choisit la couleur parmi uniquement le noir ou le blanc, on créera un artéfact dû au choix nécessairement tranché que l'on fera. Si on autorise plusieurs variantes de gris, par exemple, on élargira le choix, et la couleur choisie sera plus proche de la couleur idéale, réduisant ainsi l'artéfact créé en proportion.
Un pixel correspond non pas à un point de l'image, mais à une infinité de points réunis sur la surface du pixel. Ce pixel est donc lui-même une approximation de la moyenne des couleurs de chacun de ces points qu'il représente. Plus on peut avoir de précision sur la couleur qui représentera un pixel, plus on réduira l'erreur de ce que représente le pixel (que l'on peut alors comparer à une erreur de calcul de moyenne où on choisirait une précision après la virgule par exemple).
L'antialiasing vise à choisir une couleur, la plus proche possible de ce qu'elle devrait être théoriquement (ou par calcul) pour tenter de prendre en compte une représentation des différents points représentés par le pixel. On pourrait presque considérer que l'antialiasing est une vision démocratique mais réductrice de la représentation de chaque couleur présente sur la surface du pixel (désolé, je suis en train de lire "tranches de vies" de Lauzier...).
Exemple : imaginons que nous tentions sur CPC de choisir la couleur d'un pixel résumant une zone noire à 70% et blanche à 30%. La valeur théorique qu'il faudrait utiliser est donc la moyenne de ces luminosités, à savoir un gris à 30% ([blanc=100]*0.30+[noir=0]*0.70=0.30). Sur CPC, on utilisera le gris (couleur 13) qui est la couleur la plus proche, si on le considère à une luminosité de 50%. Par rapport au contraste maximal (allant de 0 à 100%), on aura une erreur de 20% (couleur représentée=50% - couleur réelle=30%).
|
Calcul d'erreur sur une image
Le tableau ci-dessous présente un calcul d'erreur sur l'approximation des pixels lors du transfert de l'image de gauche (640x400 - 24 bits) vers les 3 résolutions du CPC. Sur la colonne de gauche, vous verrez l'image transférée (sans aucun traitement) dans les différents modes du CPC. La méthode consiste à réduire la taille des pixels, puis celle des couleurs au plus proche.
La colonne de droite présente les graphiques associés des erreurs de chaque pixel rendu. Lorsque la couleur d'un pixel est bien représentée (0% d'erreur), le pixel du graphique est alors gris à 50%. Lorsque le pixel du CPC est trop lumineux d'au moins 50% alors il est blanc sur l'image de droite, s'il est trop sombre d'au moins 50%, alors il est représenté en noir.
Ce graphisme fonctionne de cette façon pour chaque couche de l'image. Ainsi, un pixel représenté trop rouge de 25% par le CPC est représenté par un rouge de 75% (50%+25%) sur l'image de droite et ainsi de suite.
|
Mode 0 (16 couleurs en 160x200)
|
|
La luminosité est plutôt bien respectée, mais les lignes sont très approximatives. C'est le rendu des couleurs qui reste le problème le plus visible sur la vue d'ensemble.
|
|
Mode 1 (4 couleurs en 320x200)
|
|
Les lignes sont mieux marquées, mais des problèmes de luminosité semblent supplanter les problèmes de couleur.
|
|
Mode 2 (2 couleurs en 640x200)
|
|
Les lignes très précises sont le théâtre d'affrontement entre un rendu trop lumineux ou trop sombre, les défauts de couleur deviennent secondaires.
|
|
Cet antialiasing est précieux, car il permet finalement une représentation de ce qui est plus petit qu'un pixel. Il est une approximation, certes, mais il résume l'information de détail du pixel. La perte d'information constituée ici sur CPC est au niveau de l'approximation des couleurs représentées par le CPC (ou le Gate Array).
L'avantage de l'antialiasing est qu'il est possible de le produire de façon automatisée par calcul, si on part d'une image de plus grande taille. Par exemple, si on réduit une image de 640x400 à une image de 320x200, chaque nouveau pixel comprendra 4 pixels de l'ancienne image. On pourra alors en faire facilement la moyenne des couleurs pour choisir la couleur du nouveau pixel. On parle alors de suréchantillonnage ou d'oversampling.
D'autres méthodes permettent aussi d'obtenir de l'antialiasing, mais je ne les aborderai pas ici, car elle ne concernent pas le traitement d'une image tel que je l'ai défini : avec la recherche du traitement maximal du pixel. Elles consistent essentiellement à filtrer le signal (en interdisant toutes les fréquences dont le signal générerait un crénelage, une sorte de lissage avant échantillonnage), ou d'autres appliquées à l'affichage 3D (lissage des arêtes). Ces traitements concernent des domaines d'application différents du nôtre, à savoir la réalisation d'images.
3- Antialiasing sur une image originale
La plupart des images créées pour le CPC le seront spécifiquement. Parfois dessinées sur CPC, parfois sur un PC, les recours sont différents pour faciliter le travail de lissage dans les 2 cas. Voyons donc 2 approches possibles :
Le suréchantillonnage
Il s'agit ici de ne pas travailler à l'échelle 1:1 mais à une échelle supérieure, si on travaille sur un PC par exemple. On part d'une image de base "suréchantillonnée". On conseille généralement d'utiliser une résolution au moins 2 fois supérieure en cas de suréchantillonnage. Plus l'échelle sera grande, plus l'antialiasing sera précis une fois l'œuvre rendue à la résolution du CPC. Cela dit, compte tenu de la précision des couleurs du CPC, l'erreur de contraste peut aller jusqu'à 25% (le demi-écart entre 2 niveaux de luminosité, distants de 50% sur CPC). Cette erreur correspond à l'erreur d'appréciation que l'on aurait si par exemple, on se trompait de 100% sur 1/4 des pixels de départ, ce qui est peu probable, surtout si on est attentif au résultat final. Donc on peut se contenter dans ce cas d'avoir une image 2 fois plus grande, dont 4 pixels composeront un pixel de l'image définitive.
Ci-dessous un exemple pour illustrer le fait que la perte d'information n'est pas critique dans certains cas. Une image est détériorée de façon à ce que chaque pixel de l'image définitive soit pollué par un pixel, soit près de 25% des informations. On applique une destruction bordélique de 90% sur seulement 1/4 des pixels répartis homogènement sur l'image, de façon que les pixel de l'image définitive soient pollués par (au pire) un pixel détruit à 90%.
Le lissage manuel
Les images créées pour le CPC sont parfois produites directement à l'échelle du CPC. Il n'existe alors aucune base de calcul permettant de savoir quels sont les points que "cache" le pixel. Ces points existent bel et bien, mais uniquement dans l'imaginaire de l'auteur de l'image. Tant qu'il n'existera pas un moyen de scanner les images que l'on a dans la tête, il ne sera pas possible de réaliser de façon automatique des antialiasings sur des dessins originaux, réalisés à l'échelle sur CPC.
Le second recours tient donc à l'évaluation de cet antialiasing par le graphiste lorsqu'il dessine à l'échelle 1:1. Il s'agit d'une part de dessiner les yeux ouverts (diantre !), mais aussi de comparer ce que l'on voit à ce que l'on a en tête. Certains graphistes vous diront que c'est très facile, mais l'explication théorique ci-dessus est là pour éviter certaines erreurs de débutant. Car si on parle d'antialiasing lorsque l'on est face à la représentation de son imaginaire, je pense que le terme de "lissage" serait généralement plus approprié : on se limite bien souvent à "lisser" une courbe présentant des crénelages marqués, en les fondant dans une masse de pixels dégradant leur couleur. On remplace ainsi un crénelage par un flou, le tout étant de bien le doser pour ne pas trop perdre en piqué (défaut très fréquent sur Amiga, tant il est facile d'user de nombreuses teintes pour dégrader un contraste marqué).
|