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:

  1. abs(angle) < pi/8, de sorte que le gradient de (gros) points 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, de sorte que le gradient de points en haut à droite. Maintenant, j'ai pensé que nous avons besoin de vérifier img(i-1, j+1) et img(i+1, j-1) mais au lieu de cela, nous vérifions img(i-1, j-1) et img(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?

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, afin de vous garder au point si elle est plus grande que les points le long de la direction du gradient, c'est à dire (-1, -1) et (1, 1).
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