Comment appliquer un noyau de filtre

8

Un filtre qui peut être utilisé pour des signaux numériques comme le traitement audio, vidéo ou d'image peut être défini à l'aide d'une matrice ("noyau") qui pondère la zone environnante (c'est une description que j'ai lue dans les notes de cours de quelqu'un d'autre).

Le noyau

(111111111)
définit un filtre d'érosion .

Pourriez-vous s'il vous plaît me dire comment ce noyau est appliqué par exemple à une image (et donc à un champ 2D de pixels)? Merci d'avance!

muffel
la source
Le terme éroder "filtre" est un peu impropre ici car c'est une opération très non linéaire. Le filtre au sens le plus strict fait référence à une opération invariante temporelle linéaire. La convolution avec un noyau est un filtre, l'application du processus d'érosion ne l'est pas
Hilmar
1
OMI, la réponse est une ligne: convolution. Rechercher la convolution et l'équation mathématique et la mise en œuvre de la convolution et c'est fait. (dans ce cas, vous feriez une convolution 2D).
Trevor Boyd Smith,
1
Je pense que la vraie question devrait être "comment filtrez-vous quelque chose avec un filtre FIR?" ou "comment fonctionne la convolution?" ou "comment implémentez-vous la convolution?".
Trevor Boyd Smith,
Ce n'est pas un noyau, mais un élément structurant. Par conséquent, il est appliqué complètement différemment. Voir la réponse de @ kolentebert ci-dessous. Pour parler simplement, c'est une forme que vous superposez sur une image pour extraire les maxima / minima locaux.
sansuiso

Réponses:

2

Votre filtre d'érosion est incorrect. Le lien que vous avez indiqué indique qu'il est censé trouver le maximum des pixels adjacents, et votre tableau ne le fait pas. Au lieu de cela, il donne la somme des pixels adjacents. Si vous normalisez le résultat (puisque tous ces ajouts augmenteront la luminosité), vous constaterez que votre filtre fait simplement la moyenne uniformément des pixels adjacents.

Ce que vous feriez généralement, c'est de prendre votre image et d'en convoler 3 x 3 blocs (ou quelle que soit la taille du filtre) avec votre filtre. Vous pouvez également les faire en parallèle, pour plus de vitesse.

Emre
la source
5

Dans le traitement d'image, pour appliquer un tel filtre, vous devez itérer sur tous les pixels de l'image d'entrée et, à chaque étape, placer le masque de filtre sur l'image de sorte que son centre se trouve à votre pixel actuel. Vous "évaluez" ensuite les pixels dans le voisinage qui sont couverts par le masque d'une certaine manière et réécrivez le résultat sur le pixel actuel.

Pour une convolution normale, vous multipliez chaque élément du filtre par la valeur du pixel correspondant, additionnez les résultats et écrivez la somme au pixel actuel.

L'érosion est une opération morphologique, et vous la mettriez en œuvre (sur une image binaire) en vérifiant si toutes les valeurs "1" de votre masque se trouvent sur "1" pixels dans l'image. Si c'est le cas, vous écrivez un "1" au pixel actuel (sinon un "0").

Dans les deux cas, assurez-vous de toujours lire vos pixels d'entrée à partir d'une version umodifiée de l'image (plutôt que de modifier l'image sur place).

koletenbert
la source