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

C++ Discussion :

Appariement de contours 2D


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    devlopeur
    Inscrit en
    Février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : devlopeur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 17
    Points : 1
    Points
    1
    Par défaut Appariement de contours 2D
    salut tout le monde
    Je suis ali je travaille sur l’appariement des contours 2D par les métaheuristique.
    J'ai deux images.je veux initialiser mes points contours afin de les apparier. Mais je ne suis pas arrivé à faire ça. Pouvez-vous m'aider par un petit programme pour initialiser ces points ?
    Merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Tu fournis l'algorithme et on t'aide pour le C++, c'est ça ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    devlopeur
    Inscrit en
    Février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : devlopeur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 17
    Points : 1
    Points
    1
    Par défaut appareiment des contour
    J’ai deux ensembles de point x et y. je cherche comment programmer une transformation qui fera une mise en correspondance entre ces deux ensemble en minimisant un critère.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    devlopeur
    Inscrit en
    Février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : devlopeur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 17
    Points : 1
    Points
    1
    Par défaut article ci joint
    voici ci-joint l'article que je veux programmer
    Images attachées Images attachées

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 875
    Points : 219 225
    Points
    219 225
    Billets dans le blog
    122
    Par défaut
    Citation Envoyé par ali khabou Voir le message
    J’ai deux ensembles de point x et y. je cherche comment programmer une transformation qui fera une mise en correspondance entre ces deux ensemble en minimisant un critère.
    Une fonction de distance ? On rassemble les ensemble de deux points proches, mais cela peux ne pas suffire. On peut aussi améliorer, je pense, avec une "orientation", si on pense que les deux contours se ressemblent.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonsoir,

    Si je comprend bien, c'est la "vectorisation" de l'image qui lui manque non?

    Dans ce cas, le post suivant qui fait référence à Potrace me semble intéressant : http://www.developpez.net/forums/d74...toriser-image/

    Sinon, j'aurais tendance à regarder du côté de OpenCV qui doit avoir des outils pour faire ça.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    devlopeur
    Inscrit en
    Février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : devlopeur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Mais moi je cherche comment vectoriser justument ces contours avec un programme

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    devlopeur
    Inscrit en
    Février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : devlopeur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Merci pour vous réponse
    Voila ce que j'ai fait
    Au début j'ai appliqué le filtre de Canny sur les deux images pour extraire les contours.
    après j'ai fait ce programme pour extraire les point contours de deux images
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cont=[]
    for i=0:nombr de ligne
        for j=1:nombre de colonne
            if(img>0)
                cont=img
        end
    end
    après je veux faire la mise en correspondance entre ces point contour. Pouvez-vous me dire est-ce que ceci est juste et m'aider pour programmer la suite

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    En tout cas le plus simple que je vois c'est de prendre un de tes deux ensembles de points, et pour chaque point de lui rattacher le point le plus proche dans l'autre image, rien de bien sorcier.
    Une distance euclidienne et puis voilà, après tu peux optimiser en empêchant les croisements de tes jointures peut être.

    Sinon tu peux tenter un Dynamic Time Warping, c'est vachement utilisé en reconnaissance d'écriture et reconnaissance vocale et c'est super performant. Par contre c'est plutôt orienté timeseries, donc je ne sais pas se que cela pourrait donner sur des formes. Si tu as n points dans ta première image et m points dans la seconde, c'est une complexité en O(n*m) avec la garantie d'un alignement optimal entre tes deux séquences de points sans croisements. Toute la difficulté réside dans comment tu ordonnes tes séquences.

    PS: J'ai lu ton article en PJ, je ne sais pas comment est faite l'approche (d) dans les figures mais elle a pas l'air franchement performante

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    devlopeur
    Inscrit en
    Février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : devlopeur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Salut tous le monde
    Merci beaucoup pour vos réponse
    Je cherche manintenant un code source pour la vectorisation des contours d'une image
    Merci

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    devlopeur
    Inscrit en
    Février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : devlopeur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Salut tou le monde voici mon code que j'ai programmé pour vectoriser mes contours.
    Pouvez vous m'aider pour faire une comparaison entres ces deux ensembles de points?
    Code matlab : 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
    i=imread('cerv.jpg');
    is=rgb2gray(i);
    h=double(is)/255.0;
    X=edge(h,'canny');
     
       X2=X(50:100,80:200);
       imshow(X)
     
     
     
    [Nlin, Ncol] = size(X) 
    % creation d’un vecteur de 0 de Nlin*Ncol elements
    Vecteur = zeros(1,Nlin* Ncol);
    k = 1 ;
    for lin=1:Nlin
    for col=1:Ncol
    Vecteur(k) = X(lin,col) ;
    k = k+1 ;
    end
    end
    [Nl, Nc] = size(X2) 
    % creation d’un vecteur de 0 de Nlin*Ncol elements
    Vecteur = zeros(1,Nl* Nc);
    lk = 1 ;
    for li=1:Nl
    for co=1:Nc
    Vecteur(lk) = X(li,co) ;
    lk = lk+1 ;
    end
    end
    Images attachées Images attachées  

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    devlopeur
    Inscrit en
    Février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : devlopeur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Salut tout le monde
    Quelqu'un de vous pouvez m'aider à faire la mise en corespandence entre ces deux ensembles de points

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    devlopeur
    Inscrit en
    Février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : devlopeur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Salut tout le monde
    je suis bloqué j'ai pas trouvé une méthode pour fair initialiser les contours de deux images et de les suporposer en minmisant la distance eucludinenne.
    Quelqu'un peux m'aider
    Merci d'avance

  14. #14
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Citation Envoyé par ali khabou Voir le message
    je suis bloqué j'ai pas trouvé une méthode pour fair initialiser les contours de deux images et de les suporposer en minmisant la distance eucludinenne.
    Si personne n'arrive à t'aider, c'est que tu n'expliques pas clairement ton problème.

    Tu donnes des morceaux d'algorithme qui ne correspondent à rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    cont=[]
    for i=0:nombr de ligne
        for j=1:nombre de colonne
            if(img>0)
                cont=img
        end
    end
    Tu fais quoi là dedans? Tu parcours une image en regardant si l'image est supérieure à zéro. Quel est le rapport avec un calcul de contour?

    A mon humble avis, il te manque des notions en algorithmie.

    Pour le traitement d'image, un bon point de départ consiste à prendre les tutoriels, cours présents en ligne et regarder ce qu'on trouve dans la bibliothèque OpenCV.

    Ensuite, avant de te lancer dans la mise en correspondance (appariement, matching pour les mots clés) d'un ensemble de segment, je te conseillerais bien de commencer par l'appariement d'un nuage de point, puis d'adapter ça au cas des segments :

    La base pour la mise en correspondance d'un nuage de point ressemble à ça :

    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
     
     
    /*
     * trouve l'indice du point le plus proche de reference dans le tableau cibles
     */
    int trouveVecteurLePlusProche( const Vecteur& reference, const std::vector< Vecteur > & cibles ){
    	int result = -1 ;
    	double dMin = std::numeric_limits< double >::infinity() ;
    	for ( size_t i = 0; i < cibles.size(); i++ ){
    		double d = reference.distance( cibles[i]*) ;
    		if ( d < dMin ){
    			dMin = d ;
    			result = i ;
    		}
    	}
    	return result ;
    }
     
    /*
     * Associe à chaque éléments de A l'indice du point le plus proche dans B
     */
    std::vector< int > trouveCorrespondances( const std::vector< Vecteur > & A, const std::vector< Vecteur > & B ){
    	std::vector< int >  result ;
            result.resize( A.size() );
     
    	for ( size_t i = 0; i < A.size(); i++ ){
    		int indiceDuPlusProche = trouveVecteurLePlusProche( A[i], B ) ;
    		result[ i ] = indiceDuPlusProche ;
    	}
     
    	return result ;
    }
    Seulement, en pratique, ça ne fonctionnera jamais :
    • Tu devras prendre sûrement en compte un décalage global entre l'ensemble A et l'ensemble B
    • Certains points dans l'ensemble A n'auront pas de correspondant dans l'ensemble B


    => Je te conseille de jetter un oeil à ce post sur l'appariement de nuage de points http://www.developpez.net/forums/d68...ges-points-2d/, puis d'adapter ça à l'appariement d'un nuage de segment (c'est pas de la tarte, un segment peut être partiellement contenu dans un autre).

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    devlopeur
    Inscrit en
    Février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : devlopeur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    salut
    merci pour vous réponse
    Moi, je veux reprendre ce que les auteurs font dans l'article ci joint
    Images attachées Images attachées

Discussions similaires

  1. Appariement sur un contour
    Par silesio dans le forum OpenCV
    Réponses: 1
    Dernier message: 22/06/2012, 01h40
  2. appariement de contours
    Par nawraz dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 04/03/2010, 17h00
  3. appariement de contour
    Par mar1985 dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 03/06/2009, 19h23
  4. [Kylix] contour visible d'un TextRect?
    Par skoupay dans le forum EDI
    Réponses: 1
    Dernier message: 12/03/2003, 12h00

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