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étection de contours images médicales


Sujet :

Traitement d'images

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 19
    Points
    19
    Par défaut détection de contours images médicales

    Je veux réaliser une opération d'extraction de contours sur une image médicale (format Dicom). Le résultat final doit représenter des contours des différents organes, chaque contour doit avoir le niveau de gris de l'organe dans l'images originale.
    Quel sont les algorithmee que je dois utiliser (détection de contours, fermeture de contours ...) pour réaliser cette tache ?
    je sais que le filtre de canny est trés bien pour la détection de contours sauf qu'il présente le résultat sous une forme binarisée.
    merci

  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,

    le problème de segmentation dans les images médicales, c'est que les organes ont très souvent la même couleur lors de l'acquisition. On peut rarement faire de seuillage direct.
    Il faut par conséquent utiliser des connaissances à priori sur les organes que tu cherches : position essentiellement, parfois la forme, ...
    La méthodes snake ou level set est très souvent utilisée en imagerie médicale.

    Montre nous un exemple pour que l'on voit se que tu souhaites exactement.

    Pour ce qui est de l'algo de Canny, le problème que tu montres n'en est pas un. Au pire cet algorithme de donne un masque solution, dont tu peux extraire les contours et les remettre sur l'image d'origine.
    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
    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,

    je complète ma réponse précédente.

    Lorsque l'on segmente une image médicale, il n'y a jamais une méthode magique, il faut constamment faire une succession de méthodes. par exemple pour isoler le cerveau en imagerie cérébrale, on commence souvent par retirer le crane, puis le liquide céfalo-rachidien, ...

    Donc montre nous une image afin que l'on voit comment s'y prendre. Précise quels organes tu veux isoler.
    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.

  4. #4
    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 me souviens d'avoir lu un papier sur une approche hybride watershed/LevelSet sur le sujet. Je crois que c'etait par l'equipe de GREYC.

    Je pense tout de meme qu'isoler TOUS les organes necessite une connaissance "a priori" de leurs nombres, positions, emplacements, ... pour éviter les faux positifs/négatifs.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Mon projet consiste à realiser une opération de reconstitution 3d à partir d'une serie d'images IRM du crane.
    je veux donc réaliser opéartion d'extraction de contours pour pouvoir aprés réaliser la reconstition 3d du cranes.
    je veux donc isoler chaque partie du crane par la détection de son contour réspectif.
    Images attachées Images attachées  

  6. #6
    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
    Bonsoir,

    si c'est le crane que tu souhaites, on s'en sort bien

    Pour information, saches que la reconstruction du crane, du cerveau, ... toutes les parties de la tête est un problème largement traité et ce de manière fiable. Il y a de la bibliographie sur le sujet. Fais un peu de recherche sur .

    Sinon, tu peux tatonner en utilisant ImageJ (gratuit et génial), les outils sont déjà implémentés, tu pourras trouvé le bon combo (suite de méthodes) pour segmenter ton crane.

    Sinon d'un point de vue algorithme :
    - Le crane est "presque" la partie extérieure de la tête. C'est un information primordiale.
    - De plus, c'est en général la partie la plus claire lors de l'acquisition.

    Voilà comment je tenterai le coup :
    - J'essaierai tout d'abord de voir s'il y a une méthode ou une combinaison de méthode simple pour supprimer la fine couche de peau autour du crane. Ainsi il ne resterait plus que le crane tout autour. Il ne te resterait plus alors qu'à trouvé la limite intérieure du crane.
    - Je ferai ce test sur une image de coupe centrale (par rapport à la pile que tu as). Ainsi, lorsque tu aurais le crane pour une coupe, tu connaitrais déjà une information "à priori" très importante pour les coupes précédentes et suivantes.
    - Par exemple, ce servir de cette première information pour prépositionner les points d'un snake afin de segmenter les coupes suivantes.
    - Sinon, tu calcule un squelette de cette segmentation, tu place les points du ton squelette sur l'image suivante (resp. précédente) et tu propages avec un seuillage par histérésis (par exemple).

    Bonne continuation...
    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.

  7. #7
    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
    Bonsoir,

    comme je suis gentil et que je dois être au travail demain matin que vers 7h30 , voilà quelques pistes que je viens de tester sur ImageJ :
    - Les seuillages simples fonctionnent presque parfaitement, mais il faut affiner.
    - Cet affinage peut être fait avec un filtre de type "Inhomogen isotropic diffusion 2D" qui réduit le nombre de niveaux gris et évite d'avoir des pixels isolé après segmentation.
    - De même pour le filtre de Canny.
    - Le combo FFT Filter + Seuillage par Entropie donne un très bon résultat. J'ai découvert ça dans ma thèse et ça marche très souvent
    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.

  8. #8
    Membre habitué Avatar de larimoise
    Inscrit en
    Octobre 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 220
    Points : 197
    Points
    197
    Par défaut
    Salut,
    Pour isoler le cerveau, il y ' a un utilitaire BET qu' on peut trouver avec le logiciel Brainsuite , Mricro ou encore FSL.
    En général, pour isoler le cerveau on utilise le filtrage anisotropique et la morphologie mathématique.

    Bonne chance
    MATLAB Version 7.13.0.564 (R2011b)
    Microsoft Visual studio 2010
    LabView 2013 service pack1

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    merci beaucoup pour les réponse et pour votre gentillesse.

    j'ai tester avec le filtre de canny et il donne de trés bonne résultats.
    Nom : Sans titre.jpg
Affichages : 666
Taille : 28,2 Ko
    maintant je veux affiner par des opération de fermeture de contours et d'élimination de bruit et des faux contours. pour la fermeture de contours j'ai utilisé la fonction imclose (opération de dillation et d'érosion )de matlab mais j'ai pas pu trouver le bon élément structurant SE qui me donne une bonne fermture.

    merci d'avance

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Pour ce qui est de l'algo de Canny, le problème que tu montres n'en est pas un. Au pire cet algorithme de donne un masque solution, dont tu peux extraire les contours et les remettre sur l'image d'origine.
    J'ai essayé avec l'application de l'image obtenue par canny sur mon image original mais j'ai pas obtenue des pixels de niveau de gris fixe ou même proche.
    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
     
    B=to8bits(IM);
    BW=zeros(m,n);
    BW = edge(B,'canny');
    BW=~BW;
    Ic=zeros(m,n);
    for(i=1:m)
        for(j=1:n)
            if(BW(i,j)== 0)
                Ic(i,j)=B(i,j);
     
            else
                BW(i,j)=255;
            end
        end
    end
    l'image obtenu:

    Nom : Sans titre.jpg
Affichages : 590
Taille : 10,4 Ko

    j'ai même essayé en procédant a une décomposition de l'image en 4 cadrants et de prendre le pixel intrieur à chaque fois

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    B=to8bits(IM);
    BW=zeros(m,n); %préaalocation en mémoire
    BW = edge(B,'canny');
    BW=~BW;
    Ic=zeros(m,n);
    c1=(m-rem(m,2))/2;
    c2=(n-rem(n,2))/2;
    % diviion de l'image en 4 parties
    %   -----------------------
    %  |     l1    |     l2    |
    %   -----------------------
    %  |     l3   |     l4    |
    %   -----------------------
     
     
     
    % cadrant l1
    for(i=1:c1)
        for(j=1:c2)
            if(BW(i,j)== 0)
                Ic(i,j)=B(i+1,j+1);
     
            else
                BW(i,j)=255;
            end
        end
    end
    % cadrant l2
    for(i=c1:m)
        for(j=1:c2)
            if(BW(i,j)== 0)
                Ic(i,j)=B(i-1,j+1);
     
            else
                BW(i,j)=255;
            end
        end
    end
     
    % cadrant l3
    for(i=1:c1)
        for(j=c2:n)
            if(BW(i,j)== 0)
                Ic(i,j)=B(i+1,j-1);
     
            else
                BW(i,j)=255;
            end
        end
    end
     
    % cadrant l4
    for(i=c1:m)
        for(j=c2:n)
            if(BW(i,j)== 0)
                Ic(i,j)=B(i-1,j-1);
     
            else
                BW(i,j)=255;
            end
        end
    end
    mais j'ai pas aussi trouvé le résultat voulu. j'ai besoin de votre aide.

    merci d'avance.

  11. #11
    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
    Bonsoir,

    Citation Envoyé par twix24 Voir le message
    J'ai essayé avec l'application de l'image obtenue par canny sur mon image original mais j'ai pas obtenue des pixels de niveau de gris fixe ou même proche.
    quand je parle de masque, je parle de masque binaire. Donc l'algorithme de Canny te donne des points candidats dans ton image originale. Donc tu peux propager ta segmentation à partir du masque, en utilisant par exemple un seuillage par histérésis que tu affines avec les informations obtenue par Canny.
    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.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    bonjours,


    merci bien de me donner un peut plus de détail sur les grand principes de cette méthode.

  13. #13
    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,

    - le crane passe est à l'extérieur => il faut travailler avec le contour fournit par Canny. Autrement dit, la composante connexe la plus à l'extérieur. Donc je garder que celle là. Ce contour obtenu par Canny n'est pas fermé, mais c'est pas grave.
    - Pour chaque pixel P obtenu par Canny, tu regardes dans la couleur du même pixel l'image originale.
    - Puis récursivement, tu sélectionnes dans l'image originale tous les pixels voisins qui ont la même couleur que P.

    Ca devrait te donner le crane.

    Toutefois, je te conseille de commencer par une image au milieu du tas. Si tu obtiens une bonne extraction du crane, tu reparts de cette extraction et tu propages pour les images précédentes et suivantes.
    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.

Discussions similaires

  1. Détection de contour d'image Java
    Par hafsia dans le forum 2D
    Réponses: 4
    Dernier message: 15/12/2011, 12h06
  2. Détection de rectangles dans une image de contours (image binaire)
    Par Chatbour dans le forum Traitement d'images
    Réponses: 9
    Dernier message: 09/06/2010, 16h06
  3. Détection de contours sur image de cellules
    Par salihovic dans le forum Traitement d'images
    Réponses: 14
    Dernier message: 05/11/2009, 11h32
  4. Réponses: 0
    Dernier message: 22/04/2008, 12h49
  5. [débutant]traitement image, détection de contour
    Par seerauber dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 13/07/2007, 15h25

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