# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  Reconnaissance des formes pour diffrencier des arbres  partir de leurs feuilles

## imlaoj

Bonjour, tout le monde 

J'ai un projet sur la reconnaissance des arbres, programm sous Matlab.
Pour l'instant, j'ai une base de donnes d'une centaine des photos des arbres. Je voudrais les diffrencier  partir de: 

1 Tronc ou squelette 
2 Contour
3 Feuille
4 Couleur

Pour 1 et 4, a va aller, mais pour 2, j'aimerais bien utiliser le contour actif, problme est que a m'a l'air incomprhensible. Par contre, pour 3, l'ide est qu'on choisit une rgion qui contient qu'une feuille et la compare avec les autres, mais je sais pas comment faire! 

Excusez-moi si j'ai pas bien exprim, et vous remercie par avance!

----------


## ArgusAzure

Tu parles d'identification ? Tu as combien de classes?

----------


## ToTo13

Bonjour,

les contours actifs (snakes) sont une mthode de segmentation et non de reconnaissance de formes.
Renseigne toi sur tout ce qui est mthode de caractrisation :
 - contour => chanes de Freeman, MSGPR (trs bien celle l), ondelettes, transforme de Fourier.
 - globale (car ton arbre peut tre caractris dans sa totalit) => indices de formes, signature polaire, histogrammes de projections, ...

Pour ce qui est analyse des feuilles, je te conseille de regarder tout ce qui est analyse de texture, car tu ne parviendra sans doute pas  isoler une feuille, mais plutt une zone avec des feuilles => Haralick features  partir des matrices de cooccurrences.

----------


## imlaoj

excusez-moi de rpondre si tard. En fait, j'ai 5 classes des arbres  traiter. Platane, sapin, saule, marronnier et l'autre avec les feuille rouge (je connais pas son nom ::oops:: ) . Je suis tjs  la recherche de bonnes mthodes pour les identifier. Est-ce que vous avez des conseils dessus, je vous remercie par avance.

----------


## ToTo13

Bonjour,

mmm... vu ton problme, j'aurai tendance  essayer de le rsoudre par tous les aspects, il n'y en aura pas de trop :
 - Segmenter et caractriser le tronc => texture, forme et rapport entre taille du tronc et volume de l'arbre.
 - Segmenter l'arbre sans le tronc pour reconnatre le feuillage => caractriser la forme car elle sera diffrente en fonction des arbres (indices de formes semblent trs bien ici) et lancer tout un tas d'analyses avec les matrices de cooccurrences et les run length matrix.

Question trs importante : combien d'images as tu pour traiter ce problme ?
Si tu peux en avoir un grand nombre, il sera alors trs utile d'utiliser un classifieur.

----------


## imlaoj

> - Segmenter et caractriser le tronc => texture, forme et rapport entre taille du tronc et volume de l'arbre.


Merci, ToTo13! Justement, je pensais aussi  caluler le rapport entre le tronc et le volume, mais je ne sais pas comment le raliser!




> - Segmenter l'arbre sans le tronc pour reconnatre le feuillage => caractriser la forme car elle sera diffrente en fonction des arbres (indices de formes semblent trs bien ici) et lancer tout un tas d'analyses avec les matrices de cooccurrences et les run length matrix.


Eh, j'ai pas bien suivi sur ce point. Est-ce que vous avez un exemple sur a?




> Question trs importante : combien d'images as tu pour traiter ce problme ?
> Si tu peux en avoir un grand nombre, il sera alors trs utile d'utiliser un classifieur.


J'ai 5 classes des arbres et chacune contient une vingtaine de photos. Comment on construit un classifieur?

----------


## ToTo13

Bonjour,




> Merci, ToTo13! Justement, je pensais aussi  caluler le rapport entre le tronc et le volume, mais je ne sais pas comment le raliser!


Le but est de segmenter l'arbre, puis de diffrencier ensuite le tronc du feuillage.
Il suffit ensuite de faire le rapport du nombre de pixel constituant le tronc sur le nombre de pixel formant le feuillage. Cela est faisable car toutes ces informations auront t prises sur la mme image, donc  la mme chelle.






> Eh, j'ai pas bien suivi sur ce point. Est-ce que vous avez un exemple sur a?


En fait, le feuillage (dans sa globalit) doit lui aussi tre trait en fonction de sa forme et de sa texture :
 - Pour la forme, j'utiliserai des indices de formes. Ils permettent de caractriser la forme du feuillage aussi bien dans sa globalit que sur des zones locales en fonction des indices utiliss.
Tu peux aussi regarder du cot des histogrammes de projection et de la signature polaire, mais aprs un comparatif rcent que j'ai effectu, c'est souvent moins efficace.
 - Pour la texture, je pense qu'une caractrisation globale par matrice de cooccurrences est trs bien pour un premier test (il y a du code dans la rubrique contribuez). C'est un mthode trs efficace dans ce genre de problme, donc bien pour commencer. Tu pourras trouver des mthodes plus complexes pour affiner si c'est insuffisant.






> J'ai 5 classes des arbres et chacune contient une vingtaine de photos. Comment on construit un classifieur?


Avant toute chose, il est indispensable de construire un vecteur caractristique. C'est une suite de valeurs extraites sur l'objet  caractriser. Dans ton cas, cela peut tre la valeur de dix indices de formes et de dix caractristiques Haralick calcules sur la matrice de cooccurrences.
Ensuite, il te faut choisir un classifieur :
 - K plus proches voisins => bien pour commencer, mais dans ton cas tu n'as sans doute pas assez d'individus. Mais  tester quand mme.
 - Random Forest => Mthode non linaire base sur les arbres de dcision.
 - Rseau de neurones type perceptron => Trs puissant, mais trs bourrin. Peut modliser tout type de problme du moment qu'il n'est pas chaotique et que l'on sait manipuler le modle.

Mais on en est pas encore l, il te faut d'abord extraire toutes les caractristiques ncessaire, ensuite tu utiliseras un des nombreuses librairies contenant tout cela.

Comme tu as cinq classes bien distinctes avec une expertise, je te conseille de commencer par faire un simple K-means pour commencer et voir sur cette mthode permet de sparer correctement tes individus. Si a marche, inutile d'aller plus loin pour l'instant.


Si tu as d'autres questions...

----------


## imlaoj

Je vous remercie vivement, ToTo13. Je vais essayer ces mthodes proposes!

Pour la matrice de cooccurrence, j'ai pas trouv le code sous Matlab.  ::oops::

----------


## ToTo13

Bonjour,

pseudocode et moi-mme avons mis du code Java dans la rubrique contribuez.
Il est assez simple  traduire.

Sinon le remplissage d'une matrice de cooccurrences est plutt simple et rapide, donc facilement reprogrammable  ::):  De nombreuses discussions ont d'ailleurs eus lieu sur ce forum.

----------


## imlaoj

Merci ToTo13, je vais essayer de les traduire. 

Par contre, j'ai d'autres questions sur le contour actif. Est-ce que vous connaissez une mthode pour extraire le contour d'un objet sur un fond non uniforme. Par exemple, les photos d'arbres que j'ai prises, est-ce qu'on peut dtecter les formes des arbres. Les mthodes existantes sont normalement pour une image avec le fond uniforme.

----------


## ToTo13

Bonjour,

je suis pas super copain avec la segmentation.
Sur l'image de gauche, un contour actif marchera trs bien.
Sur celle de droite, il y a un haie en bas et un arbre qui touche. Donc ces deux lments seront dtects si on fait une tude de la couleur  ::(: 

A premire vue, je me demande si le seul point fiable sur toutes les images a n'est pas le tronc.
On dtecte le tronc et on couple cette information avec une dtection par la couleur, comme a on pourra liminer la haie qui sera trop basse  ::):

----------


## imlaoj

Bonjour, je voudrais savoir quelle mthode vous avez utilis et comment la raliser? Je vous remercie par avance.

----------


## ToTo13

Bonjour,

c'tait une suggestion, je ne l'ai pas test  ::):

----------


## imlaoj

Merci quand mme, ToTo13. J'ai une autre question.  ::oops::  Une fois on a les images segmentes, est-ce qu'il existe une mthode pour les classifier ou calculer leur similarit?

----------


## ToTo13

Bonsoir,

une fois que tu as segment les diffrentes rgions que tu souhaites, il faut d'abord les caractriser afin de construire un vecteur caractristique (descriptif).

Ensuite, il existe tout un tas de mthodes plus ou moins efficace selon ton problme pour classer les individus (ici les arbres). Elles se divisent en deux grandes familles :
 - mthode par apprentissage supervis. Cela implique d'avoir un ensemble d'individus dont tu connais dj la classe d'appartenance.
 - mthode par apprentissage non supervis. Le modle apprend au fur et  mesure et dtermine le nombre et le type des classes.

Maintenant si tu souhaites comparer les similarits entres des images, cela s'appelle "image matching" ou si c'est juste entres les formes "shape matching". Dans les deux cas la littrature regorge d'articles sur le sujet, tu n'auras que l'embarras du choix  ::): .


Dans ton cas je pense que tu souhaites effectuer un classement et que tu as dj des classes d'appartenance.

----------


## imlaoj

Salut, ToTo13, merci de ta reponse. L j'ai pas trouv de code sur le 'shape matching'. Par contre, j'ai une question concernant ce code de 'snake'. Comment on peut le rdiger si on veut partir  l'intrieur de l'arbre? Merci par avance!

----------


## ToTo13

Bonjour,

si j'ai bien compris ton problme, tu souhaites initialiser ton snake  l'intrieur de l'arbre et le faire converger par grossissement.
Si c'est bien cela, regarde les techniques de type "ballon force". C'est un version des snakes qui fait ce que tu souhaites.

----------


## imlaoj

::king::  C'est dj rsolu le problme. Merci ToTo13.

----------


## ToTo13

Bonjour,

flicitations.
Si tu as russi  avoir une version des snakes en mode Ballon force, merci de donner le lien qui t'a inspir ou mieux  ::D:  de donner le code dans la rubrique contribuez  ::): 

Maintenant que tu sais segmenter les arbres, tu peux extraire les mesures pour calculer les indice de formes. Les premiers rsultats de classement devraient aller vite.

----------


## imlaoj

Mais au niveau des indices de formes, je ne sais pas trop sur ce sujet. Par contre, j'ai vu le demo sur la dtection d'un objet rond. Est-ce que a peut tre un type d'indice de formes ::?:

----------


## ToTo13

Bonjour,

dtection d'un objet rond... jamais vu. Ils font a avec des indices de formes  :8O:  ?

Pour les indices de formes, c'est trs facile au niveau concept. par dfinition, un indice de formes est tous valeur, coefficient ou ensemble de coefficient capable d'apporter une information numrique sur la forme.
Les plus connu sont : le dficit iso-primtrique, l'talement de Morton et aprs il y en a toute une flope qui n'ont pas de nom.
Si tu le souhaites je peux t'envoyer un document (brute pour l'instant) qui contient toute la liste des indices de formes que je connais ainsi que la faon de calculer les mesures qui composent les indices.

----------

