web-dev-qa-db-fra.com

Suppression non maximale

Nous avons appris que vous pouvez obtenir la direction du dégradé avec atan(dy/dx) qui est la direction orthogonale à l'arête. Maintenant, nous avions un devoir où nous devions discrétiser cette direction en quatre classes (direction x et y et les deux diagonales), puis vérifier les deux voisins de pixel dans la meilleure direction de correspondance pour suppression non max .

Mais je n'ai pas complètement compris la solution. De toute évidence, nous avons eu quatre cas:

  1. abs(angle) < pi/8, donc le gradient pointe (approximativement) dans la direction x, donc nous vérifions img(i, j-1) et img(i, j+1) (en supposant que l'image d'origine est en haut à gauche)

  2. angle > pi/8 && angle <= 3*pi/8, Le dégradé pointe donc en haut à droite. Maintenant, je pensais que nous devions vérifier img(i-1, j+1) et img(i+1, j-1) mais à la place nous vérifions img(i-1, j-1) et img(i+1, j+1) qui ressemble à la diagonale orthogonale.

Les deux autres cas sont équivalents. J'ai essayé de changer cela, mais les bords ont vraiment l'air bizarre, donc cela semble correct, mais je ne comprends pas pourquoi.

Quelqu'un peut m'expliquer cela?

13
user1709708

La suppression non max est un moyen d'éliminer les points qui ne se trouvent pas dans les bords importants. Dans votre premier cas, si le gradient est proche de zéro degré à un point donné, cela signifie que le bord est au nord ou au sud, et ce point sera considéré comme étant sur le bord si la magnitude de ce point est supérieure à les deux magnitudes des points à gauche et à droite (comme dans votre exemple). Dans votre deuxième cas, vous vérifiez le gradient à 45 degrés, donc le bord est à 135 degrés, et vous gardez donc le point s'il est supérieur aux points le long de la direction du gradient, c'est-à-dire (-1, -1) et (1 , 1). La rotation du système de coordonnées n'affecte pas cela.

enter image description here

18
mmgp

Voici une implémentation python de Non Maxima Suppression utilisée dans le processus de détection de Canny Edge.

Ils se concentrent sur le Nord et le Sud, le Nord-Est et le Sud-Ouest, l'Est et l'Ouest, et le Sud-Est et le Nord-Ouest. Décidez ensuite des valeurs à conserver.

J'espère que cela aide quelqu'un qui a besoin de NMS pour trouver un meilleur Edge.

2
Santhosh

Peut-être en retard pour la question d'origine, mais le lien suivant peut aider quiconque a du mal à comprendre la suppression non max.

Démo Java de suppression non max

1
liarspocker