Visages et regards
Certains logiciels de stockage de photos comportent désormais une fonctionnalité de reconnaissance de visages (face recognition en anglais). À chaque visage détecté dans une photo peut être associée une personne (un nom, voire une fiche dans le carnet d'adresses), ce qui permet de rechercher des photos d'une personne donnée, etc.

L'objectif de ce projet est de réaliser des utilitaires de manipulation des photos contenant des visages. La reconnaissance des visages n'est pas faite dans le projet, on peut récupérer les visages identifiés par le logiciel Picasa. Le projet comporte les principaux objectifs suivants :
- Récupération des visages
- Constitution d'un grand corpus de visages à partir du web
- Détection des yeux
- Utilitaires et jeux
Le dernier objectif est obligatoires. Pour les autres, vous choisirez les priorités que vous souhaitez leur donner.
L'objectif n'est pas de réaliser une interface graphique pour manipuler des images. L'interface graphique est une option possible tout à fait intéressante, mais n'est ni indispensable, ni prioritaire.
Récupération des visages
On utilisera Picasa pour détecter les visages, mais le principe est généralisable à d'autres outils (logiciels ou API). Picasa n'étant pas installé dans les salles de TP, son utilisation n'est pas obligatoire. Elle est cependant recommandé pour ceux qui ont la possibilité de l'installer sur un ordinateur personnel.
Les informations sur les visages (les métadonnées) sont stockées sur le disque dur (parfois dans le fichier de la photo) par le logiciel qui les a calculées et collectées. Le premier objectif du projet consiste à enregistrer dans un fichier image chaque visage identifié dans chaque photo d'un certain dossier du disque dur.
Picasa utilise deux méthodes alternatives pour enregistrer les visages d'une photo :
- Par défaut, il les enregistre dans un fichier .picasa.ini dans le répertoire de la photo
- depuis la version 3.9, il est possible de le configurer pour qu'il enregistre les métadonnées dans le fichier de la photo.
Extensions possibles
Remettre les visages sur les photos exportées et redimensionnées par Picasa. Lorsqu'on redimensionne une photo sur Picasa, les visages sont perdus. Pourtant, les métadonnées pourraient facilement être réintégrées dans la nouvelle photo.
Gérer un autre logiciel (par exemple iPhoto, d'Apple)
Plutôt qu'un logiciel, utiliser une API (bibliothèque de fonctions) de reconnaissance de visages en java
Constitution d'un gros corpus de visages à partir du web
Pour faire des tests en grandeur nature, et obtenir des résultats intéressants, les programmes réalisés devront être utilisés sur un gros corpus de visages. La constitution de ce corpus fera partie intégrante du projet.
Vous devrez écrire un script (dans le langage de votre choix : bash avec wget, php, python, R, etc.) pour extraire une grande quantité de visages depuis un ou plusieurs sites web de votre choix (wikimedia, facebook, un site d'université, etc.) Attention aux questions juridiques : l'utilisation de ce corpus devra possiblement être limitée à votre usage privé.
Détection des yeux
Étant donné une photo contenant uniquement un visage, vous devrez mettre au point une méthode de détection des yeux.
Le principe
Si on se focalise sur la moitié supérieure de la photo, localiser la position de chacun des deux yeux sur l'axe horizontal peut se faire en calculant la moyenne des intensités lumineuses de chaque colonne de pixels (voir figure Y1).

La position verticale de chaque oeil peut se calculer de la même manière (voir figure Y2).

Validation
Le projet devra comporter une partie permettant d'évaluer partiellement la méthode de détection en utilisant le corpus.
Extensions possibles
- Redresser un visage en calculant l'inclinaison à partir de la position des yeux l'un par rapport à l'autre.
- Détecter d'autres parties du visage.
Utilitaires et jeux
Une fois qu'une collection de visages a été constituée, il est possible d'imaginer de nombreuses applications, utilitaires ou ludiques. Vous en réaliserez au moins une. La liste ci-dessous n'est donnée qu'à titre d'exemple.
- outil de vérification de la détection des yeux : un programme qui choisit un échantillon aléatoire de visages parmi le corpus (par exemple 20, 50 ou même 100) et les "extrait" pour vérification visuelle par un humain.
- construire une image-affiche avec un grand nombre de visages ou d'yeux (par exemple pour l'outil de vérification)
- corriger les yeux rouges causés par un flash
- faire deviner à l'utilisateur une personne à partir de ses yeux
- classer les yeux par couleur, forme, etc.
- échanger les deux yeux d'un visage
- construire un visage par symétrie entre les deux yeux
- assembler des visages avec des morceaux de plusieurs visages
- créer un gif animé (avec un outil existant) à partir de l'évolution dans le temps des visages d'une personne nommée dans les métadonnées
Infos utiles
Sur les métadonnées de Picasa
Il y a une grande quantité de blogs et forums sur lesquels on peut glaner des infos sur les métadonnées que Picasa utilise, et leur format, notamment le forum picasa.
Le .picasa.ini est à peu près intégralement décodé ici : fbuchinger/.picasa.ini.
Pour le format des métadonnées dans les photos, il faut fouiller un peu plus. Un début d'indications là : put face tags into photos, mais je n'ai pas trouvé une jolie référence bien propre et complète.
Sur la manipulation d'images en Java
Voir le tutoriel java Working with images.
On utilise la classe BufferedImage
, avec les méthodes ci-dessous.
ImageIO.read
,ImageIO.write
- (de la classe
ImageIO
) pour charger ou sauvegarder une image getRGB
,setRGB
- pour connaître ou modifier la couleur d'un pixel