Images : filtres par convolution

Soyez le premier à donner votre avis sur cette source.

Vue 22 850 fois - Téléchargée 1 235 fois


Description

Voici une classe présentant un ensemble de filtres dit de convolutions (on applique une matrice à chaque pixel de l'image).

Voici un exemple de matrice que l'on peut appliquer au pixel
-1 | -2 | -1
-2 | 16 | -2
-1 | -2 | -1

afin de réhausser la netteté de l'image.

Cette source se caractérise par l'emploi de quelques tableaux non affectés au tas managé, mais se situant dans la zone mémoire réservée à la méthode, ce qui donne de la rapidité dans les traitements. L'instruction "stackalloc" est employée à cet effet. Dans les boucles, j'ai essayé d'économiser des instructions IL afin de gagner du temps processeur.

Vous pouvez créer vos propres filtres en créant vos matrices 3x3 ou 5x5 ou plus avec les coefficients souhaités. Le terme facteur est en général la somme des coefficients. Un offset peut être appliqué à l'ensemble.

Conclusion :


Le fonctionnement est simple :

Filtres.Relief(maBitmap);

on reprend la référence de maBitmap qui a été traitée. Attention, à ne passer que des images au format 32Arbg.
Si celle-ci n'est pas au format 32Argb, vous pouvez en général en créer une à ce format par :
Bitmap image32 = new Bitmap(maBitmap);
Filtres.Accentuation(image32);

Dernière précision importante, la transparence est conservée !

Remerciement :
Je tiens à remercier Brunews (Bruno Nati) pour les conseils d'optimisation qu'il promulgue un peu partout dans les communautés.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
Excellent
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
Génial... t'aurais pas une image voir ce que ca fait ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.