Intuition pour la convolution dans le traitement d'image

9

J'ai lu de nombreux documents sur la convolution dans le traitement d'image, et la plupart d'entre eux parlent de sa formule, de certains paramètres supplémentaires. Personne n'explique l'intuition et la véritable signification de la convolution sur une image. Par exemple, l'intuition de la dérivation sur le graphique le rend plus linéaire par exemple.

Je pense qu'un bref résumé de la définition est: la convolution est un carré de chevauchement multiplié entre l'image et le noyau, après cette somme à nouveau et la met en ancrage. Et cela n'a aucun sens pour moi.

Selon cet article sur la convolution, je ne peux pas imaginer pourquoi la convolution peut faire des choses "incroyables". Par exemple, détection de lignes et de bords sur la dernière page de ce lien. Il suffit de choisir le noyau de convolution approprié pour faire de beaux effets (détecter une ligne ou détecter un bord).

Quelqu'un peut-il fournir une intuition (n'a pas besoin d'être une preuve claire) sur la façon dont il peut faire cela?

hqt
la source

Réponses:

13

Je pense que la façon la plus simple de penser à la convolution est comme une méthode pour changer la valeur d'un pixel en une nouvelle valeur basée sur le poids des pixels proches.

Il est facile de comprendre pourquoi Box Blur:

_____________
|1/9|1/9|1/9|
|1/9|1/9|1/9|
|1/9|1/9|1/9|
-------------

travaux. Convoluer ce noyau revient à parcourir chaque pixel d'une photo et à faire de la nouvelle valeur du pixel la moyenne de lui-même et des huit pixels environnants.

Si vous obtenez cela, vous pouvez voir pourquoi le flou gaussien fonctionne:

_____________________
|.01|.04|.07|.04|.01|
|.04|.16|.26|.16|.04|
|.07|.26|.41|.26|.07|
|.04|.16|.26|.16|.04|
|.01|.04|.07|.04|.01|
---------------------

C'est fondamentalement la même chose, sauf que la moyenne est plus fortement pondérée vers des pixels plus proches. La fonction qui définit la vitesse à laquelle les poids tombent lorsque vous vous éloignez est la fonction gaussienne , mais vous n'avez pas besoin de connaître les détails de la fonction pour l'utiliser pour le flou.

Le noyau de détection de bord dans l'article lié a du sens si vous le regardez assez longtemps aussi:

__________
|-1|-1|-1|
|-1|.8|-1|
|-1|-1|-1|
----------

Cela signifie essentiellement que la valeur de n'importe quel pixel commence à 8 / 9ème de sa valeur d'origine. Vous soustrayez ensuite les valeurs de chaque pixel autour pour arriver à votre nouveau pixel.

Donc, si la valeur d'un pixel est élevée et la valeur des pixels autour de lui aussi, ils s'annuleront mutuellement. Si la valeur du pixel est faible et que tous les pixels qui l'entourent sont également faibles, ils s'annuleront également. Si la valeur du pixel est élevée et la valeur des pixels qui l'entourent sont faibles (comme dans un pixel sur le bord d'un objet), la nouvelle valeur de pixel sera élevée.

Brian
la source
6

Une façon de penser à la convolution / corrélation croisée est comme si vous cherchiez un signal dans vos données. Plus les données ressemblent au noyau, plus la valeur résultante sera élevée. En fait, je prends l'inverse du noyau, c'est-à-dire comme dans la corrélation croisée, mais c'est essentiellement la même chose.

Par exemple, supposons que vous recherchez un pas directionnel dans vos données 1d.

Le noyau pourrait être

[-1 1]

et appliquons cela aux données

[2 2 2 2 2 1 1 1 1 1]

Le résultat sera

[0 0 0 0 0 1 0 0 0 0]

Qui détecte l'emplacement de l'étape. Une étape plus grande donnerait une plus grande valeur.

Cela fonctionne parce que lorsque vous multipliez un motif par celui qui apparaît dans le noyau, vous obtenez une valeur élevée.

La détection des contours (ou toute autre détection de modèle) fonctionne de la même manière, par exemple avec le noyau

[-1 2 -1]

Des extensions à des dimensions supérieures peuvent également être envisagées de cette façon.

Cela devrait vous donner au moins une intuition sur certaines des applications du traitement d'image par convolution.

Au niveau du bit
la source
4

Si vous pensez que la convolution est un peu trop difficile à comprendre, je vous recommande de commencer la recherche sur la morphologie mathématique appliquée au traitement d'image, la grande idée derrière la morphologie mathématique est que vous ferez une opération très proche de la convolution, pour "changer" la morphologie de l'image, mais conservez les informations de topologie, de cette façon, vous pouvez faire une image d'un humain debout, un squelette, qui est à peu près un bâton humain, essayez d'appliquer l'opération d'érosion, puis dilatez l'opération, puis allez à l'air libre / Fermer l'opération, vous commencerez à comprendre ce qu'un masque appliqué à chaque pixel de l'image peut faire, et comment ils peuvent être utilisés dans un grand scénario pour obtenir d'excellents résultats (comme trouver un endroit pour commencer quelque chose en utilisant la dernière érosion), une fois vous comprenez la morphologie mathématique, la convolution est un peu plus difficile,car il est basé sur le calcul et défini après l'intégration, mais tout de même, beaucoup de convolution sont faciles à comprendre, comme le flou médian, le flou gaussien, la netteté, la détection des bords, laplace, le gradient, etc.

H_DANILO
la source