Algorithmes

3.1 Réplication
3.1.1 Box Filter
3.2 Interpolation spline
3.2.1 Filtre bilinéaire
3.2.2 Filtre triangulaire
3.2.3 Filtre bicubique
3.3 Filtres remarquables
3.3.1 Filtre Hermite
3.3.2 Filtre Bell
3.3.3 Filtre Lanczos
3.3.4 Filtre Mitchell
3.4 Filtres propriétaires
3.4.1Interpolation fractale Altamira
3.4.2 Interpolation S-Spline Shortcut

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.

image [lena.pgm]
fonction zoom [bongobongoZoom.sci]
package avec tout [bongobongo.zip]

 

Les exemples qui suivent sont tous des agrandissements de 450% de l’image ci-dessous de 106x40 pixels.

image originale [106x40]


3.1 Réplication

3.1.1 Box Filter aussi appelé Nearest Neighbour (plus proche voisin)

Interpolation Nearest Neighbor

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

[scilab:BoxFilter.sci]


3.2 Interpolation spline

3.2.1 Filtre bilinéaire (b-spline ordre 1)

Interpolation bilinéaire

L’interpolation bilinéaire produit des contours lisses avec un léger effet de pixelisation. Le pixel de l’image résultante est calculé selon une fonction bilinéaire à partir de son entourage (de taille 2x2 pixels) dans l’image de départ

Taille du corps pour la convolution : 2x2 pixel

3.2.2 Filtre triangulaire (b-spline ordre 2)

Interpolation triangulaire

Cet algorithme produit des transitions nettes et est relativement rapide. Résultats acceptables avec lissage pour l’agrandissement et la diminution.

[scilab:TriangleFilter.sci]

3.2.3 Filtre bicubique (b-spline ordre 3)

Interpolation bicubique

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

[scilab:bicubicFilter.sci]


3.3 Filtres remarquables

3.3.1 Filtre Hermite

Interpolation Hermite

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]

3.3.2 Filtre Bell

Interpolation Bell

Relativement rapide et produit une image lissée, les contours sont continues.

[scilab:bellFilter.sci]

3.3.3 Filtre Lanczos

Interpolation Lanczos

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]

3.3.4 Filtre Mitchell

Interpolation Mitchell

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 Filtres propriétaires

3.4.1 Interpolation fractale Altamira

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.