[Matlab] Détection de segments sur une image
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

[Matlab] Détection de segments sur une image



  1. #1
    invite70e181ce

    [Matlab] Détection de segments sur une image


    ------

    Bonjour,

    J'ai besoin pour un projet de détecter des dimensions de fibres dans un matériau composite. Cependant certaines fibres se superposent et rendent le procédé difficile..

    Voici un cliché de base :

    Image originale.jpg

    Après un premier traitement des fibres brillantes et filtrage du fond:

    Image traitee.png

    J'utilise ensuite les fonctions bwboundaries, regionprops, et une fonction permettant de calculer le plus petit rectangle à partir des boundaries détectées. Le programme fonctionne plutôt bien pour les fibres isolées mais je n'arrive pas à trouver un moyen de séparer celles qui se superposent.

    groupes.png

    Existe t'il un moyen (simple) de détecter les directrices par exemple et de pouvoir traiter séparément les différentes fibres pour éviter de traiter le groupe de fibres comme un tout?

    Je suis complètement ouvert à toute suggestion.
    Merci beaucoup pour votre temps !

    Cap'tain

    -----

  2. #2
    Paraboloide_Hyperbolique

    Re : [Matlab] Détection de segments sur une image

    Bonsoir,

    A priori, je chercherais les "squelettes" des fibres à partir de votre seconde image (voir https://nl.mathworks.com/help/images/ref/bwmorph.html). Une fibre qui ne superpose pas à une autre présente un squelette simple, tandis que des fibres se superposant présenteront des branchements dans leurs squelettes.

  3. #3
    invite70e181ce

    Re : [Matlab] Détection de segments sur une image

    Bonjour et merci pour votre réponse.

    Si j'utilise la fonction bwmorph avec 'Inf' en paramètre on fait bien apparaître certaines lignes directrices. Voici le résultat avec un zoom sur la partie en haut à droite de l'image originale:

    squelet.png

    squel.jpg

    A l'oeil on se rend bien compte des différentes fibres. J'ai pensé utiliser l'opération 'branchpoints' pour repérer les différents branchements, mais même pour des fibres simples les squelettes comportent des embranchements au niveau des bouts pour rendre compte de leur largeur.

    Existe t'il un moyen d'extraire des directions principales par exemple? Ou dois-je le coder directement? Sinon si vous avez une autre idée je reste ouvert.

    Merci pour votre temps.

  4. #4
    Paraboloide_Hyperbolique

    Re : [Matlab] Détection de segments sur une image

    Citation Envoyé par Captain_Cookie Voir le message
    A l'oeil on se rend bien compte des différentes fibres. J'ai pensé utiliser l'opération 'branchpoints' pour repérer les différents branchements, mais même pour des fibres simples les squelettes comportent des embranchements au niveau des bouts pour rendre compte de leur largeur.

    Existe t'il un moyen d'extraire des directions principales par exemple? Ou dois-je le coder directement? Sinon si vous avez une autre idée je reste ouvert.
    De rien, content de savoir que ma suggestion vous a été utile. Concernant l'extraction des directions principales, peut-être avec une PCA* (Principal Component Analysis) sur les coordonnées des pixels de chaque squelette ?

    *Il y a certainement une fonction Matlab qui fait cela.

    EDIT: non une PCA risque de ne pas fonctionner: cela ne donnerait en 2D au mieux que deux composantes principales; inutilisable quand plusieurs fibres se superposent...
    Peut-être en employant un critère sur les longueurs des branchements ?
    Dernière modification par Paraboloide_Hyperbolique ; 25/05/2016 à 19h00.

  5. A voir en vidéo sur Futura
  6. #5
    invite70e181ce

    Re : [Matlab] Détection de segments sur une image

    Bonjour,

    Je viens de voir un article qui parle de squelettisation avancée: http://www.mathworks.com/matlabcentr...keletonization

    Je vais essayer d'utiliser cette transformation pour obtenir un squelette plus simple et avoir moins de branches.
    Je dois installer quelques softwares manquants avant de pouvoir compiler correctement le programme mais je reviendrais avec une solution ou de nouvelles questions.

    Merci pour votre temps

  7. #6
    invite19b393ed

    Re : [Matlab] Détection de segments sur une image

    Bonjour,

    As tu trouvé une méthode pour supprimer les branches du squelette ?

  8. #7
    invite70e181ce

    Re : [Matlab] Détection de segments sur une image

    Bonjour,

    En effet, grâce à l'article cité plus tôt j'ai réussi à obtenir des squelettes beaucoup plus propres et simples.
    Les branches servant à retranscrire les épaisseurs sont stockés dans une valeur de "rayon" local.

    Voilà un exemple de résultat sur mon image initiale :

    full.png

    Et un zoom sur un amas de fibres :

    zoom.png

    J'ai laissé l'affichage des points de jonction (en rouge) et extrémaux (en vert) des fibres pour la visualisation.

    Je travaille maintenant sur un moyen d'extraire les fibres qui se croisent sur des couches différentes pour les traiter séparément.


    Pour ce qui est de complètement retirer les branches parasites je peux te citer cet article : http://fr.mathworks.com/matlabcentra...ge-of-skeleton

Discussions similaires

  1. matlab image processing toolbox : redressement d'image
    Par invite59da5b62 dans le forum Programmation et langages, Algorithmique
    Réponses: 24
    Dernier message: 24/07/2013, 23h06
  2. matlab détection de ligne
    Par invite703b2a58 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 12/03/2010, 21h14
  3. [MATLAB] Segmentation d'image + edition d'une matrice d'image
    Par invitef5d502cc dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 04/11/2009, 12h24
  4. matlab et détection des yeux
    Par invitedc02b238 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 04/06/2009, 19h20
  5. Detection de silence sous matlab
    Par invite6d0d1d73 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 10/05/2009, 12h35
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...