Menu

AntiAliasing

Johan Luisier

Retour à la page principale

Introduction

L'antialiasing (ou anticrénelage pour les fanatiques de l'Académie Française) est une technique visant à améliorer la qualité visuelle d'une image numérique. Sur une image standard, les droites verticales et horizontales apparaissent sans défaut, mais les droites obliques (et les courbes) apparaissent "en escaliers". L'antialiasing peut atténuer avec plus ou moins de succès ce phénomène.

Il existe principalement deux manières de procéder :

  • calculer une image plus grande (2x, 4x, ...) et ensuite interpoler les pixels de cette image pour obtenir l'image voulue. Dans ce cas l'interpolation effectuée réduit les escaliers, puisqu'un certain nombre de pixels de l'image rendue vont se retrouvés mélangés dans l'image finale. Cette méthode, appelée oversampling (ou suréchantillonnage), est très gourmande en temps de calcul.
  • identifier les pixels nécessitant une correction (càd les bords des formes) et lisser les pixels adjacents. Cette méthode, le multisampling ou MSAA, est bien moins gourmande que l'oversampling.

Implémentation

La méthode choisie est hybride : les frontières entre solides sont repérées une fois l'image primaire rendue, puis une forme d'oversampling est appliquées pour ces pixels bien particuliers. La méthode de détection de détection des contours utilise l'algorithme de Sobel.

Pour chaque point, on calcule la saturation de la couleur et de ses huit plus proches voisins. Ensuite on calcule les deux dérivées Gx et Gy dont les valeurs absolues sont simplement sommées. Si la valeur est supérieure à un seuil donné (par défaut 0.3, réglable par l'attribut "seuil" de la balise Antialiasing), alors on va relancer plusieurs rayons et calculer une couleur moyenne pour lisser les pixels.

Antialiasing basique

L'oversampling consiste dans ce cas à lancer 4 nouveaux rayons, formant un cône autour du rayon original, et on fait une simple moyenne. Le facteur de pondération pour chaque rayon est représenté dans le tableau ci-dessous :

0.25 0.25
0.25 0.25

Antialiasing intermédiaire

Ici on donne en plus un certain poids au rayon original, qui est totalement négligé dans le cas d'antialiasing basique. Le facteur de pondération pour chaque rayon est représenté dans le tableau ci-dessous :

0.0 0.2 0.0
0.2 0.2 0.2
0.0 0.2 0.0

Antialiasing poussé

Dans ce dernier cas on lance douze rayons supplémentaires : huit situés sur un cercle autour du rayon original et quatre sur un autre cercle de plus grand rayon. Le facteur de pondération pour chaque rayon est représenté dans le tableau ci-dessous :

0.0 0.0 0.075 0.0 0.0
0.0 0.075 0.075 0.075 0.0
0.075 0.075 0.1 0.075 0.075
0.0 0.075 0.075 0.075 0.0
0.0 0.0 0.075 0.0 0.0

Related

Wiki: Home

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.