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 :

Déterminer l'axe de symétrie


Sujet :

OpenCV

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    Par défaut Déterminer l'axe de symétrie
    Bonjour à tous,

    J'ai des images qui représentent des maisons. Je voudrais chercher l'axe de symétrie pour chaque image.

    Y-a-t-il sous OpenCV une méthode déjà existante qui permet de trouver les axes de symétrie d'une image ?

    Si ça n'existe pas, avez vous des algorithmes qui permettent de le faire ?

    Merci à tous
    L'union fait la force.

  2. #2
    Membre actif Avatar de Vinsss84
    Profil pro
    Inscrit en
    Février 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2008
    Messages : 175
    Points : 207
    Points
    207
    Par défaut
    Un axe purement vertical, ou d'orientation inconnue?
    quel type d'images, la symétrie est elle parfaite?
    =>
    OpenCv Addict

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Points : 44
    Points
    44
    Par défaut
    slt,
    je suis en train de chercher un algo pour ça aussi!
    Mais je ne crois pas que OpenCV calcul lui même ces axes de symétries.
    Il faut cherher par la méthode HoughLines2 les axes principaux déjà je crois.
    Le problème c'est que j'aimerais en trouver seulement qqun mais (cela dépend de la valeur de threshold dans le paramètre de HoughLines2) il me ressort beaucoup de ligne dont je ne veut pas forcément la valeur.
    Donc je test (comme indiqué sur la doc du site de OpenCV) de donner un CvMat en tant que stockage avec seulement le nombre de colonnes qui représente le nombre max de ligne à avoir (pour moi CvMat avec 5colonnes). Mais lorsque je lance le calcul de HoughLines2 ben il trouve plus rien???
    Je dois rater quelque chose sur l'initialisation de la matrice mais quoi je ne sais pas, quelqu'un a t-il une idée ou a déjà fait ca ?
    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
     
    IplImage* hough = cvCreateImage(cvGetSize(msk),IPL_DEPTH_8U,1); // initialisation de l'image où afficher les lignes
    cvZero(hough); // initialisation image en noir
    CvMat* storage = cvCreateMat(1,5,CV_32FC2); // création d'une matrice de stockage avec 1ligne,5colonnes pour n'avoir que les 5plus longues lignes de l'image 
    // Le type CV_32FC2 est obligatoire pour la matrice
    CvSeq* lines = 0; // initialisation de la séquence de ligne
     
    // lancement du calcul des lignes avec threshold=10
    lines = cvHoughLines2(skel,stor,CV_HOUGH_STANDARD,1,CV_PI/180,10);
    for(int i = 0; i < lines->total; i++) { // on parcours toutes les lignes pour les afficher
            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(hough,pt1,pt2,CV_SCALAR_BLANC,1,8);
    }
    Mon code génère une erreur lors de l'appel :
    Comme si les lignes n'étaient pas calculer (HoughLines2 ne trouve pas de lignes ? => pourtant il y en trouve si à la place de cvMat j'utilise une séquence
    Merci de vos conseils.
    a+

Discussions similaires

  1. détermination des axes d'un plan
    Par karika dans le forum MATLAB
    Réponses: 1
    Dernier message: 22/02/2013, 14h54
  2. Axe de symétrie
    Par cjacquel dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 09/07/2012, 11h39
  3. appliquer sur une animation une symétrie par rapport à l'axe verticale
    Par shaftJackson dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 18/06/2008, 11h45
  4. Détecter axe(s) de symétrie d'un polygone
    Par alexis0788 dans le forum Mathématiques
    Réponses: 12
    Dernier message: 15/05/2008, 01h41
  5. Réponses: 3
    Dernier message: 23/04/2007, 13h29

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