Bonjour,
Je cherche à faire de la reconnaissance de panneaux routier à l'aide d'OpenCV et de la méthode SURF. J'obtiens des résultats aléatoires (parfois très bon, parfois totalement abberant), et je suis à court d'idée..
Voilà mon approche :
.Je fais une passe de détection de contours sur la photo
.Puis j'utilise cvExtractSURF sur chaque contour pour déterminer quel panneau il contient (si il en contient)
La phase de détection de contour marche parfaitement, en appliquant un flou gaussien + canny edge j'obtients un contour similaire à celui ci :
Ensuite je compare cette image à plusieurs modèles de panneaux, par exemple :
La méthode cvExtractSURF me retourne 189 descriptors pour l'image correspondant à mon contour. J'utilise ensuite la méthode naiveNearestNeighbor pour déterminer les similitudes entre mon contour et chacun des templates.
J'obtient comme résultat :
6/189 pour la comparaison avec le modèle de sens interdit...
92/189 pour la comparaison avec le modèle de de parking (???)
Je ne comprends vraiment pas ces résultats….
Voici les traitements que j'effectue pour arriver à ce résultat :
Je passe l'image correspondant au contour en niveau de gris
Je passe le modèle de panneau en niveau de gris
J'égalise l'histograme de l'image (cvEqualizeHist)
Je resize le modèle de panneau pour le faire matcher avec la taille de l'image
J'applique un flou gaussien sur l'image (cvSmooth)
J'applique un flou gaussien sur le template de l'image (cvSmooth)
Je fais un cvExtractSURF sur le modèle
Je fais un cvExtractSURF sur l'image
Pour chaque descriteur de l'image je fais un naiveNearestNeighbor
Je stocke le nombre de point positif
Pour déterminer la similitude entre le contour et le modèle je me base sur le ratio :
nombre de point positif / nombre totale de descripteur de l'image
Merci d'avance pour votre aide, je suis preneur de toutes les idées.
Vincent
P.S: Je me suis basé sur l'exemple suivant :
http://www.emgu.com/wiki/index.php/T...tion_in_CSharp
L'exemple étant en C# je me suis appuyé sur l'exemple dans find_obj.cpp pour l'adapter en C.
Partager