2013-02-25 7 views
3

Dans le cadre de mon baccalauréat-thèse, je suis en train de mettre en œuvre un détecteur d'angle avec l'algorithme Harris et Stephens: A combined Corner and Edge DetectorLe Harris & Stephens algorithme de détection d'angle: déterminant toujours 0 (zéro)

Je ne calcule :

  1. les écarts de X et Y avec les filtres de Sobel (3x3)
  2. Calculer le système matrice M

    M = [AC; CB]

    ce qui signifie que, si je suis bien:

    1. A = Réponse de sobel_x au carré: Ix * Ix (à certains pixels)
    2. B = Réponse de sobel_y au carré: Iy * Iy (à certains pixels)
    3. C = réponse de sobel_x multiplié par la réponse de sobel_y: Ix * Iy (à certains pixels)
  3. maintenant, je ne calcule trace (M) et ce que je suis particulièrement préoccupé par plus: déterminant (M)

Dans il papier ils suggèrent l'approximation suivante pour le déterminant, car il évite le calcul coûteux des valeurs propres:

det (M) = A * B - C^2

Cette doit toujours se terminer par zéro!

Le det d'expression (M) = A * B - C^2 peut être réécrite comme: (en utilisant la connaissance du point 2)

det (M) = A * B - C * C

det (M) = Ix * Ix * Iy * Iy - Ix * Iy * Ix * Iy

det (M) = Ix * Ix * Iy * Iy - Ix * Ix * Iy * Iy

det (M) = 0

Alors pourquoi devrais-je même prendre la peine de calculer le déterminant? Pour autant que je vois, il suffit de calculer la trace! (Ou est-ce que j'ai fait quelque part une erreur majeure?)

+0

Vouliez-vous dire pour la matrice M = [A C, C B]? Sinon, je n'ai aucune idée de ce à quoi B fait référence. – hardmath

Répondre

2

Avant de calculer le R, appliquez le noyau gaussien sur Ix2, Iy2, Ixy.

+0

Pour approfondir ceci: il semble que la matrice "M" devrait effectivement inclure la somme des termes de gradient pour une fenêtre autour du pixel. Ainsi, les termes déterminants ne doivent pas s'annuler. Voir cet autre post pour plus de contexte: http://stackoverflow.com/questions/16803587/how-to-compute-the-structure-tensor-of-a-2d-array –

-1

J'ai rencontré le même problème. Pour chaque pixel de l'image, vous voulez considérer une petite fenêtre, disons 3x3 autour du pixel.

Pour chaque pixel de cette fenêtre 3x3, vous lui appliquez un masque gaussien pour Ix^2, Ix * Iy et Iy^2 pour construire la matrice 2x2 H '. Vous additionnez ensuite les matrices H 'pour obtenir la matrice H finale, et vous calculez le déterminant à partir de là.

Ce que je ne suis pas clair si le masque est la raison pour laquelle gaussienne doit être appliquée autant de diapositives et des ressources disponibles en ligne ne mentionnent pas