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

Traitement d'images Discussion :

Détecter des lignes dans des champs


Sujet :

Traitement d'images

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Points : 32
    Points
    32
    Par défaut Détecter des lignes dans des champs
    Bonjour à tous,
    Je suis en train de travailler sous Matlab sur des images des champs contenant des arbres et je voudrais détecter les arbres et les lignes dans ces champs ! pour la détection des arbres c’était fait avec succès j’ai fait les différentes étapes de seuillage, filtrage ! mais pour les lignes j’ai pes pu les détecter je pense je dois utiliser la méthodes de Hough et j’ai déjà essayé mais j’ai pas pu paramétrer cette méthode et je la trouve un peu complexe ! quelqu’un parmi vous peut m’aider pour comprendre cette méthode SVP !
    Merci d’avance

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    qu'est ce que tu ne comprends pas exactement ?
    Tu as une contribution dans la rubrique appropriée si lire du code aide à ta compréhension.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Bonjour,

    qu'est ce que tu ne comprends pas exactement ?
    Tu as une contribution dans la rubrique appropriée si lire du code aide à ta compréhension.
    je trouve toujours des lignes inclinés et n'ont aucun sens, alors que moi je doit trouver normalement des lignes bien structurés dans ces champs!

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Tu pourrais nous montrer un aperçu de l'image original et celle contenant les lignes détectées ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par Dut Voir le message
    Tu pourrais nous montrer un aperçu de l'image original et celle contenant les lignes détectées ?
    image originale :http://ifile.it/9pq0tr8
    image resultante: http://ifile.it/v7ht9ru
    merci pour votre aide!

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par afef_master Voir le message
    je trouve toujours des lignes inclinés et n'ont aucun sens, alors que moi je doit trouver normalement des lignes bien structurés dans ces champs!
    Oui, c'est normal. Dans la contrib que j'ai faite, je cherche des lignes qui passent par le maximum de points, même si ces points ne sont pas jointifs (cf. 1ere image d'exemple de la contrib).

    Dans ton cas, ce sont les lignes qui passent par les points noirs au milieu des champs.

    Il faut modifier le système de vote pour ne faire voter que les droites qui suivent les lignes de gradient (une seule valeur pour theta, et non pas toutes les valeurs possibles).
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Oui, c'est normal. Dans la contrib que j'ai faite, je cherche des lignes qui passent par le maximum de points, même si ces points ne sont pas jointifs (cf. 1ere image d'exemple de la contrib).

    Dans ton cas, ce sont les lignes qui passent par les points noirs au milieu des champs.

    Il faut modifier le système de vote pour ne faire voter que les droites qui suivent les lignes de gradient (une seule valeur pour theta, et non pas toutes les valeurs possibles).
    Bonjour,
    merci pour votre aide mais je sais pas comment je peux prendre qu'une seule valeur de theta cad j'ai pas pu paramétrer la tronsformée de hough !

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par afef_master Voir le message
    Bonjour,
    merci pour votre aide mais je sais pas comment je peux prendre qu'une seule valeur de theta cad j'ai pas pu paramétrer la tronsformée de hough !
    Il faut calculer le vecteur gradient G=(gx,gy) pour chaque pixel (filtre sobel ou mdif). L'angle theta de la ligne dominante est perpendiculaire au gradient => theta = ArcTan( -gx / gy )

    Ceci dit, je ne pense pas que cela sera suffisant dans ton cas. Il faudrait dans un 1er temps filtrer un peu ton image pour faire ressortir les lignes et estomper un peu les cercles noirs.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Il faut calculer le vecteur gradient G=(gx,gy) pour chaque pixel (filtre sobel ou mdif). L'angle theta de la ligne dominante est perpendiculaire au gradient => theta = ArcTan( -gx / gy )

    Ceci dit, je ne pense pas que cela sera suffisant dans ton cas. Il faudrait dans un 1er temps filtrer un peu ton image pour faire ressortir les lignes et estomper un peu les cercles noirs.
    Merci pseudocode!
    j'ai déjà utilisé le filtre de canny! mais mon problème c'est que j'ai pas compris comment gerer les parametres de la transformée de hough c'etait vraiment assez complexe!! donc vous pouvez m'expliquer d'abord ces différentes parametres et leurs objectifs! et svp vous pouvez me donner un exemple explicatif simple sur cette methode?
    merci d'avance pour votre aide!

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par afef_master Voir le message
    j'ai déjà utilisé le filtre de canny! mais mon problème c'est que j'ai pas compris comment gerer les parametres de la transformée de hough c'etait vraiment assez complexe!! donc vous pouvez m'expliquer d'abord ces différentes parametres et leurs objectifs! et svp vous pouvez me donner un exemple explicatif simple sur cette methode?
    Expliquer en détail la TH c'est un peu long, et il y a des tuto très bien fait sur le net. En gros, ca consiste a dire que pour un pixel donnée, on peut faire passer une infinité de droites : ces droites peuvent se décrire chacune par deux paramètres (rho,theta).

    Pour un pixel, on obtient donc une liste "infinie" de couple (rho,theta). On discrétise cette liste pour ne conserver qu'une liste "finie" de couples.

    On construit cette liste pour chaque pixel, puis on cherche les couples en commun entre toutes les listes => ca nous donne les droites qui passent par plusieurs pixels.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Expliquer en détail la TH c'est un peu long, et il y a des tuto très bien fait sur le net. En gros, ca consiste a dire que pour un pixel donnée, on peut faire passer une infinité de droites : ces droites peuvent se décrire chacune par deux paramètres (rho,theta).

    Pour un pixel, on obtient donc une liste "infinie" de couple (rho,theta). On discrétise cette liste pour ne conserver qu'une liste "finie" de couples.

    On construit cette liste pour chaque pixel, puis on cherche les couples en commun entre toutes les listes => ca nous donne les droites qui passent par plusieurs pixels.
    Merci pseudocode pour votre aide,
    j'ai déjà essayé de comprendre peu à peu cette methode mais j'ai pas arrivé de modifier les sorties de la transformation de hough !
    voici mon essai et svp vous pouvez me guider un peu concernant le paramétrage de theta surtout???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    I = imread('test02.tif');
    TT = edge(I,'canny'); % extract edges
    [H,T,R] = hough(TT);
    figure, imshow(TT);
    figure, imshow(imadjust(mat2gray(H)),'XData',T,'YData',R);
    merci d'avance pour votre aide!

  12. #12
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Je n'ai aucune idée de ce que renvoie la fonction "hough(TT)" dans matlab.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

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

Discussions similaires

  1. [XL-2007] Ventiler des lignes dans des classeurs séparés
    Par Taltosm dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/09/2013, 17h44
  2. Requête SQL mettre des ligne dans des colonnes
    Par karim66 dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/02/2012, 20h57
  3. fixer des lignes et des colonnes dans ma feuille
    Par zangaloni dans le forum Excel
    Réponses: 4
    Dernier message: 18/04/2011, 13h17
  4. copier des lignes dans des feuilles designées
    Par arctica dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/09/2009, 13h14
  5. Figer des lignes et des colonnes dans un tableau
    Par Opo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 15/11/2006, 16h10

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