Publicité
+ Répondre à la discussion
Page 2 sur 2 PremièrePremière 12
Affichage des résultats 21 à 35 sur 35
  1. #21
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Il suffit d'appliquer les formules de calcul de moyenne/variance sur les distributions marginales

    Code java :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    // moyenne = somme { p(i,j) * i } 
    double mu_i=0, mu_j=0;
    for (i=0 ; i < MSIZE ; i++) {
    	for(j=0 ; j < MSIZE ; j++) {
    		mu_i += i*matrix[i][j];
    		mu_j += j*matrix[i][j];
    	}
    }
     
    // variance = somme { p(i,j) * (i-moyenne)^2 } 
    double var_i=0, var_j=0;
    for (i=0 ; i < MSIZE ; i++) {
    	for(j=0 ; j < MSIZE ; j++) {
    		var_i += matrix[i][j]*pow(i-mu_i,2);
    		var_j += matrix[i][j]*pow(j-mu_j,2);
    	}
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  2. #22
    Futur Membre du Club
    Inscrit en
    octobre 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 58
    Points : 17
    Points
    17

    Par défaut

    Bonjour,

    Je te remercie pseudocode. Je sais comment calculer mux et muy et également les variances sigmax et sigmay.
    Par contre, je voudrais savoir une chose.
    Pour une matrice quelconque, on a d'une part mux et d'autre part muy.
    Mais comment faut il faire pour avoir une seule valeur pour la moyenne à partir de la matrice de cooccurrence d'une matrique quelconque (non symétrique)?
    En ce qui concerne l'unique valeur de la variance, il n'y a pas de problèmes puisqu'elle se calcule à partir d'une unique valeur de moyenne mais justement comment avoir cette unique moyenne.
    Sinon, j'ai pensé à faire (mux+muy)/2 pour obtenir cette moyenne mais je ne sais si on peut le faire comme ça.

    Je vous remercie par avance

  3. #23
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par Henry22 Voir le message
    Bonjour,

    Je te remercie pseudocode. Je sais comment calculer mux et muy et également les variances sigmax et sigmay.
    Par contre, je voudrais savoir une chose.
    Pour une matrice quelconque, on a d'une part mux et d'autre part muy.
    Mais comment faut il faire pour avoir une seule valeur pour la moyenne à partir de la matrice de cooccurrence d'une matrique quelconque (non symétrique)?
    En ce qui concerne l'unique valeur de la variance, il n'y a pas de problèmes puisqu'elle se calcule à partir d'une unique valeur de moyenne mais justement comment avoir cette unique moyenne.
    Sinon, j'ai pensé à faire (mux+muy)/2 pour obtenir cette moyenne mais je ne sais si on peut le faire comme ça.

    Je vous remercie par avance
    Non, la variance ne se calcule pas a partir d'une valeur unique. Il y a la variance sur "i" qui se calcule a partir du mu_i, et la variance sur "j" qui se calcule a partir du mu_j.

    Quand a avoir une moyenne "globale" a partir de mu_i et mu_j, c'est à toi de voir ce que tu cherches a calculer. Effectivement, prendre la moyenne arithmétique me semble pas mal.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #24
    Futur Membre du Club
    Inscrit en
    octobre 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 58
    Points : 17
    Points
    17

    Par défaut

    Bonjour,

    Ok, pseudocode je pense que je vais plûtot prendre la valeur arithmétique. Mais, du coup je trouve curieux que ToTo13 considère que toutes les matrices de cooccurrence que génèrera son programme seront symétrique car en générale, une matrice de cooccurrence d'une image quelconque a peu de chance d'être symétrique.
    Sinon, moi je voudrais calculer un maximum de paramètre à partir d'une matrice de cooccurrence afin de pouvoir discriminer une image naturelle d'une image de synthèse.
    Pour l'instant, j'ai la moyenne définit comme (mux+muy)/2, la variance définit par (sigmax+sigmay)/2 (toujours car je considère des matrices de cooccurrences quelconques) et maintenant, je viens de faire le cacul de la correlation.
    J'ai utilisé le code suivant sous scilab seulement pour la direction 0 de la matrice de cooccurrence et je considère que cette matrice contient 6 niveaux de gris (pour l'instant pour faire des tests):
    Je définis la matrice A=[1,5,1;5,1,5;1,5,1].

    Code :
    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
    function [y1,y2,y3,mat]=correlation_normal(A)
    
    //Calcul de la matrice de cooccurence en considérant 6 niveaux de gris
    matco_0=zeros(6,6);
    for i=1:3
    	for j=1:2
    		x=A(i,j);
    		y=A(i,j+1);
    		matco_0(x+1,y+1) = matco_0(x+1,y+1) + 1;
    	end
    end
    
    matco_180=matco_0';
    S0=(matco_0+matco_180)*0.5;
    //Normalisation de la matrice
    somme0=sum(S0);
    S0norme=S0/somme0;
    
    //Calcul des moyennes sur les distributions marginales
    moyi=0;
    moyj=0;
    for i=1:6
    	for j=1:6
    		moyi=moyi+i*S0norme(i,j);
    		moyj=moyj+j*S0norme(i,j);
    	end
    end
    moyennei=moyi;
    moyennej=moyj;
    
    //Calcul des variances sur les distributions marginales
    variancei=0;
    variancej=0;
    for i=1:6
    	for j=1:6
    		variancei=variancei+(i-moyennei)*(i-moyennei)*S0norme(i,j);
    		variancej=variancej+(j-moyennej)*(j-moyennej)*S0norme(i,j);
    	end
    end
    
    //Calcul de la correlation
    correlation=0;
    for i=1:6
    	for j=1:6
    		correlation=correlation+(i-moyennei)*(j-moyennej)*S0norme(i,j);
    	end
    end
    correlation=correlation/(variancei*variancej);
    y1=(moyennei+moyennej)/2;
    y2=(variancei+variancej)/2;
    y3=correlation;
    mat=S0norme;
    endfunction
    Lorque j'applique ce code sur la matrice A, j'obtiens la correlation y=-0.25.
    J'obtiens donc un résultat négatif, est ce normal?
    Sinon pour les moyenne et variance y1 et y2 j'obtiens 4.
    La variance mesurant le degré de variation des valeurs, cela me semble correcte.
    Par contre, pour la moyenne j'ai un doute car cela voudrait dire que le niveau de gris utilisé est en moyenne 4, ce qui n'est pas le cas dans la matrice A.

    Je vous remercie d'avance

  5. #25
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par Henry22 Voir le message
    Bonjour,

    Ok, pseudocode je pense que je vais plûtot prendre la valeur arithmétique. Mais, du coup je trouve curieux que ToTo13 considère que toutes les matrices de cooccurrence que génèrera son programme seront symétrique car en générale, une matrice de cooccurrence d'une image quelconque a peu de chance d'être symétrique.
    Elle est symétrique par construction. Dans le code de ToTo13, a chaque fois qu'on a un pixel "v0" à coté d'un pixel "v1", on considère qu'on a aussi "v1" à coté de "v0":
    Code :
    1
    2
    3
    	// on incremente la matrice
    	matrix[v0][v1]++ ;
    	matrix[v1][v0]++ ;
    Je définis la matrice A=[1,5,1;5,1,5;1,5,1].

    Lorque j'applique ce code sur la matrice A, j'obtiens la correlation y=-0.25.
    J'obtiens donc un résultat négatif, est ce normal?
    Sinon pour les moyenne et variance y1 et y2 j'obtiens 4.
    La variance mesurant le degré de variation des valeurs, cela me semble correcte.
    Par contre, pour la moyenne j'ai un doute car cela voudrait dire que le niveau de gris utilisé est en moyenne 4, ce qui n'est pas le cas dans la matrice A.

    Je vous remercie d'avance
    Oui, la corrélation peut être négative.

    Pour la moyenne, il faut voir que dans ton calcul tu ne prends que 6 paires de pixels pour calculer ta matrice. La moyenne est donc différente de la moyenne arithmétique des 9 valeurs de départ.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #26
    Futur Membre du Club
    Inscrit en
    octobre 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 58
    Points : 17
    Points
    17

    Par défaut

    Bonjour,

    Merci pseudocode. J'ai compris pourquoi il y avait un problème par rapport à ma moyenne. Car dans ma matrice de cooccurrence de 6 niveaux de gris, c'est en fait une matrice de cooccurrence de 5 niveaux de gris en prenant en compte le niveau de gris 0.
    Or, en scilab on ne peut pas appeller le tout premier élément d'une matrice avec M(0,0), on est obligé de faire M(1,1). Du coup, dans mon calcul de moyenne je dois pas mettre "moyi=moyi+i*S0norme(i,j);" mais"moyi=moyi+(i-1)*S0norme(i,j);" afin de prendre en compte le niveau de gris 0.

    Sinon, par rapport au fait que ToTo13 fait directement une matrice symétrique pour obtenir la matrice de cooccurence pour la direction horizontale par exemple, j'aurais une question.
    Moi, au départ pour obtenir une matrice de cooccurence avec la direction horizontale, une fois que j'ai la matrice pour l'angle 0°, je déduisais la matrice pour 180° en prenant la transposé et ensuite j'additionnais ces deux matrice et je divisais par 2, comme on peut le voir dans le code suivant: S0 était la matrice finale non normalisé (en fait elle était déjà symétrique).

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    matco_0=zeros(6,6);
    for i=1:3
    	for j=1:2
    		x=A(i,j);
    		y=A(i,j+1);
    		matco_0(x+1,y+1) = matco_0(x+1,y+1) + 1;
    	end
    end
    
    matco_180=matco_0';
    S0=(matco_0+matco_180)*0.5;
    Donc à la fin je divisais bien par 2. Par contre, ToTo13 ne divise pas sa matrice par 2, une fois son calcul de matrice de cooccurrence effectué en faisant:

    Code :
    1
    2
    3
    4
    // on incremente la matrice
    	matrix[v0][v1]++ ;
    	matrix[v1][v0]++ ;
    Est-ce une erreur? Faut il obligatoirement divisé par 2?
    Car moi, en divisant la matrice de ToTo13, je retrouve exactement S0 de mon calcul précédent.
    Sinon, j'aurais une autre question, que traduit la corrélation sur une image au juste?

    Je vous remercie par avance

  7. #27
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par Henry22;5218925Donc à la fin je divisais bien par 2. Par contre, ToTo13 ne divise pas sa matrice par 2, une fois son calcul de matrice de cooccurrence effectué en faisant:

    [code
    // on incremente la matrice
    matrix[v0][v1]++ ;
    matrix[v1][v0]++ ;
    [/code]

    Est-ce une erreur? Faut il obligatoirement divisé par 2?
    Car moi, en divisant la matrice de ToTo13, je retrouve exactement S0 de mon calcul précédent.
    Si, ToTo13 divise bien par 2. Lorsqu'il normalise la matrice, il prend bien en compte le fait d'avoir ajouté 2 entrés dans la matrice.

    Code :
    1
    2
    3
    4
    5
    // on incremente la matrice
    // on incremente la matrice
    matrix[v0][v1]++ ;
    matrix[v1][v0]++ ;
    sum += 2 ;
    Sinon, j'aurais une autre question, que traduit la corrélation sur une image au juste?
    Ca mesure la linéarité entre les paires de pixels. La corrélation est grande si la linéarité est forte (c'est généralement le cas pour les textures grossières, ou beaucoup de pixels du voisinage ont des valeurs identiques)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #28
    Futur Membre du Club
    Inscrit en
    octobre 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 58
    Points : 17
    Points
    17

    Par défaut

    Bonjour,

    Je te remercie pseudocode.
    J'aurais aussi besoin de m'intéresser à la classification maintenant que le travail sur les paramètres est en train de se terminer. On m'a dit qu'il existe une multitude de méthodes de classification. Pourrais je savoir si tu peux me diriger vers des sites qui parlerait de la classification dont j'ai besoin. Car en allant sur google scholar je trouve vraiment de tout car il existe une multitude de méthodes. Connaitrais tu une/des méthodes de classification qui pourrait m'orienter vers ce dont j'ai besoin, la discrimination des images naturelles et des images de synthèse?

    Je vous remercie d'avance

  9. #29
    Modérateur
    Avatar de ToTo13
    Homme Profil pro Guillaume
    Ingénieur de Recherche
    Inscrit en
    janvier 2006
    Messages
    5 238
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume
    Âge : 35
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2006
    Messages : 5 238
    Points : 8 777
    Points
    8 777

    Par défaut

    Bonjour,

    oula... y eut du débat (j'ai encore fait des bêtises ?)

    Justes une petite remarque concernant la/les méthodes de caractérisation. D'après les tests que j'ai réalisé et les différents articles que j'ai lu, les Run Length Matrix (GLRLM) donnent de meilleurs résultats pour le classement d'images quelconques. Même si c'est une méthode moins connue, elle semble plus efficace dans la majorité des cas (sauf dans ma thèse )

    Pour tout ce qui est méthode de classement, ouvre donc une discussion dans le forum IA.
    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.

  10. #30
    Futur Membre du Club
    Inscrit en
    octobre 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 58
    Points : 17
    Points
    17

    Par défaut

    Bonjour,

    J'aimerais avoir des précisions sur ce que calcule vraiment la corrélation. J'ai un peu de mal à interpréter cette formule.
    Je sais que:
    Ce paramètre vaut 1 dans le cas où l'une des variables est fonction affine croissante de l'autre variable et -1 si la fonction affine est décroissante. Une corrélation de 0 signifie que les variables sont linéairement indépendantes.
    Or ceci est le cas lorque qu'au numérateur de la formule nous avons (xi-moyennex)(yi-moyenney) avec xi et yi des variable aléatoire.
    Mais lorsqu'au numérateur nous avons (i-moyenne)(j-moyenne)*p(i,j), comment interpréter la formule? Puisque dans ce cas i et j ne sont plus des variables aléatoire mais représente des niveaux de gris.

    Je vous remercie d'avance

  11. #31
    Invité de passage
    Inscrit en
    octobre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : octobre 2010
    Messages : 3
    Points : 4
    Points
    4

    Par défaut

    Bonjour;

    je comprends pas l'avantage d'une matrice symétrique;
    Code :
    1
    2
    3
    matrix[v0][v1]++ ;
    matrix[v1][v0]++ ;
    sum += 2 ;
    et pour le calcul du gray level
    Code :
    int v0 = (int)((double)MSIZE*(double)this.image.getPix(y0, x0)/256.0) ;
    est ce que j'aurai le meme résultat si je ferai
    Code :
     (int) ((double) MSIZE * ( double) ( pixel.red+ pixel.blue+ pixel.green)/ (256*3));
    et merci d'avance.

  12. #32
    Modérateur
    Avatar de ToTo13
    Homme Profil pro Guillaume
    Ingénieur de Recherche
    Inscrit en
    janvier 2006
    Messages
    5 238
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume
    Âge : 35
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2006
    Messages : 5 238
    Points : 8 777
    Points
    8 777

    Par défaut

    Citation Envoyé par sinim Voir le message
    je comprends pas l'avantage d'une matrice symétrique;
    Code :
    1
    2
    3
    matrix[v0][v1]++ ;
    matrix[v1][v0]++ ;
    sum += 2 ;
    Mmm... question de choix. En fait cela permet surtout de mettre dans une même matrice les informations pour des déplacements de d et -d.


    Citation Envoyé par sinim Voir le message
    est ce que j'aurai le meme résultat si je ferai
    Code :
     (int) ((double) MSIZE * ( double) ( pixel.red+ pixel.blue+ pixel.green)/ (256*3));
    Non !
    La tu fais la moyenne des pixels couleurs, si tu veux passer de la couleur aux niveaux de gris, regarde ici.
    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.

  13. #33
    Invité de passage
    Inscrit en
    octobre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : octobre 2010
    Messages : 3
    Points : 4
    Points
    4

    Par défaut

    je vous remercie TOTO;

    j'ai encore une question, j'ai un traitement d'image médicale où toute information est importante est-ce que je dois utiliser une matrice symétrique ??
    En fait cela permet surtout de mettre dans une même matrice les informations pour des déplacements de d et -d.
    dans notre cas D=1 où l'angle = 0,45,90,135 ( le point initial c'est P) donc
    0 [0 D]
    45 [-D D]
    90 [-D 0]
    135 [-D -D] P1
    D(P,P1) où l'angle=135 ( le point initial est P), -D ( P,P1) = D(P1,P) si on considére que P1 est le point initial l'angle sera = 315 ça implique qu'on a calculé pour P1 l'angle= 315, aprés avoir parcourir toute l'image on trouvera à la fin qu'on a calculé D=1 et angle= 0,45,90,135,180,225,270,315 pour chaque pixel, non??!
    et pour votre code
    Code :
    int v0 = (int)((double)MSIZE*(double)this.image.getPix(y0, x0)/256.0) ;
    je comprends pas ce que vous avez fait?? normalement c'est le calcul du niveau de gris du Pixel(y0,X0) donc
    Code :
    (int) ( (pixel.red+ pixel.blue+ pixel.green)/ 3)
    sera suffisant pourquoi multiplier par la taille de la matrice et diviser sur 256?
    je vous remercie encore une fois.

  14. #34
    Modérateur
    Avatar de ToTo13
    Homme Profil pro Guillaume
    Ingénieur de Recherche
    Inscrit en
    janvier 2006
    Messages
    5 238
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume
    Âge : 35
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2006
    Messages : 5 238
    Points : 8 777
    Points
    8 777

    Par défaut

    - S'il te faut un maximum d'information, tu peux effectivement calculer la matrice symétrique dans quatre direction et faire la moyenne.

    - Pour la moyenne des couleurs dans un pixel, c'est NON !!! Voir mon lien vers wikipédia.

    - Le calcul "* SIZE / 256" permet de réduire le nombre de niveaux de gris (cf. une autre de mes contributions), car on utilise presque jamais la matrice de cooccurrences en 256 niveaux de gris, mais on réduit afin d'être plus robuste au bruit.
    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.

  15. #35
    Invité de passage
    Inscrit en
    octobre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : octobre 2010
    Messages : 3
    Points : 4
    Points
    4

    Par défaut

    okay, merci beaucoup.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •