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 :

Transformée de Hough


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 30
    Par défaut Transformée de Hough
    Bonjour,

    j'essaye de réaliser une transformée de Hough pour détecter les droites sur une image.

    J'ai d'abord opté pour la bibliothèque CImg, facile à installer.
    Cependant, l'implémentation de la transformée de Hough donne le résultat suivant: on obtient le domaine de Hough et on doit nous même cliquer sur les maximums locaux pour pouvoir afficher les droites correspondantes sur l'image.

    J'aimerais savoir si, dans openCV, l'implémentation de la transformée de Hough comprend cette recherche de maximas locaux automatiquement et comprend l'affichage direct des droites les plus significatives sur l'image.

    Si des gens ont déjà utilisé cette fonction, je serais intéressé par des infos.

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 20
    Par défaut
    Salut

    Il faut d'abord faire un cvCanny()
    La fonction cvHoughlines2()

    La fonction cvHoughlines2() est bien décrite sur le wiki d'opencv.
    Je ai utilisé des parties de l'exemple mais il me manque un algorithme pour detecter uniquement les lignes qui m'interessent.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 30
    Par défaut
    Mais il détecte quand même relativement bien les droites principales de ta photo?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 20
    Par défaut
    Oui il me reste à bien le regler (CV_STANDARD ou CV_PROBALISTIC)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 20

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 30
    Par défaut
    Franchement pas mal du tout!
    J'ai trouvé ce code sur le wiki de openCV:

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    /* This is a standalone program. Pass an image name as a first parameter of the program.
       Switch between standard and probabilistic Hough transform by changing "#if 1" to "#if 0" and back */
    #include <cv.h>
    #include <highgui.h>
    #include <math.h>
    
    int main(int argc, char** argv)
    {
        IplImage* src;
        if( argc == 2 && (src=cvLoadImage(argv[1], 0))!= 0)
        {
            IplImage* dst = cvCreateImage( cvGetSize(src), 8, 1 );
            IplImage* color_dst = cvCreateImage( cvGetSize(src), 8, 3 );
            CvMemStorage* storage = cvCreateMemStorage(0);
            CvSeq* lines = 0;
            int i;
            cvCanny( src, dst, 50, 200, 3 );
            cvCvtColor( dst, color_dst, CV_GRAY2BGR );
    #if 1
            lines = cvHoughLines2( dst, storage, CV_HOUGH_STANDARD, 1, CV_PI/180, 100, 0, 0 );
    
            for( i = 0; i < MIN(lines->total,100); i++ )
            {
                float* line = (float*)cvGetSeqElem(lines,i);
                float rho = line[0];
                float theta = line[1];
                CvPoint pt1, pt2;
                double a = cos(theta), b = sin(theta);
                double x0 = a*rho, y0 = b*rho;
                pt1.x = cvRound(x0 + 1000*(-b));
                pt1.y = cvRound(y0 + 1000*(a));
                pt2.x = cvRound(x0 - 1000*(-b));
                pt2.y = cvRound(y0 - 1000*(a));
                cvLine( color_dst, pt1, pt2, CV_RGB(255,0,0), 3, 8 );
            }
    #else
            lines = cvHoughLines2( dst, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/180, 50, 50, 10 );
            for( i = 0; i < lines->total; i++ )
            {
                CvPoint* line = (CvPoint*)cvGetSeqElem(lines,i);
                cvLine( color_dst, line[0], line[1], CV_RGB(255,0,0), 3, 8 );
            }
    #endif
            cvNamedWindow( "Source", 1 );
            cvShowImage( "Source", src );
    
            cvNamedWindow( "Hough", 1 );
            cvShowImage( "Hough", color_dst );
    
            cvWaitKey(0);
        }
    }

    En rouge dans les commentaires, il disent de mettre le nom de l'image comme premier paramètre du programme mais je n'arrive pas à voir où c'est exactement. Mon path est le suivant: c:/photo1.bmp, où dois-je le placer?

    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. algorithme "Transformée de Hough"
    Par comrad85 dans le forum Traitement d'images
    Réponses: 86
    Dernier message: 25/03/2008, 11h05
  2. Transformée de Hough
    Par firewall dans le forum Images
    Réponses: 3
    Dernier message: 27/09/2007, 16h43
  3. Transformée de Hough
    Par Vincent157 dans le forum OpenCV
    Réponses: 2
    Dernier message: 04/07/2007, 16h20
  4. transformée de Hough généralisée
    Par Bella la vita dans le forum Traitement d'images
    Réponses: 11
    Dernier message: 20/06/2007, 12h28
  5. Detection d'ellipse par la transformée de Hough
    Par oussama127 dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 03/05/2006, 08h47

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