Ecogramme

Un article de Mwyann.info.

   login:

      

Ceci est un programme fonctionnant sous Linux. En principe, toutes les versions de Linux devraient pouvoir faire fonctionner ce programme. Un Linux installé avec les outils par défaut devrait suffire, sauf s'il est spécifié des librairies supplémentaires.

   

 

A propos du projet
SystèmeLinux
CompatibleCygwin
Étape de dév.Terminé
LangagePascal
Création05/2007

 

J'ai réalisé de programme pour un ami, Mathieu, qui travaille dans la gestion forestière. Il a numérisé un livre sur les espèces végétales, et il voulait pouvoir extraire les informations des écogrammes. J'ai donc réalisé un programme qui analyse et extrait ces informations automatiquement.

J'ai indiqué que ce programme est fait pour Linux, alors qu'un programme en Pascal serait censé fonctionner sur un système Windows aussi. Mais le programme Pascal ne sert qu'à l'analyse et l'extraction des informations. Un script est aussi utilisé afin de transformer le fichier jpg en fichier binaire, qui est ensuite analysé. Ce programme est écrit en Bash, et je me sers des outils tels que jpegtopnm pour transformer les fichiers jpg. J'estime donc qu'il est fait pour Linux, même si une installation standard de Cygwin sera capable de faire tourner le programme.

Sommaire

Présentation d'un écogramme

Exemple d'écogramme. Cette documentation a été écrite en LaTeX, plus en détail, si ça vous intéresse.

Un écogramme représente l'environnement où peut se développer une plante (taux d'humidité ainsi qu'acidité du sol).

En hauteur, nous avons le gradient hydrique, qui représente le taux d'humidité :

  • XX = Xérophile
  • X = Mésoxérophile
  • m = Mésophile
  • f = De milieu frais
  • h = Hygrocline
  • hh = Mésohygrophile
  • H = Hygrophile

Selon la largeur de la bande, on peut définir une amplitude faible, moyenne ou large.

En largeur, nous avons le gradient trophique, qui représente le taux d'acidité :

  • AA = Hyper acidiphile
  • A = Acidiphile
  • aa = Acidicline
  • a = Mésoneutrophile
  • n = Neutrophile
  • b = Calcaricole

Là aussi, selon la largeur de la bande, on peut définir une amplitude faible, moyenne ou large.

Fonctionnement

Une fois que nous avons extrait le fichier jpg en fichier pnm (niveaux de gris), voici le fonctionnement interne du programme d'analyse :

  1. Chargement en mémoire de l'image, un octet par pixel.
  2. On supprime les bordures blanches, de manière à avoir l'image au plus proche du bord.
  3. On essaye de redresser l'image au mieux possible. C'est une rotation basique, il permet de rendre des résultats bien plus proches de la réalité que sans rotation, mais il a du mal avec des rotations supérieures à 30° environ.
  4. On fait une copie de cette image dans une autre zone de la mémoire
  5. On augmente le contraste de l'image (en rendant noir le milieu des zones 5x5 où il y a au moins 17 pixels foncés dedans). En réalisant cette étape trois fois de suite, on va pouvoir effacer le texte et les lignes, et garder le gros rectangle foncé au milieu. Cependant, il va être extrêmement "grignoté" sur les bords.
  6. On lance la recherche de la zone. C'est à dire qu'on trouve une zone foncée au milieu de notre image. On récupère les coordonnées de cette zone foncée.
  7. On reprend l'image sauvegardée tout à l'heure, non contrastée. On y superpose les coordonnées de la zone foncée, et on étire cette zone sur les côtés, afin d'être sûr d'englober la totalité de la zone.
  8. On affiche ces coordonnées au format CSV, afin d'être exploitées sous Excel ou dans une base de données.

Résultats

Vous pouvez regarder les résultats du programme en suivant ce lien. Le numéro correspond à la page dans le livre d'où ces diagrammes sont tirés. Vous pourrez donc voir les écogrammes ainsi que leur reproduction en direct par GD, les informations du dessin étant tirées d'une base de données générée grâce à ce programme.

Remarques

Certains écogrammes disposent de deux zones distinctes ou plus. Les résultats sont assez aléatoires pour ces écogrammes, mais il y en a suffisamment peu : la complication n'en valait pas la peine.

Certains écogrammes ont également des zones claires : cela signifie que certains spécimens ont étés trouvés dans ce genre de zones, mais très rarement. Là aussi, la complication n'en valait pas le coup, seul les zones fréquentes (foncées) nous intéressaient, même si parfois la zone claire est prise en compte, et parfois non (selon que la zone en question touche ou non la zone principale).

Téléchargement

Le code source en Pascal de ce programme est disponible en suivant ce lien : analyse-diag.pas. Le script Linux qui génère le fichier CSV d'après les fichiers JPG est disponible ici : analyse