Je ne connais pas de solution universelle pour l'analyse de texture.
Mais pour commencer, je te conseille de toujours découper toutes tes images en carrés de taille X*X.
Je ne connais pas de solution universelle pour l'analyse de texture.
Mais pour commencer, je te conseille de toujours découper toutes tes images en carrés de taille X*X.
c'est trés bien, merci.
seulement une question que j'ai oublié de posé avant :
pourquoi le decoupage est recommandé??. et pourquoi en zones(fenetres) carrée??. je dit ça parceque j'ai une autre solution qui me vient à la tete:
faire un decoupage de l'image en zones non egaux et donc pas besoin d'ignorer les bords ou de chevaucher.qu'est ce que tu pense??
je comprends pas vraiment. qu'est ce qu'un carré ou rectangle ou cercle a avoir avec les directions??
Hum... c'est vrai que c'est pas évident à comprendre.
Le plus simple c'est que tu prennes 2 images indentiques:
* tu découpes la 1ere image en bandes horizontales.
* tu prend la 2nde image, tu la fais pivoter de 90° et du la découpes également en bandes horizontales.
tu verra que les bandes horizontales de la 1ere images et celles de la 2nde image ne se ressemblent pas.
Tu refais la meme manipulation en découpant les images en carrés et tu verras qu'il y a des carrés qui se ressemblent (à une rotation près).
d'accord c'est clair maintenant. merci.
pour ce qui est methode de decoupage, je pense que la methode qui ignore les bords est plus simple. non??
trés bien. je vais opter pour ça.
maintenant mes images ont des dimensions trés eloigné :
86*126, 79*85, ...ou bien encore 600*892...et meme ceux que j'ignore (ces des images que google me renvoit donc je ne connait pas la taille a priori), donc ma question comment choisir la taille de ma fenetre (les carrées) pour faire un bon decoupage ??. est ce que 3*3 est trop petit?? 9*9 est bon?? 17*17 est trop grand??.
C'est un grand problème auquel je n'ai pas de solution magique.
Personnellement, j'utilise la méthode du split/merge:
je découpe l'image en zones de grande taille (256x256) et je calcule les caractéristiques dans chaque zone. Si les caractéristiques d'une zone sont celles d'une texture connue, j'arrête la. Sinon je redécoupe la zone en 4 zones plus petites (128x128) et je recalcule les caractéristiques dans ces 4 zones. En ainsi de suite jusqu'à ce que toutes les zones soient reconnues, ou que j'ai atteint une taille limite (8x8) .
Cette méthode implique d'avoir une base des textures connues.
bonjour,
tu peut m'expliquer d'avantage??.Cette méthode implique d'avoir une base des textures connues.
merci d'avance.
tu veut dire que pour les images de ma base de données(et qui vont former ma base de test), pour chaque image je choisi une zone(pas dans le sens de fenetres de decoupage) que je juge interessante. c'est ça?Ces vecteurs de caracteristiques connus sont précalculés à partir de zones choisies manuellement sur des images de référence.
bonjour,
j'avoue que je suis un peu perdu dans cette histoire
d'un coté tu me dit qu'il faut découper l'image en carrées de X*X , et de l'autre coté pour chaque image de ma BDD je choisi une seul zone d'interet???????????????
Pas forcément "une seule" zone.
L'idée c'est que ta base de références contient des "vignettes" (= des petits carrés d'images) pour lesquelles tu as MANUELLEMENT reconnu le type de la texture.
Par exemple, dans base de références, tu peux avoir:
- 25 vignettes de type "ecriture sur fond uniforme"
- 19 vignettes de type "ecriture sur fond avec motif #1"
- 11 vignettes de type "fond avec motif #1 sans ecriture"
- 5 vignettes de type "fond uniforme"
...
Ensuite, tu découpes ta NOUVELLE image à analyser en petits carrés X*X et tu compares le vecteur de caracteristiques de chaque carré X*X avec le vecteur de caracteristiques de chaque vignette de ta base de références.
A la fin, tu va obtenir pour cette NOUVELLE image une estimation de son contenu, par exemple:
50% "ecriture arabe sur fond uniforme"
20% "fond uniforme sans ecriture"
30% non indentifié
bon d'accord je reviens sur ça aprés..parceque j'aimerais posé des questions sur ton code JAVA (avant d'attaquer le decoupage):
1) pour ton code JAVA tu n'a pas fait le decoupage:
le calcule de la matrice de coocurrence pour toute l'image t'a donner de meilleur resultat ou quoi??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for(int y0=0;y0<height;y0++) { for(int x0=0;x0<width;x0++)
2)
c'est pour initialiser à 0 (tableau et matrice). c'est ça?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 "Arrays.fill(px_y, 0);" ou bien encore : "for(int i=0;i<MSIZE;i++) Arrays.fill(matrix[i], 0);"
Non je n'ai pas fait de découpage. Le code est un exemple d'implémentation pour le calcul de la matrice de co-ocurrence. Ce n'est pas une solution clé-en-amin pour la reconnaissance de textures dans une image.
oui, c'est ca. Ce n'est pas utile de le faire en Java car les structures sont initialisées à 0 par défaut. Je l'ai quand meme fait pour aider ceux qui voudraient porter le code dans un autre langage.2)
c'est pour initialiser à 0 (tableau et matrice). c'est ça?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 "Arrays.fill(px_y, 0);" ou bien encore : "for(int i=0;i<MSIZE;i++) Arrays.fill(matrix[i], 0);"
bonsoir,
j'ai essayer de calculer la matrice de coocurrence pour une de mes images(sans faire de decoupage, bon je sait qu'il faut le faire, mais sait juste un essai). et j'ai eu comme resultats(les caracteristiques):
f1=0,000249
f2=868,63
f3=0,00026
f4=3321,499
f5=0,1224
f6=683,60
f7=5728469,75
f8=9,980
f9=8,80
f10=523,9
f11=3,86
que pense tu de ces resultats? je veut dire comment je peut savoir que les resultats sont bon?(comme par exemple le f7=5728469,75 est ce que c'est normale d'avoir une telle valeur pour le f7).
une autre question concernant ton code JAVA,
tu est sur que (k<2*MSIZE-1) ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // F6 - Moyenne des sommes private double getF6() { double sumavg=0; for(int k=2;k<2*MSIZE-1;k++) { sumavg+=k*pxy[k]; } return sumavg; }
il me semble que c'est (k<=2*MSIZE-1) ou bien (k<2*MSIZE), non??
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager