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 :

prétraitement automatique des images IRM


Sujet :

Traitement d'images

  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Points : 92
    Points
    92
    Par défaut prétraitement automatique des images IRM
    Bonjour à tous,

    dans le cadre de mes études je dois réaliser une segmentation automatique des tumeurs cérébrales dans une IRM.
    lorsque j'applique un simple filtre sobel ou autre pour voir quelles sont les structures du cerveau détectés, j'ai remarqué qu'il n'arrive pas toujours à détecter les zones des tumeurs..

    comme première solution j'ai essayé de réaliser une binarisation "manuelle"
    exemple
    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
     
     
    Ipret=pretraitement(I,86,120);  
     
     
    %%%%%
     
    % une image en entrée de préférence en niveau de gris 
    % on fait entrer des valeurs V1 et V2 qui représente l'intérvalle de
    % couleur de la zone d'intérê dans le cas d'IRM  V1 = 86 V2 =120
    % la sortie une image prétraitée en mettant en évidance la zone d'intérêt
     
    function I= pretraitement (I2,V1,V2)
     
        I1=rgb2gray(I2);
        n=size(I1,2); %nbre de colonnes 
        m=size(I1,1); %nbre de lignes
        %prétraitement 
        for i=1:m
            for j=1:n
                if I1(i,j)>V1 & I1(i,j)<V2 
                    I(i,j)=255;
                else
                    I(i,j)=0;
                end
            end
        end
    end
    ceci permet de mettre en valeur la zone de la tumeur pour mieux la détecter dans les autres traitements de mon code...
    cependant cette fonction de "pretraitement" n'est pas automatique car pour chaque image je dois faire entrer les 2 valeurs V1 et V2....

    je pense que je dois faire une étude statistique permettant de trouver une loi à laquelle je peux prévoir automatiquement pour chaque image les valeurs V1 et V2.. mais je ne sais pas par où je dois commencer et comment..


    que pensez vous? et si vous avez d'autres propositions j'en suis preneuse



    voilà image avant "pretraitement"


    http://www.hostingpics.net/viewer.ph...96492avant.png

    et image après "pretraitement"


    http://www.hostingpics.net/viewer.ph...70425apres.png

  2. #2
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Essaie de seuiller à 1.8 fois l'intensité la plus probable.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par Nebulix Voir le message
    Essaie de seuiller à 1.8 fois l'intensité la plus probable.
    merci Nebulix
    est ce que tu peux m'expliquer un peu plus?

  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
    Citation Envoyé par azertyuio Voir le message
    je pense que je dois faire une étude statistique permettant de trouver une loi à laquelle je peux prévoir automatiquement pour chaque image les valeurs V1 et V2.. mais je ne sais pas par où je dois commencer et comment..
    Vue la forme de l'histogramme dans ton image d'exemple, je pense qu'un seuillage au maximum d'entropie devrait faire l'affaire.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Vue la forme de l'histogramme dans ton image d'exemple, je pense qu'un seuillage au maximum d'entropie devrait faire l'affaire.
    Bonjour pseudocode,
    tout d'abord merci
    mais est ce que cette méthode d'entropie fait selectionner les pixels blancs de la tumeur même s'ils ne sont pas trop clairs??



    j'ai trouvé ton poste sur le principe d'entropie poste
    mis le lien du document pdf que tu as recommandé ne marche pas chez moi
    connais tu un autre document expliquant le principe de l'entropie

  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 azertyuio Voir le message
    Bonjour pseudocode,
    tout d'abord merci
    mais est ce que cette méthode d'entropie fait selectionner les pixels blancs de la tumeur même s'ils ne sont pas trop clairs??
    Cette méthode permet de trouver une valeur de seuil qui départage "au mieux" les pixels sombres et les pixels clairs.

    Si tu fais un seuillage binaire avec cette valeur, tu obtiens a peu près la meme chose que ton 'image "après traitement".

    j'ai trouvé ton poste sur le principe d'entropie poste
    mis le lien du document pdf que tu as recommandé ne marche pas chez moi
    connais tu un autre document expliquant le principe de l'entropie
    Le principe est assez simple : on teste tous les seuils 's' possibles (0->255). Pour chaque valeur du seuil on calcule l'entropie E_inf des pixels ayant une valeur inférieur a 's', et l'entropie E_sup des pixels ayant une valeur supérieur à 's'. Ca se fait facilement en calculant l'histogramme normalisé de l'image.

    Lien corrigé du PDF ( voir le chapitre 2.2 )
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par pseudocode Voir le message

    Le principe est assez simple : on teste tous les seuils 's' possibles (0->255). Pour chaque valeur du seuil on calcule l'entropie E_inf des pixels ayant une valeur inférieur a 's', et l'entropie E_sup des pixels ayant une valeur supérieur à 's'. Ca se fait facilement en calculant l'histogramme normalisé de l'image.

    Lien corrigé du PDF ( voir le chapitre 2.2 )
    merci pour lien
    alors si j'ai bien compris on a deux classes
    • une pour les zones sombres (où les valeurs des pixels sont inférieurs à S)
    • une pour les zones clairs (où les valeurs des pixels sont supérieurs à S)


    donc les étapes à faire :
    créer un histogramme normalisé
    Ca se fait facilement en calculant l'histogramme normalisé de l'image
    tu veux dire que l'utilisation d'un histogramme est plus smple que l'utilisation des valeurs de la matrice (image)??

    ensuite je fais une boucle seuil s=0 to 255
    et je calcule à chaque valeurs de s
    les entropies HC1 et HC2 (comme écrit dans le pdf)

    finalement le seuil S est la maximisation de HC1 et HC2 (c'est un peu flou!!)

  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
    donc les étapes à faire :
    créer un histogramme normalisé
    tu veux dire que l'utilisation d'un histogramme est plus smple que l'utilisation des valeurs de la matrice (image)??
    oui, c'est ca.

    ensuite je fais une boucle seuil s=0 to 255
    et je calcule à chaque valeurs de s
    les entropies HC1 et HC2 (comme écrit dans le pdf)

    finalement le seuil S est la maximisation de HC1 et HC2 (c'est un peu flou!!)
    Le seuil S c'est celui pour lequel la somme HC1+HC2 est la plus grande.

    Exemple en java.
    Code java : 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
    public static int maxEntropyThreshold(int[][] array) {
     
    	// normalized histogram 
    	double[] hist = histogramNormalized(array);
     
    	// Cumulative distribution function
    	double[] cdf = new double[256];
    	cdf[0] = hist[0];
    	for (int i = 1; i < 256; i++)
    		cdf[i] = cdf[i-1] + hist[i];
     
    	double[] h_low  = new double[256];
    	double[] h_high = new double[256];
    	for (int t = 0; t < 256; t++) {
     
    		// low range entropy
    		double count_low = cdf[t];
    		if (count_low > 0) {
    			for (int i = 0; i <= t; i++)
    				if (hist[i] > 0) h_low[t] -= (hist[i]/count_low) * Math.log(hist[i]/count_low) /*/Math.log(2)*/;
    		}
     
    		// high range entropy
    		double count_high = 1.0 - count_low;
    		if (count_high > 0) {
    			for (int i = t + 1; i < 256; i++)
    				if (hist[i] > 0) h_high[t] -= (hist[i]/count_high) * Math.log(hist[i]/count_high) /*/Math.log(2)*/;
    		}
    	}
     
    	// Find threshlod with the highest total entropy
    	double h_max = h_low[0] + h_high[0];
    	int best_thr = 0;
    	for (int t = 1; t < 256; ++t) {
    		double h = h_low[t] + h_high[t];
    		if (h > h_max) {
    			h_max = h;
    			best_thr = t;
    		}
    	}
     
    	return best_thr;
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par pseudocode Voir le message

    Le seuil S c'est celui pour lequel la somme HC1+HC2 est la plus grande.

    Je dois avoir un exemple de code en java quelque part...
    merci pseudocode j'ai bien compris
    je vais écrire un code le plutôt possible et le mettre en ligne pour voir vos commentares


    juste une dernière question, l'entropie sert comme un apprentissage automatique?

  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 azertyuio Voir le message
    juste une dernière question, l'entropie sert comme un apprentissage automatique?
    Ce n'est pas vraiment un apprentissage. C'est le calcul d'une valeur statistique dans un ensemble de données.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Ce n'est pas vraiment un apprentissage. C'est le calcul d'une valeur statistique dans un ensemble de données.
    mmm okk je vois..

    merci bcp pour ton aide et merci pour le code ça m'aiderai

  12. #12
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Je n'ai fait que quantifier un tout petit peu l'observation empirique que la tumeur, c'est là où c'est franchement plus clair qu'ailleurs
    la valeur 1.8 est empirique mais doit correspondre à une propriété des tissus.
    En traçant l'histogramme de l'image, le max de proba permet de déterminer la densité du tissu sain
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  13. #13
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Points : 92
    Points
    92
    Par défaut
    Bonjour,

    Citation Envoyé par pseudocode
    Envoyé par pseudocode
    Vue la forme de l'histogramme dans ton image d'exemple, je pense qu'un seuillage au maximum d'entropie devrait faire l'affaire.
    alors j'ai testé le seuillage au max d'entropie voilà le code en matlab !! (il est basé totalement sur votre code java)

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
     
    clear;
     
        %I= imread('brain2.jpg');
        I= imread('irm1.jpg');
     
        I=rgb2gray(I);
        [n,m]=size(I);
        h=imhist(I);
        % normaliser l'histogramme h 
        %hn(k)=h(k)/(n*m)
        %avec k[1 256]
     
     
        for i=1:256
            hn(i)=h(i)/(n*m);
        end
     
     
        %Cumulative distribution function
    	c(1) = hn(1);
        for l=2:256
            c(l)=c(l-1)+hn(l);
        end
     
        for t=1:256
            splk=0;
            spkl=0;
     
            %low range entropy
            cl=double(c(t));
            if cl>0
                for i=1:t
                    if hn(i)>0
     
                        splk=splk+((hn(i)/cl)*log(hn(i)/cl));
                        hl(i)=log(cl)-splk;                    
                    end
                end
            end
     
            %high range entropy
            ch=double(1.0-cl);  %il faut cl+ch=1
            if ch>0
                for i=t+1:256
                    if hn(i)>0
     
                        spkl=spkl+((hn(i)/ch)*log(hn(i)/ch));
                        hh(i)=log(ch)-spkl;
                    end
                end
            end
        end
     
        %chercher le meilleur seuil
        %[entropie_max, seuil]=max(entropie);
     
    	h_max =hl(1)+hh(1)
    	seuil = 0;
        entropie(1)=h_max;
        for t=2:256
            entropie(t)=hl(t)+hh(t);
            if entropie(t)>h_max
                h_max=entropie;
                seuil=t-1;
            end
        end
     
        %binarisation
        nn=size(I,2); %nbre de colonnes 
        mm=size(I,1); %nbre de lignes
        %prétraitement 
        for i=1:mm
            for j=1:nn
                if I(i,j)<seuil 
                    I1(i,j)=0;
                else
                    I1(i,j)=255;
                end
            end
        end
        imshow(I1)
    j'ai seulement fait changé la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (hist[i] > 0) h_low[t] -= (hist[i]/count_low) * Math.log(hist[i]/count_low) /*/Math.log(2)*/;
    par ceci car en matlab je peux pas effectuer -= !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                    if hn(i)>0
     
                        splk=splk+((hn(i)/cl)*log(hn(i)/cl));
                        hl(i)=log(cl)-splk;                    
                    end
    le résultt que j'ai obtenu avec ce code n'est pas bon du tout
    il m'affiche un seuil = 2
    or normalement la valeur varie entre 86 et 120
    voilà le résultat
    image après seuillage max entropie


    j'ai testé sur une autre image et on m'a donné un résultat moyen
    la tumeur est légèrement visible !!
    avant avant
    après après



    Citation Envoyé par Nebulix Voir le message
    Je n'ai fait que quantifier un tout petit peu l'observation empirique que la tumeur, c'est là où c'est franchement plus clair qu'ailleurs
    la valeur 1.8 est empirique mais doit correspondre à une propriété des tissus.
    En traçant l'histogramme de l'image, le max de proba permet de déterminer la densité du tissu sain
    franchement ça l'air très intéressant ce que tu viens de dire mais je comprend pas bcp
    que veux tu dire par l'observaion empirique que la tumeur ??
    et comment déterminer la densité du tissu ?
    et pourquoi 1.8??

  14. #14
    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 azertyuio Voir le message
    j'ai testé sur une autre image et on m'a donné un résultat moyen
    la tumeur est légèrement visible !!
    avant avant
    après après
    Sur cette image de test, je trouve un seuil à 139 avec mon code.

    Nom : maxentropy.png
Affichages : 162
Taille : 60,0 Ko

    Il doit y avoir un problème dans ton portage Matlab.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  15. #15
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        for i=1:256
            hn(i)=h(i)/(n*m);
        end
    peut s'écrire :


    Citation Envoyé par azertyuio Voir le message
    j'ai seulement fait changé la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (hist[i] > 0) h_low[t] -= (hist[i]/count_low) * Math.log(hist[i]/count_low) /*/Math.log(2)*/;
    par ceci car en matlab je peux pas effectuer -= !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                    if hn(i)>0
     
                        splk=splk+((hn(i)/cl)*log(hn(i)/cl));
                        hl(i)=log(cl)-splk;                    
                    end
    ne correspond pas au code java. Ce serait plutôt :
    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
        hl = zeros(1,256);
        hh = zeros(1,256);
        for t=1:256
            %low range entropy
            cl=double(c(t));
            if cl>0
                for i=1:t
                    if hn(i)>0
                        hl(t) = hl(t)- (hn(i)/cl)*log(hn(i)/cl);                      
                    end
                end
            end
     
            %high range entropy
            ch=double(1.0-cl);  %il faut cl+ch=1
            if ch>0
                for i=t+1:256
                    if hn(i)>0
                        hh(t) = hh(t)- (hn(i)/ch)*log(hn(i)/ch);
                    end
                end
            end
        end
    Tu as une erreur à la ligne 64, remplaces :
    par
    Pour la binarisation, tu peux faire aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    II = zeros(size(I));
    II(I<seuil) = 0;
    II(I>seuil) = 255;
    imshow(II)
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  16. #16
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Citation Envoyé par azertyuio Voir le message

    que veux tu dire par l'observation empirique que la tumeur ??
    et comment déterminer la densité du tissu ?
    et pourquoi 1.8??
    J'ai regardé l'image et pensé :
    Il y a une zone plus claire, qui doit être une tumeur,
    sur un fond peu contrasté qui doit être le tissu sain.
    C'est cela qui permet d'utiliser l'IRM pour un diagnostic. Il y a sûrement une explication physique à cela, mais elle sort de notre sujet. C'est cette réponse différente que j'appelle, peut-être à tort densité.
    Le tissu sain recouvre la plus grande partie de l'image, donc sa "densité" est déterminée comme la plus représentée dans l'image, le max de l'histogramme.
    Le facteur 1.8 pour quantifier le "plus clair" est empirique (Il y a sûrement une explication...). Une valeur multiplicative permet d'être insensible à l'exposition globale de l'image. Une valeur un peu différente ne change pas grand chose.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  17. #17
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Points : 92
    Points
    92
    Par défaut
    Bonjour à tous,
    premièrement je m'excuse pour le retard j'avais un problème de connexion pendant le weekend...


    Citation Envoyé par pseudocode Voir le message
    Sur cette image de test, je trouve un seuil à 139 avec mon code.

    Nom : maxentropy.png
Affichages : 162
Taille : 60,0 Ko
    bonjour pseudocode,

    ton résultat est super !!

    Citation Envoyé par pseudocode Voir le message
    Il doit y avoir un problème dans ton portage Matlab.
    oui oui surement et je pense car j'ai pas pu traduire

    hc1(t)= - sum(i=0,t) pi/pc1 ln pi/pc1

    et de même hc2

    car j'ai pas de décrémentation directe en matlab !!

    je peux seulement calculer ( sum(i=0,t) pi/pc1 ln pi/pc1 )
    mais je ne sais pas comment je vais introduire le - pour avoir (-sum(i=0,t) pi/pc1 ln pi/pc1)!!

  18. #18
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par magelan Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        for i=1:256
            hn(i)=h(i)/(n*m);
        end
    peut s'écrire :



    ne correspond pas au code java. Ce serait plutôt :
    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
        hl = zeros(1,256);
        hh = zeros(1,256);
        for t=1:256
            %low range entropy
            cl=double(c(t));
            if cl>0
                for i=1:t
                    if hn(i)>0
                        hl(t) = hl(t)- (hn(i)/cl)*log(hn(i)/cl);                      
                    end
                end
            end
     
            %high range entropy
            ch=double(1.0-cl);  %il faut cl+ch=1
            if ch>0
                for i=t+1:256
                    if hn(i)>0
                        hh(t) = hh(t)- (hn(i)/ch)*log(hn(i)/ch);
                    end
                end
            end
        end
    Tu as une erreur à la ligne 64, remplaces :
    par
    Pour la binarisation, tu peux faire aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    II = zeros(size(I));
    II(I<seuil) = 0;
    II(I>seuil) = 255;
    imshow(II)
    Bonjour magelan

    merci bcp pour les corrections

  19. #19
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par Nebulix Voir le message
    J'ai regardé l'image et pensé :
    Il y a une zone plus claire, qui doit être une tumeur,
    sur un fond peu contrasté qui doit être le tissu sain.
    C'est cela qui permet d'utiliser l'IRM pour un diagnostic. Il y a sûrement une explication physique à cela, mais elle sort de notre sujet. C'est cette réponse différente que j'appelle, peut-être à tort densité.
    Le tissu sain recouvre la plus grande partie de l'image, donc sa "densité" est déterminée comme la plus représentée dans l'image, le max de l'histogramme.
    Le facteur 1.8 pour quantifier le "plus clair" est empirique (Il y a sûrement une explication...). Une valeur multiplicative permet d'être insensible à l'exposition globale de l'image. Une valeur un peu différente ne change pas grand chose.
    Bonjour Nebulix
    donc il suffit de calculer la densité de la zone plus claire (la tumeur) qui représente 0.2 de l'image globale et la zone claire (tissu sain) 1.8
    je dois seulement trouver la méthode qui calcule la densité des tissus !!

  20. #20
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Points : 92
    Points
    92
    Par défaut
    avec les corrections de magelan j'ai eu le même résultat que pseudocode

    meercii bcp

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. prétraitement des images IRM de diffusion
    Par scorpzak25 dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 16/12/2011, 09h35
  2. Prétraitement des images IRM
    Par Rose mary dans le forum Traitement d'images
    Réponses: 5
    Dernier message: 04/08/2011, 15h28
  3. segmentation des images IRM du cerveau
    Par myriamulrik dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 07/01/2011, 11h24
  4. [WD-2003] Comment inserer automatiquement des images dans un tableau word
    Par grooveus75 dans le forum VBA Word
    Réponses: 2
    Dernier message: 06/01/2010, 12h37
  5. Où télécharger des images IRM du crâne ?
    Par Hedidams dans le forum Traitement d'images
    Réponses: 20
    Dernier message: 17/04/2008, 20h14

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