|
Date de mise
en ligne: 17/06/09 - Visé par le Comité de Lecture
Raymond Fetiveau, professeur de mathématiques et d'informatique
en Vendée, a toujours été impressionné par
les grands vols d'Étourneaux sansonnets. De même, il
a découvert que les comptages quotidiens de Pigeons ramiers
dans le Sud-ouest de la France étaient toujours visuels et
approximatifs. Il a écidé de concevoir un logiciel
simple dénombrant automatiquement les oiseaux à partir
d'une photo.
Abstract
Impressed by huge flights of Starlings, Raymond
Fetiveau, a French professor in Mathematics, conceived a
easy-to-use and free software to count birds on a photo. In this
article, he presents us the algorithm, the way to use the program,
and its advantages and disadvantages.
Le logiciel de comptage
L'origine du projet
 |
|
Raymond
Fetiveau |
Professeur
de mathématiques et d'informatique en classe préparatoire
au lycée Saint-Joseph de la Roche-sur-Yon (Vendée), Raymond
Fetiveau a eu l'idée
de développer un logiciel de
comptage des oiseaux en novembre 2005 lorsque il découvrit
que les dénombrements quotidiens de Pigeons ramiers (Columba
palumbus) au Pays Basque (France) étaient toujours visuels et
approximatifs. Il s'est donc lancé dans un projet de comptage automatique
sur photo numérique simplifiée avec ses élèves, avec le logiciel
de calcul formel Maple.
Actuellement à la retraite, il en a amélioré
l'interface
avec le langage de programmation Delphi. Le
but de cette interface est de corriger manuellement les erreurs
de comptage des oiseaux.
L'algorithme de calcul
 |
Principe
de l'algorithme de calcul: le programme parcourt la photo ligne
par ligne; dès qu'il rencontre un pixel (en vert) d'un
oiseau sur une photo, une procédure teste_ligne(j0,i0)
d'effacement et de comptage est appelée. Dans le schéma
ci-dessus, les coordonnées du premier pixel de l'oiseau
sont i0=2
et j0=4
Source: Raymond
Fetiveau |
Le
programme fonctionne à partir d'une photo au format bmp
en noir et blanc
(la photo originale en couleurs doit donc subir une transformation
qui est abordée dans le paragraphe suivant).
Le programme parcourt l'image ligne par ligne: dès qu'il rencontre
un pixel (aux coordonnées x=j0 et y=i0 ) constituant un oiseau
sur une photo, une procédure teste_ligne(j0,i0) est
appelée. Sa fonction est de compter et d'effacer tous les pixels
qui constituent un même oiseau. Cette procédure récursive
est rappelée pour la ligne en dessous.
Afin de surmonter certaines difficultés (comme le fait qu'un "bout"
d'oiseau soit situé plus loin (ou avant) sur la ligne suivante),
la procédure analyse pour chaque ligne d'oiseau la ligne au-dessous
et la ligne au-dessus (en
savoir plus sur cet algorithme).
Cet algorithme est original. Il existe déjà des logiciels
de comptage de bactéries comme Mesurim-pro (lire Comptages
sur photographie), mais Raymond ne s'en est pas inspiré.
Raymond Fetiveau a pensé à cette technique de détection
des pixels sur une photo en noir et blanc en s'imaginant en fourmi
qui se baladerait sur un grand damier aux cases noires disposées
aléatoirement et qui ne verrait qu'une case à la fois: quand
elle rencontre une case noire, elle visite toutes les cases proches
en notant l'emplacement et le nombre total de case noires trouvées
pour l'indiquer ensuite à ses "amies". Cette méthode est
radicalement différente de celle analogique du cerveau humain qui
a une vue d'ensemble et qui sait reconnaître du premier coup d'il
(même sur une image floue) un oiseau sur une photo et dire s'il y
a un seul oiseau ou deux qui se chevauchent.
Téléchargez
le logiciel
http://rfetiveau.fr/cms/index.php?page=comptage-d-oiseaux#telechargement
Fonctionnement
 |
L'interface
du logiciel de comptage (agrandir
la photo): A) photo originale analysée, B) graphique
indiquant le nombre de groupes d'oiseaux pour chaque taille
en pixels, avec l'emplacement graphique du seuil automatique
de détection C) cases indiquant les nombres de groupes
ou blocs d'oiseaux (constitués de 0 à 4 oiseaux),
et D) la valeur du seuil. Le total estimé du nombre d'oiseaux
apparaît en bas à droite (304)
Source: Raymond
Fetiveau |
Tout d'abord,
la photo à analyser (dans l'exemple ci-contre, un vol de
Cigognes blanches par Vincent Palomares) doit être transformée
en fichier au format bmp en noir et blanc et à la résolution
maximum de 800x600 avec un logiciel de retouche d'images comme Photofiltre
(www.photofiltre.fr)
(lire l'annexe 1 pour la méthode
de création de la photo en noir et blanc).
On charge ensuite ce fichier bmp pour qu'il soit analysé
par le logiciel (le fichier original correspondant se charge automatiquement).
Dans l'interface, un graphique indique le nombre de groupes d'oiseaux
pour chaque taille en pixels. Dans l'exemple de la photo de cigognes,
le pic correspond à une taille de 20 pixels, et c'est la taille
la plus fréquente.
Une barre verticale signale le seuil automatique de détection
par défaut, qui représente le nombre de pixels à partir duquel
on doit considérer qu'un bloc (ou groupe) est constitué de deux
oiseaux. Il est égal à 1,5 fois la taille (en pixels) de ce bloc.
Dans l'exemple des cigognes, le seuil proposé par défaut est de
20 x 1,5 = 30.
Il correspond graphiquement généralement à l'endroit
où la courbe devient quasiment horizontale, dans la partie descendante
de la courbe. Sa valeur s'affiche dans la case "Seuil".
En diminuant ce seuil, quelques oiseaux isolés seront comptés
comme groupe de deux, mais cela compensera peut-être les groupes
de trois comptés comme des groupes de deux et l'approximation restera
correcte.
Dans notre exemple, la partie descendante de la courbe correspond
à un seuil de 30 environ: on considère que tous les blocs
à gauche (la plupart) sont des blocs de 1, et tous ceux à droite
sont des blocs de 2. Si on prend un seuil trop élevé,
il restera des blocs de 2 non comptés et le nombre estimé
sera trop faible. Si on le prend un peu trop bas (par exemple 26),
il y aura des blocs de un oiseau considérés comme
des blocs de deux. Si l'on choisir un seuil très bas, tous les blocs
vont être considérés comme des blocs de deux et le nombre d'oiseaux
sera donc presque multiplié par deux..
Sur la photo apparaissent encadrés en pointillés les
oiseaux ou groupes d'oiseaux dont le nombre de pixels dépasse le
seuil choisi. Ils contiennent en principe plusieurs oiseaux, mais
ils sont comptés comme des groupes de deux oiseaux. Ils sont là
pour attirer l'attention de l'utilisateur: à lui de corriger
si le rectangle contient un seul, ou 3 ou 4 oiseaux en le déplaçant
dans une des cases (blocs) du bas sous la photo.
Cliquez ensuite sur "Compter les oiseaux" pour avoir la
valeur totale estimée d'oiseaux de la photo.
Démonstration en ligne
http://rfetiveau.fr/cms/uploads/telecharger/demo.htm
Avantages de ce logiciel
Ce logiciel donne assez rapidement une bonne idée du nombre d'oiseaux,
et si on veut l'affiner, il n'est pas nécessaire de cliquer
sur chaque oiseau comme dans Mesurim-pro: il suffit de s'occuper
des cas qui posent problème (encadrés sur la photo)
de façon très conviviale en faisant un glisser-déposer dans les
cases sous le photo.
Limites et faiblesses
Taille maximale de l'image : 800x600.
Taille maximale d'un groupe d'oiseaux: 400 pixels.
Nombre maximal de groupes: 2000.
Format accepté pour l'analyse: bmp
En outre, tout n'est pas automatique: il faut d'abord transformer
manuellement l'image en noir et blanc: si l'on garde trop de noir,
des oiseaux séparés vont se trouver regroupés, et si l'on laisse
trop de blanc, des oiseaux plus clairs vont être effacés. C'est
une affaire d'appréciation visuelle. Le programme ne sait pas analyser
la forme d'un groupe de pixels pour en déduire le nombre d'oiseaux
correspondant.
L'utilisateur doit en outre choisir un seuil pour décider
à partir de combien de pixels on peut considérer qu'il y a plusieurs
oiseaux.
Il faut enfin corriger manuellement les erreurs du logiciel.
Les difficultés rencontrées
La première étape (détection des oiseaux ou groupes d'oiseaux sur
une image en noir et blanc) est intéressante, mais elle n'a pas
réellement posé de problème: il faut seulement faire attention à
considérer comme un seul oiseau (ou groupe d'oiseaux) tous les pixels
noirs qui se touchent. Le problème, c'est que le programme ne peut
pas reconnaître automatiquement le nombre d'oiseaux constituant
un groupe (ou bloc) (il arrive souvent que des oiseaux se chevauchent
sur la photo).
Le but de l'interface graphique est d'aider l'utilisateur à préciser
ce nombre pour les blocs de pixels les plus gros (ceux qui dépassent
le seuil et sont encadrés). Là non plus, pas de réelle difficulté:
il s'agit d'un programmation d'interface classique avec du glisser-déplacer.
Raymond a passé deux semaines à développer ce logiciel, avec de
multiples essais, mais quand on aime la programmation on ne compte
pas!
Projets d'amélioration
Raymond a plusieurs projets d'amélioration de ce logiciel:
- afficher le nombre de pixels d'un groupe quand la souris reste
dessus
- revoir la mise en page de l'interface pour qu'elle soit contenue
dans un écran 1024x768
- étoffer la démonstration en ligne pour que les visiteurs puissent
insérer leurs propres images
Site web et contact
Site web à visiter: http://rfetiveau.fr/cms/index.php?page=comptage-d-oiseaux
Vous pouvez contacter Raymond
Fetiveau pour lui faire des propositions
ou lui poser vos questions: raymond.fetiveau AT freesbee.fr
A lire
Comment
dénombrer les groupes d'oiseaux?
Réagissez à cet article sur nos
forums ou par e-mail à david.bismuth@ornithomedia.com.
Vous pouvez soutenir
Ornithomedia.com
|
 |