Algorithmes
Dans cette partie on montre les résultats des algorithmes d’interpolation (souvent appelés filtres dans le traitement d’image). A côté de certains filtres, on trouvera son implémentation en Scilab. Scilab est un clone gratuit de Mathlab. Il faudra cependant installer l’extension Imlab pour profiter de ces algorithmes. Afin de faire marcher les filtres il faut une fonction de convolution qui prend en compte les différents filtres et une image.
Les exemples qui suivent sont tous des agrandissements de 450% de l’image ci-dessous de 106x40 pixels. 3.1.1 Box Filter aussi appelé Nearest Neighbour (plus proche voisin) L’interpolation la plus facile et rapide à calculer. Pour trouver la valeur du pixel d’interpolation on duplique tout simplement le pixel le plus proche (ce qui peut être un des 8 pixels voisins). On assiste à une pixelisation importante. L’avantage consiste à ce que le rapport des couleurs reste le même. L’information contenue dans cette image est donc la même que dans l’image d’origine. Ceci dit, on préfére souvent cette interpolation aux autres quand il s’agit de reconnaître des détails. Cet algorithme montre de façon merveilleuse le théorème de Shannon-Nyquist, l’image est reconstruite à partir de la même quantité d’échantillons mais pour une résolution deux fois plus grande. Taille
du corps pour la convolution : 1x1 pixel 3.2.1 Filtre bilinéaire (b-spline ordre 1)
Taille du corps pour la convolution : 2x2 pixel 3.2.2 Filtre triangulaire (b-spline ordre 2) [scilab:TriangleFilter.sci] 3.2.3 Filtre bicubique (b-spline ordre 3) Plus sophistiquée, cette interpolation produit des contours lisses et un effet de pixelisation encore moindre que celui des interpolations d’ordre inférieur. Un pixel de l’image résultante est calculé selon une fonction bicubique à partir de son entourage (de taille 4x4 pixels) dans l’image de départ. Ce procédé est le plus utilisé dans les logiciels de traitement d’image, les pilotes pour imprimantes ou encore dans les caméras digitales. Taille du corps pour la convolution : 4x4 Malgré le flou important pour certaines images, la netteté de l’image est préservée généralement. Leger effet de pixelisation cependant. Relativement rapide. [scilab:hermiteFilter.sci] Relativement rapide et produit une image lissée, les contours sont continues. [scilab:bellFilter.sci] Algorithme très lent. Produit des images très nettes (comparables en cela avec l’interpolation fractale d’Altamira plus bas). Peut parfois amener à des artefacts répétitifs qui se propagent dans l’image. [scilab:lanczosFilter.sci] Le filtre Mitchell est en fait un filtre bicubique, donc basé sur un b-spline d’ordre 3. Compromis entre l’effet répétitif de Lanczos et le flou des autres. Souvent utilisés sur des photos en combinaison avec une augmentation du contraste pour réduire l’effet de flou qui est quand même important. Bons résultats lors de l’agrandissement, cependant assez lent. [scilab:mitchellFilter.sci] 3.4.1 Interpolation fractale Altamira La société Altamira Group a mis au point un algorithme basé sur des calculs de fractals qui permet un agrandissement d’une qualité inégalée, car il produit des lignes claires et nettes. Il se prête donc surtout à des impressions de grande taille. 3.4.2
Interpolation S-Spline Shortcut La société néerlandaise Shortcut a mis au point un algorithme qui incorpore une fonction de lissage. Il est mieux adapté pour traiter des images pixelisés que l’interpolateur de la concurrence Altamira. |