2011-08-09 2 views
4

Quelle est la meilleure méthode pour comparer deux images et éliminer les points aberrants? Dans l'exemple opencv de find_obj.cpp, ils utilisent FLANN, mais ne rejetez pas les valeurs aberrantes.Détection des valeurs aberrantes dans l'algorithme SURF ou SIFT avec OpenCV

J'ai vu quelques méthodes comme l'utilisation de Kmeans ou de graphiques.

+0

Salut, je sais que c'est une question très ancienne mais je suis aussi dans la même situation . Puis-je savoir quel algo avez-vous utilisé pour supprimer les valeurs aberrantes dans SURF algo? – alwaysLearn

Répondre

2

Il existe un moyen assez fiable et efficace pour rejeter les points bruyants et déterminer la transformation entre vos points d'intérêt. L'algorithme qui est habituellement utilisé pour rejeter les valeurs aberrantes est connu sous le nom de RANSAC (http://en.wikipedia.org/wiki/RANSAC), et l'algorithme utilisé pour déterminer la transformation peut prendre plusieurs formes, mais l'état de l'art le plus récent est connu comme l'algorithme à cinq points et peut être trouvé here - une implémentation MATLAB peut être trouvé here. Notez que vous devez déterminer la transformation même si vous ne vous souciez pas de la rotation exacte entre les deux images. C'est ainsi que les valeurs aberrantes sont identifiées.

Malheureusement, je ne connais pas une implémentation mature des deux combinés; vous devrez probablement faire votre propre travail pour implémenter RANSAC et l'intégrer avec l'algorithme à cinq points. OpenCV a une implémentation qui est trop lourde pour votre tâche (ce qui signifie qu'elle fonctionnera mais prendra plus de temps que nécessaire) mais est prête à fonctionner immédiatement. La fonction d'intérêt est appelée cv :: findFundamentalMat (http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html#cv-findfundamentalmat)

Questions connexes