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 :

Recherche d'algorithmes pour l'analyse de la texture


Sujet :

Traitement d'images

  1. #41
    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 084
    Points
    16 084
    Par défaut
    Citation Envoyé par nounadevelop Voir le message
    non pas dans le plan c'est evident que ça ne change pas.
    essaye de faire la matrice de l'image pour ton cas et pour le mien (pas la matrice de coocurrence) tu va trouver que c'est different.
    Je ne comprend rien.

    Je vais reprendre les bases:

    1. La matrice de l'image est un tableau de taille Largeur*Hauteur. Chaque case (x,y) de ce tableau contient la valeur de l'intensité (0...255) du pixel de coordonnée (x,y)

    2. La matrice de covariance est un tableau de taille 256*256. Chaque case (x,y) de ce tableau contient le nombre de pixels d'intensité "x" qui est proche d'un pixel d'intensité "y".

    Le terme "proche" signifie que le vecteur déplacement d'un pixel à un autre est un vecteur constant (dx,dy). Dans le cas d'un vecteur déplacement EST, on a (+1,0).

    Exemple 1:
    - une image 100*100 completement blanche -> les 10.000 pixels ont tous la valeur 255
    - La matrice de covariance (+1,0) associée contient des 0 partout sauf à la case (255,255) qui contient 10.000. En effet, les 10.000 pixels "blancs" ont tous pour voisin un pixel "blanc".

    Exemple 2:
    - une image 100*100 en echiquier noir/blanc -> 5.000 pixels ont la valeur 0 et 5.000 pixels ont la valeur 255
    - La matrice de covariance (+1,0) associée contient des 0 partout sauf les cases (255,0) et (0,255) qui contienent 5.000. En effet, les 5.000 pixels "blancs" ont tous pour voisin un pixel "noir" et les 5.000 pixels "noirs" ont tous pour voisin un pixel "blanc".

  2. #42
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 115
    Points : 18
    Points
    18
    Par défaut
    j'ai modifier ma reponse au dessous, est ce que c'est plus clair pour toi?

  3. #43
    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 084
    Points
    16 084
    Par défaut
    Citation Envoyé par nounadevelop Voir le message
    j'ai modifier ma reponse au dessous, est ce que c'est plus clair pour toi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
       0 1 2 3 4 5
       _ _ _ _ _ _ _
    0 |5|_|_|_|_|_|_
    1 |8|_|_|_|_|_|_
    2 |_|_|_|_|_|_|_
    3 |_|_|_|_|_|_|_
      | | | | | | |
     
    pour moi: 8 est le voisin SUD de 5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    . |_|_|_|_|_|_|_
    3 |_|_|_|_|_|_|_
    2 |_|_|_|_|_|_|_
    1 |_|_|_|_|_|_|_
    0 |5|8|_|_|_|_|_
     
       0 1 2 3 4 5
     
    pour moi: 8 est le voisin EST de 5

  4. #44
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 115
    Points : 18
    Points
    18
    Par défaut
    je comprends maintenant mon probleme. tu a raison.
    une autre question
    mais dans une matrice de coocurrence le nombre de fois ou 0 est à l'EST de 5 est different du nombre de fois ou 5 est à l'EST de 0. n'est ce pas?

  5. #45
    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 084
    Points
    16 084
    Par défaut
    Citation Envoyé par nounadevelop Voir le message
    je comprends maintenant mon probleme.
    c'est l'essentiel.

    une autre question
    mais dans une matrice de coocurrence le nombre de fois ou0 est à l'est de 5 est different de le nombre de fois ou 5 est à l'est de 0. n'est ce pas?
    Oui, bien sur.

    Mais généralement, dans l'analyse de texture, on essaye de ne pas dépendre de l'orientation de l'image. Donc on va calculer les matrices de coocurrences dans les 4 (ou 8) directions et on va faire leur somme.

    M = M_est + M_ouest + M_nord + M_sud

    Mettons qu'on commence à calculer M_est et qu'on trouve que 5 est à l'EST de 0 => on incréménte la case M_est[0][5]

    Mais dire que 5 est à l'EST de 0 c'est équivalent à dire que 0 est l'OUEST de 5. Donc on peut incréménter la case M_ouest[5][0]

    Comme on va faire la somme de toutes les matrices, on peut directement travailler dans la matrice finale M.

    Donc si on trouve que 5 est à l'EST de 0, on incrémente les 2 case M[0][5] et M[5][0].

  6. #46
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 115
    Points : 18
    Points
    18
    Par défaut
    je suis d'accord avec toi.
    seulement je comprend pas ça:

    Mais généralement, dans l'analyse de texture, on essaye de ne pas dépendre de l'orientation de l'image. Donc on va calculer les matrices de coocurrences dans les 4 (ou 8) directions et on va faire leur somme.

    M = M_est + M_ouest + M_nord + M_sud
    le sens d'une matrice de coocurence dans une direction donné est significatif. mais pour la somme, que devient t-il??

  7. #47
    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 084
    Points
    16 084
    Par défaut
    Citation Envoyé par nounadevelop Voir le message
    jle sens d'une matrice de coocurence dans une direction donné est significatif. mais pour la somme, que devient t-il??
    Quand on fait la somme: la direction et le sens ne sont plus significatifs. C'est l'effet recherché.


    Prenons une image binaire pour simplifier (comme ca la matrice de coocurence ne fait que 2x2):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Image 4x4 (rayures verticales)
    1 0 1 0
    1 0 1 0
    1 0 1 0
    1 0 1 0
     
    Mouest Mest   Mnord  Msud  ---> M
    (0 8)  (0 4)  (6 0)  (6 0)   (12,12)
    (4 0)  (8 0)  (0 6)  (0 6)   (12,12)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Image 4x4 (rayures horizontales)
    1 1 1 1
    0 0 0 0
    1 1 1 1
    0 0 0 0
     
    Mouest Mest   Mnord  Msud  ---> M
    (6 0)  (6 0)  (0 8)  (0 4)   (12,12)
    (0 6)  (0 6)  (4 0)  (8 0)   (12,12)

  8. #48
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 115
    Points : 18
    Points
    18
    Par défaut
    tu peut m'expliquer d'avantage;
    C'est l'effet recherché

  9. #49
    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 084
    Points
    16 084
    Par défaut
    Citation Envoyé par nounadevelop Voir le message
    tu peut m'expliquer d'avantage;
    C'est l'effet recherché
    et bien généralement on considère que des rayures verticales ou des rayures horizontales ça représente la même texture: des rayures.

    Donc on veut une matrice de co-occurrences qui ne dépende pas de la direction choisie => on fait la somme des matrice de co-occurrences dans toutes les directions.

  10. #50
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 115
    Points : 18
    Points
    18
    Par défaut
    est ce que toi tu a fait ça pour ton implementation en JAVA(la somme dans les 4 directions) pour avoir au final une matrice dans les 4 directions(M=M_est+..), je veut dire les valeurs finaux de matrix(dans ton code) c'est la somme des matrice de coocurrence dans les 4 directions, et aprés, à partir de cette matrice somme tu calcule 14 indices.c'est ça??

  11. #51
    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 084
    Points
    16 084
    Par défaut
    Citation Envoyé par nounadevelop Voir le message
    est ce que toi tu a fait ça pour ton implementation en JAVA(la somme dans les 4 directions) pour avoir au final une matrice dans les 4 directions(M=M_est+..), je veut dire les valeurs finaux de matrix(dans ton code) c'est la somme des matrice de coocurrence dans les 4 directions, et aprés, à partir de cette matrice somme tu calcule 14 indices.c'est ça??
    Heu... non pas exactement.

    1. J'ai calculé 4 matrices symétiques (donc 8 directions):

    M1 = Nord + Sud
    M2 = Nord-Est + Sud-Ouest
    M3 = Est + Ouest
    M4 = Sud-Est + Nord-Ouest

    2. J'ai calculé 11 caracteristiques pour chaque matrice:

    F(M1)=(f1_1, f1_2, ..., f1_11)
    F(M2)=(f2_1, f2_2, ..., f2_11)
    F(M3)=(f3_1, f3_2, ..., f3_11)
    F(M4)=(f4_1, f4_2, ..., f4_11)

    3. J'ai calculé la moyenne de chacune des 11 caracteristiques:

    F= ( (f1_1+f2_1+f3_1+f4_1)/4 , ..., (f1_11+f2_11+f3_11+f4_11)/4 )


    Pour mon cas personnel, j'ai trouvé que ca donnait de meilleurs résultats que de faire la somme des 4 matrices puis de calculer les 11 caracteristiques sur la matrice finale. Maintenant, c'est à toi de tester la méthode qui te convient le mieux entre F(M1+M2+M3+M4) et Moyenne( F(M1), F(M2), F(M3), F(M4) ), ou meme une autre méthode.

  12. #52
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 115
    Points : 18
    Points
    18
    Par défaut
    d'accord
    parceque dans ton code c'est clair que c'est la methode de la moyenne.

    mais ce qui n'etait pas clair (mais maintenant ne l'est plus) c'est que tu a travailler avec des directions :
    Nord + Sud
    Nord-Est + Sud-Ouest
    Est + Ouest
    Sud-Est + Nord-Ouest

    je penser que tu travailler avec :
    0° pour M1
    45° M2
    90° M3
    135° M4
    maintenant j'ai compris comment tu fait.
    seulement une autre question
    j'ai vu dans le "tutorial"(en anglais )que j'ai deja envoyer, que une des etapes pour le calcule de la matrice de coocurrence c'est de la rendre symetrique, exemple:
    symmetrical(vertical)=> count(south) matrix + transpose(north).
    est ce que toi tu a fait ça pour le calcule de M1(Nord + Sud)??

  13. #53
    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 084
    Points
    16 084
    Par défaut
    Citation Envoyé par nounadevelop Voir le message
    j'ai vu dans le "tutorial"(en anglais )que j'ai deja envoyer, que une des etapes pour le calcule de la matrice de coocurrence c'est de la rendre symetrique, exemple:
    symmetrical(vertical)=> count(south) matrix + transpose(north).
    est ce que toi tu a fait ça pour le calcule de M1(Nord + Sud)??
    Oui. Quand je calcule un coefficient pour la direction NORD j'incremente deux cases de la matrices (symetrie par rapport a la diagonale). Donc ca compte aussi le coefficient pour la direction SUD.

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // on incremente la matrice
    matrix[v0][v1]++;
    matrix[v1][v0]++;

  14. #54
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 115
    Points : 18
    Points
    18
    Par défaut
    donc "si j'ai compris" le calcule de la matrice de coocurrence pour une direction (nord par exemple)implique obligatoirement le calcule de la matrice de coocurrence pour (le sud) pour avoir une symetrie, non??
    je veut dire que : je peut pas dire que j'ai calculer la matrice de coocurrence pour une direction (nord) seulement(et si je dit ça, c'est que le sud c'est implicite)non?

  15. #55
    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 084
    Points
    16 084
    Par défaut
    Citation Envoyé par nounadevelop Voir le message
    donc "si j'ai compris" le calcule de la matrice de coocurrence pour une direction (nord par exemple)implique obligatoirement le calcule de la matrice de coocurrence pour (le sud) pour avoir une symetrie, non??
    je veut dire que : je peut pas dire que j'ai calculer la matrice de coocurrence pour une direction (nord) seulement(et si je dit ça, c'est que le sud c'est implicite)non?
    Non, tu n'es pas "obligé" de calculer les 2 directions simultanément. Mais si tu ne le fais pas, ta matrice de co-occurrences ne sera pas symétrique.

    En soi, ce n'est pas grave. Mais certaines formules utilisées pour le calcul des caractéristiques nécessitent une matrice symétrique.

    On a donc 2 bonnes raisons de calculer les 2 directions simultanément et donc d'avoir une matrice symétrique:

    1. intérêt "mathématique": ça permet d'utiliser les formules standards pour le calcul des caractéristiques

    2. intérêt "analytique": on préfère que les caractéristiques ne dépendent pas de l'orientation de l'image.

  16. #56
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 115
    Points : 18
    Points
    18
    Par défaut
    c'est trés bien.
    et pour ce qui est une fenetre de 17*17, 9*9 ...etc.
    est ce que tu a travailler avec ça déja?. si oui, comment?

  17. #57
    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 084
    Points
    16 084
    Par défaut
    Citation Envoyé par nounadevelop Voir le message
    c'est trés bien.
    et pour ce qui est une fenetre de 17*17, 9*9 ...etc.
    est ce que tu a travailler avec ça déja?. si oui, comment?
    Le terme "fenêtre" désigne une petite zone de l'image sur laquelle on travaille.

    Généralement on ne calcule pas la matrice de co-occurence sur toute l'image. On découpe l'image en zone carrées et on calcule la matrice de co-occurence, puis le vecteur des caracteristiques pour chaque zone.

  18. #58
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 115
    Points : 18
    Points
    18
    Par défaut
    bonjour,

    On découpe l'image en zone carrées
    tu veut dire: fenetre=zone carrée=taille X*X. moi je suis pas d'accord. parceque une image est de dimension Z*Y.

  19. #59
    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 084
    Points
    16 084
    Par défaut
    Citation Envoyé par nounadevelop Voir le message
    tu veut dire: fenetre=zone carrée=taille X*X. moi je suis pas d'accord. parceque une image est de dimension Z*Y.
    Effectivement ca pose un problème sur les bords de l'image car les carrés "dépassent" de l'image. On a alors plusieurs solutions:

    1. Ignorer les bords de l'image. On analyse un carré que s'il est entierement dans l'image

    2. Déplacer les carrés qui débordent, de telle facon qu'ils ne débordent pas. Ca signifie qu'on aura des carrés qui se chevauchent.

    3. Etendre les bords de l'image. Si un carré déborde de l'image, on le remplit avec des pixels de l'image (symétrie miroir, ...)

    Pour l'analyse de textures, il vaut mieux utiliser la méthode 1, ou sinon la 2.

  20. #60
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 115
    Points : 18
    Points
    18
    Par défaut
    avant de poser des questions sur les methodes 1 et 2, je vais poser des questions sur la fenetre:

    1) mes images sont de taille differentes donc de 600*758, 50*100...etc. tu veut me dire que pour faire le decoupage (qui est pratiquement toujours recommandé) il faut TOUJOURS choisir une fenetre CARREE de taille X*X qui va decouper l'image en zones "forcement egaux" de taille X*X "et donc on va avoir un debordement" , et donc faire par la suite une des methodes 1 ou 2. c'est ça??.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 8 PremièrePremière 1234567 ... DernièreDernière

Discussions similaires

  1. recherche un algorithme pour mon cas
    Par omarito15 dans le forum Intelligence artificielle
    Réponses: 3
    Dernier message: 13/05/2013, 00h49
  2. Recherche un algorithme pour faire du curve fitting
    Par benoth08 dans le forum Mathématiques
    Réponses: 1
    Dernier message: 20/01/2013, 20h16
  3. Réponses: 2
    Dernier message: 21/09/2012, 16h23
  4. recherche d'un sujet pour une analyse de donnée
    Par Sarah! dans le forum Statistiques, Data Mining et Data Science
    Réponses: 8
    Dernier message: 08/01/2009, 18h18
  5. Recherche d'un algorithme pour calculer un Checksum
    Par noune40 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/11/2006, 10h46

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