Bonjour,
Surement certains connaissent les descripteurs de SIFT. En gros j'ai utilisé le code à cette adresse http://docs.opencv.org/2.4.2/doc/tut...ighlight=flann. Sauf que avec SURF le code ne marche pas trop (problème de correspondance). Mais avec SIFT cela marche. (SiftFeatureDetector et SiftDescriptorExtractor). Par curiosité j'ai essayé de détecter l'objet avec lui même (est-ce que vous saisissez?), afin de voir les lignes qui relis les key points, sauf que bizarrement ça ne marche pas.
Je sais que c'est à cause de la distance minimal entre les key points mais j'ai un peu du mal à saisir.
Quand on augmente la distance et bien on trouve des correspondances complément fausses. Je pensais que cela marchait du premier coup, sans regarder ce paramètre de distance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 //-- Draw only "good" matches (i.e. whose distance is less than 2*min_dist ) //-- PS.- radiusMatch can also be used here. std::vector< DMatch > good_matches; for( int i = 0; i < descriptors_1.rows; i++ ) { if( matches[i].distance < 2*min_dist ) { good_matches.push_back( matches[i]); } }
Si je vous demande de m'éclairer, c'est parce que là je cherche à utiliser SIFT pour de la détection de mouvement. Ce que je souhaite c'est donc observer (et dessiner) le mouvement des key points d'une frame à l'autre avec des petites flèches. Sauf que entre 2 frames d'une vidéo, les images sont presque identiques, donc j'ai une distance minimal proche de zéro et le critère de la distance n'est plus du tout utile car aucune correspondance n'est considérée comme bonne. Du coup je garde FlannBasedMatcher, je ne passe plus par ce critère de distance mais j'utilise les coordonnées des key points. Pour essayer de m'en sortir, je dis que si la distance euclidienne est proche de zéro (<3 pixels) alors ce n'est pas un bon point a dessiner. J'observe bien les descripteurs sur mon objet mais j'ai beaucoup d'erreurs à côté.
La scène est sur le lien suivant:
https://docs.google.com/open?id=0B3_...ThYaHpOREY1YUU
et voila un exemple d'image résultat.
https://docs.google.com/open?id=0B3_...WtheTJ5cDcwWEE
Après les erreurs sont peut être dûes au léger fourmillement de la camera.
La question serait donc, est-ce que vous avez des idées afin d'améliorer le résultat?
J'espère avoir été claire.
Merci d'avance.
Partager