Non max suppression
Nous avons appris que vous pouvez obtenir de la direction du gradient avec atan(dy/dx)
qui est la direction orthogonale à la pointe.
Maintenant, nous avons eu des devoirs à faire à l'endroit où nous étions censés discrétiser cette direction en quatre classes (en x et en y de la direction et les deux diagonales) et de vérifier ensuite les deux pixels voisins dans le meilleur sens pour non-max suppression.
Je n'ai pas bien obtenir la solution. Évidemment, nous avons eu quatre cas:
abs(angle) < pi/8
, de sorte que le gradient de (gros) points dans la direction x, donc nous vérifionsimg(i, j-1)
etimg(i, j+1)
(en supposant que l'image d'origine est en haut à gauche)angle > pi/8 && angle <= 3*pi/8
, de sorte que le gradient de points en haut à droite. Maintenant, j'ai pensé que nous avons besoin de vérifierimg(i-1, j+1)
etimg(i+1, j-1)
mais au lieu de cela, nous vérifionsimg(i-1, j-1)
etimg(i+1, j+1)
ce qui semble être le orthogonale de la diagonale.
Les deux autres cas sont équivalents. J'ai essayé de changer cela, mais ensuite les bords vraiment l'air bizarre si cela semble correct, mais je ne comprends pas pourquoi.
Quelqu'un peut-il m'expliquer cela?
Ouais le voir, c'est le long de la direction du gradient aka. 45° aka. en haut à droite. Je ne suis pas sûr du système de coordonnées que vous utilisez. (-1, -1) et (1, 1) semble être un classique système cartésien avec ses oritin en bas à gauche. Nous avons fait cela dans matlab bien que si l'image d'origine est en haut à gauche et, par conséquent, il semblerait que nous vérifier en bordure de la direction aka. 135° aka. en haut à gauche.
C'est clairement le même système de coordonnées que j'ai utilisé depuis je l'ai dit, pente à 45 degrés et (-1, -1), (1, 1) le long de ce gradient. Cela s'avère être le même dans le plan cartésien, il n'est pas pertinent d'où l'origine est dans ce cas. Ma réponse précédente maintient, ce qui est la complication que vous rencontrez avec elle ? Est-ce lié à (-1, -1) étant soi-disant au-dessus de votre origine ?
Ne ce dessin i.imgur.com/9lpvf.png de l'aide ?
Je pense que c'était juste de la confusion entre matlab et des coordonnées cartésiennes. Comme je l'ai dit, matlab utilise le système qui est sur le côté droit de votre dessin, mais pour quelque raison, j'ai aligné les angles, à gauche dans le système...
OriginalL'auteur user1709708 | 2012-12-01
Vous devez vous connecter pour publier un commentaire.
Non max de suppression est une façon pour éliminer les points qui ne se trouvent pas dans d'importants bords. Dans ton premier cas, si la pente est proche de zéro degrés, à un moment donné, cela signifie que la pointe est vers le nord ou vers le sud, et ce point sera considéré comme étant sur le bord, si l'importance de ce point est plus grand que les deux amplitudes des points à gauche et à droite (comme dans votre exemple). Dans votre deuxième cas, vous êtes la vérification de pente à 45 degrés, de sorte que le bord est à 135 degrés, et si vous gardez le point si elle est plus grande que les 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'a pas d'incidence sur cette question.
OriginalL'auteur mmgp
Voici un python de mise en œuvre de Non Maxima Suppression utilisés dans les Futés de Bord de processus de Détection.
Ils se concentrent sur le Nord et le Sud, le Nord-Est et Sud-Ouest, de l'Est et de l'Ouest, et du Sud-Est et Nord-Ouest. Ensuite décider des valeurs à conserver.
Espère que cela aide quelqu'un qui a besoin du DDN pour la recherche d'une meilleure bord.
OriginalL'auteur Santhosh
Risquez d'être en retard pour la question d'origine, mais le lien suivant peut aider toute personne en difficulté à comprendre non max suppression.
Java Démonstration de la non-max suppression
Même "non disponible" ici
Me rappelle de la "Sagesse des Anciens" sur xkcd
OriginalL'auteur liarspocker