IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

Reconnaissance de panneaux routier


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut Reconnaissance de panneaux routier
    Salut,

    Je reviens après avoir fait des tests avec cvMatchTemplate et cvMatchShapes, j'obtiens encore des résultats incohérents : ces 2 méthodes trouvent plus de similtude avec les template de panneaux différents, qu'avec les template de panneaux identiques.

    Je me suis inspiré de la dicussion :

    http://www.developpez.net/forums/d60...-forme-simple/

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
        //passe l'image en niveau de gris
    	IplImage *grayImage = [UIImageCommonUtil UIImage2grayscaleIpl:image];
    	//passe le template en niveau de gris
    	IplImage *object = [UIImageCommonUtil UIImage2grayscaleIpl:template];
     
    	//Egualise l'histograme de la photo (ajuste la luminausité + le contraste)
    	IplImage* equalizedImage = cvCreateImage( cvGetSize(grayImage), IPL_DEPTH_8U, 1 );
    	cvEqualizeHist( grayImage, equalizedImage );
    	cvReleaseImage(&grayImage);
     
    	//resize le template pour le faire matcher avec la taille de l'image
    	IplImage *resizedObject = cvCreateImage( cvSize(equalizedImage->width , equalizedImage->height ), object->depth, object->nChannels );
    	cvResize(object, resizedObject, CV_INTER_LINEAR);
    	cvReleaseImage(&object);
     
        //creation de l'image resultat de la bonne taille
        float src_x = cvGetSize(equalizedImage).width;
        float src_y = cvGetSize(equalizedImage).height;
     
        int x = (int)src_x - cvGetSize(resizedObject).width +1;
        int y = (int)src_y - cvGetSize(resizedObject).height +1;
     
        IplImage * result = cvCreateImage(cvSize(x,y),IPL_DEPTH_32F,1);
     
        //utilisation de la fonction de match, methode cross cor
        cvMatchTemplate(equalizedImage,resizedObject, result, 4 );
     
        double min_val = 0;
        double max_val = 0;
     
        CvPoint max_loc = cvPoint(0,0) ;
        CvPoint min_loc = cvPoint(0,0);
     
        //Recherche avec cvMinMaxLoc de la valeur la plus probable d'être un match positif, test par rapport a la valeur de seuil 
     
        cvMinMaxLoc(result,&min_val,&max_val,&min_loc,&max_loc,0);

    Pour cvMatchShape j'utilise le même code en remplacant la partie de comparaison avec cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double max_val =  cvMatchShapes(equalizedImage, resizedObject, CV_CONTOURS_MATCH_I1, 0);

    Je compare les mêmes images que dans la dicussion : reconnaissance-panneaux-routier-surf


    J'obtiens les résultats suivants :

    cvMatchTemplate :

    Comparaison de l'image de sens interdit avec une icone de sens interdit :

    max_val = 444354272


    Comparaison de l'image de sens interdit avec une icone de parking :

    max_val = 563814144




    cvMatchShapes

    Comparaison de l'image de sens interdit avec une icone de sens interdit :

    max_val = 0.0066527691159631863


    Comparaison de l'image de sens interdit avec une icone de parking :

    max_val = 0.010805821063653798


    Avez vous une idée de ce qui fait échouer la comparaison ?

    Merci d'avance pour votre aide!
    Vincent

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 67
    Par défaut
    Salut,

    Je crois que :

    1 - il ne faut pas redimensionner le template (object dans ton prog)
    2 - si tu égalises l'histogramme de l'image, il serait peut être plus logique d'égaliser aussi le template.

Discussions similaires

  1. Détection de panneaux routiers
    Par ange84 dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 15/09/2012, 18h54
  2. Reconnaissance de panneaux routier avec SURF
    Par vincent.daubry dans le forum OpenCV
    Réponses: 11
    Dernier message: 25/05/2011, 15h11
  3. [Débutant] Détection de panneaux routiers dans une image
    Par syl55 dans le forum Images
    Réponses: 1
    Dernier message: 05/05/2009, 00h17
  4. Réponses: 23
    Dernier message: 16/11/2002, 19h41
  5. [langage] Reconnaissance de mots
    Par Flo. dans le forum Langage
    Réponses: 2
    Dernier message: 10/08/2002, 23h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo