Comment lire la base de données de Picasa 3.9 et extraire les visages

Comment lire la base de données de Picasa 3.9 et extraire les visages

Récupérer des informations depuis Picasa n’est pas une chose facile, le logiciel est assez limité et ne propose quasiment rien comme fonction d’export de données réutilisables.

Ce que je souhaite faire : extraire les informations brutes de la reconnaissance des visages de la base de données de Picasa. Les noms des personnes, les fichiers sources d’origine et le rectangle associé à chaque visage.

Sur Windows 7, la base de données de Picasa se trouve dans C:\Users\USERNAME\AppData\Local\Google\Picasa2. Dans ce dossier, on trouve principalement des fichiers pmp et des fichiers db. Les fichiers pmp correspondent à des données tabulaires. Chaque fichier pmp contient les données d’une colonne d’une des tables de la base de données. Le nom du fichier pmp correspond à table_colonne.pmp. On va donc avoir 3 tables:

  • albumdata, qui contient des informations relatifs aux albums (dossiers et album visages)
  • catdata, relatif aux categories (quasiment vide chez moi)
  • imagedata, relatif aux images (contient les rectangles et les références des albums)

Comment lire les fichiers PMP ?

Ce sont des fichiers binaires dans le format little-endian. Le header est décrit selon ce tableau :

Taille Description
4 octets constante magique : 0x3fcccccd
2 octets type de champ (unsigned short)
2 octets constante : 0x1332
4 octets constante : 0x00000002
2 octets type de champ (unsigned short)
2 octets constante: 0x1332
4 octets nombre d’entrées (unsigned int)

Les différents types des valeurs sont :

Valeur Description
0x0 Chaînes de caractères terminées par un caractère nul
0x1 Unsigned int, 4 octets
0x2 Dates selon le format Microsoft Variant Time, 8 octets
0x3 byte field, 1 octet
0x4 unsigned long, 8 octets
0x5 unsigned short, 2 octets
0x6 Chaînes de caractères terminées par un caractère nul
0x7 unsigned int, 4 octets

Voir http://sbktech.blogspot.fr/2011/12/picasa-pmp-format.html pour plus d’information sur les fichiers pmp.

Les valeurs qui nous intéresse pour les visages sont facerect (coordonnées du rectangle) et personalbumid (reference de l’album) dans la table imagedata, et les valeurs token (reference de l’album) et name (nom de la personne) dans la table albumdata.

Exemple en retenant que 4 colonnes:

Extrait de la table imagedata de Picasa 3.9

Extrait de la table imagedata de Picasa 3.9

Le rectangle est décrit par une donnée de type rectangle64. Une chaîne de 16 caractères qui contient  4 nombres sur 16 bit. Les nombres, une fois divisés par 2^16-1 (la plus grande valeur possible), sont les coordonnées relatives du point en haut à gauche et du point en bas à droite. Les valeurs absolues sont obtenues en multipliant les abscisses par la largeur de l’image et les ordonnées par la hauteur de l’image.

Exemple :

nombre d’origine (64 bits) 0x67873bec9e1e933d
Découpage en 4 nombres sur 16 bits 0x6787 0x5678 0x3b51 0x4a89
Conversion en décimal 26503 15340 40478 37693
Division par 2^16-1 (65535) 0,4044 0,2341 0,6176 0,5751
Multiplication par la largeur (3264) et la hauteur (2448) x1=1319 y1=573 x2=2016 y2=1407

Avec ces informations, on sait que l’image x a un rectangle de visage de tel taille et qu’il correspond a telle personne mais on ne connait pas le nom du fichier sur le disque dur.

Cette information se trouve dans le fichier thumbindex.db. Ce fichier contient l’ensemble des dossiers et des images indexés dans la base de données de Picasa et l’entrée à la ligne x du fichier thumbindex.db va correspondre à la même image que celle de la ligne x dans la table imagedata.

Comment lire le fichier thumbindex.db ?

Header :

Taille Description
4 octets constante magique : 0x40466666
4 octets nombre d’entrées (unsigned int)

puis chaque ligne est décrit selon le tableau suivant :

Taille Description
jusqu’au caractère nul Chaîne de caractères terminée par un caractère nul
26 octets contenu inutile
4 octets index de l’entrée

Chaque ligne va être soit un dossier avec le chemin complet et une valeur d’index particulière (4294967295), soit une image avec juste le nom du fichier et un index qui va pointer vers le dossier correspondant et qui va permettre de reconstruire le nom complet de l’image.

Extrait du fichier thumbindex.db de Picasa 3.9

Extrait du fichier thumbindex.db de Picasa 3.9

Dans l’exemple, l’image 266 est dans le dossier 5.

Voir http://projects.mindtunnel.com/picasa3meta/docs/picasa3meta.thumbindex.ThumbIndex-class.html pour plus d’information sur le fichier thumbindex.db.

Si l’on fait la fusion de la table imagedata et des données contenu dans thumbindex.db on se rend compte que pour une image donnée, on va avoir le nom du fichier sur le disque dur, le rectangle du visage mais pas de référence d’album !

Picasa va en fait stocker une image virtuelle en plus pour stocker cette donnée. Dans l’exemple précédent, l’image virtuelle 268 (qui n’a pas de nom de fichier) va contenir les informations sur le visage d’une personne qui se trouve dans l’image 266. Le rectangle sur l’image 266 va contenir l’ensemble des rectangles (quand l’image a plus d’un visage identifié, sinon le rectangle va être le même que celui de la personne). Il suffit donc de lire la référence de l’album de l’image 268 et de l’associer au non de fichier de l’image 266.

J’ai créer un programme qui va lire toutes ces informations et les stocker dans des fichiers csv. Un fichier par table pmp et un fichier pour les visages. Le programme peut aussi créer des vignettes de visage si imagemagick est installé (et que l’application convert soit dans le path).

Comment utiliser le programme qui va lire la base de données de Picasa ?

Il y a en fait 2 programmes. Un, appelé PMPDB qui va convertir les table pmp en fichier csv et un, appelé PicasaFaces qui va créer un fichier csv lisible qui va contenir toutes les informations sur les visages et va créer les vignettes des visages.

Usage:

java -classpath ".:bin/:commons-cli-1.2.jar" PMPDB -folder "/path/to/PicasaDB/Picasa2/db3/" -output ./OutputFolder

java -classpath ".:bin/:commons-cli-1.2.jar:commons-io-2.4.jar" PicasaFaces -folder "/path/to/PicasaDB/Picasa2/db3/" -output ./OutputFolder -replaceRegex C: -replacement /media/HardDrive -convert /path/to/convert(.exe)

Si la ligne de commande contient l’argument -convert, alors imagemagick va créer toutes les vignettes (dans le dossier de destination avec un dossier pour chaque personne). Une modification du chemin des images peut être effectuée si les images ont changées de place par rapport aux informations contenu dans la base de données (dans l’exemple « C: » sera remplacé par « /media/HardDrive ».

Résultat de l'extraction des visages de Picasa 3.9

Résultat de l’extraction des visages de Picasa 3.9

Les sources sont disponible sur github : https://github.com/skisoo/PicasaDBReader

Fonctionne sous Windows et Linux.

L’élection Malaisienne de 2013 vu par les chauffeurs de taxi

L’élection Malaisienne de 2013 vu par les chauffeurs de taxi

Je suis allé en Malaisie pour un business trip pendant quelques jours et j’en ai profité pour demander à tout les chauffeurs de taxi se qu’ils pensaient des élections qui arrivent. Pour faire un rapide tour d’ensemble, le 5 mai 2013, les Malaisiens vont voter pour un nouveau gouvernement. Le groupe politique au pouvoir, le Barisan Nasional, y est depuis l’indépendance du pays, soit un peu plus de 50 ans. Le gouvernement actuelle est de plus en plus contesté et montre des vrais signes d’inquiétude. C’est la première élection ou le gouvernement à réellement la possibilité de basculer.

Drapeaux de tous les bords politiques dans toutes les rues

Drapeaux de tous les bords politiques dans toutes les rues

Premier chauffeur, Malais

Il n’aime pas le premier ministre actuel, et aussi sa femme qui à une réputation de dépensière. Il m’a raconté que c’est le premier Premier ministre à avoir créé un bureau de la First Lady (FLOM) qui fut vivement critiqué. Il est complètement conscient que la volonté actuelle du gouvernement de donner des sous aux gens (1000RM à tous les employés de Petronas, aide pour les étudiants) sous couvert de conditions économiques a un but politique. Il a aussi critiqué le fait que les membres du Barisan Nasional ont des facilités pour obtenir des logements que les autres n’ont pas. Il aimerait du changement dans le paysage politique actuel.

Second chauffeur, indien

Il a critiqué le gouvernement actuel en disant que le Barisan Nasional ment au peuple et utilise l’argent du peuple pour leur propre bénéfice. Le climat actuel n’est pas sain pour les races minoritaires (chinoises et indiennes) et entraine une fuite des cerveaux des étudiants Malaisiens non-malais vers l’étranger. Il trouve que même les Malais se plaignent à cause des opportunités business perdues car ils ne sont pas membres du Barisan Nasional et il est conscient des récupérations politiques des distributions d’argents.  Pour lui, l’opposition a peu de chance de l’emporter mais par contre faire perdre la majorité absolu du Barisan Nasional au parlement est possible.

Troisième chauffeur, malais (vivant dans un petit village à 60km de Kuala Lumpur louant une maison pour 300RM par mois)

Il est plutôt satisfait du gouvernement actuel. Il trouve que la situation économique est bonne et dynamique et que les gens disposent de ce qu’ils ont besoin.

Quatrième chauffeur, indien

Il pense que les gens sont loin d’être stupides et qu’ils peuvent voter pour qui ils veulent bien qu’ils reçoivent de l’argent du Barisan Nasional ou qu’ils voient des drapeaux fleurir de partout. Pratique qu’il trouve d’ailleurs ridicule, ce n’est pas le nombre de drapeaux qui va influencer le vote. Il n’est pas vraiment convaincu par la force politique de l’opposition qui est composé de quatre partis avec des vues divergentes qui risquent de faire stagner le pays en ayant une cohabitation douloureuse s’ils sont élus. Il a en particulier peur du parti islamique radical qui veut transformer la Malaisie en pays islamique. Il est satisfait du Premier ministre actuel qui fait son boulot correctement (en opposition avec un ministre antérieur). Il pense que le Barisan Nasional gagnera les élections.

Cinquième chauffeur, indien

Il trouve que le gouvernement actuel favorise beaucoup plus les malais pour les bourses scolaires par rapport aux chinois ou indiens et au niveau des logements, il m’a expliqué que le Barisan Nasional négociait avec les promoteurs immobiliers une réduction de 7 à 15% pour les malais qui veulent acheter un logement, sinon le projet n’est pas approuvé. Il a lui aussi peur du parti islamique radical dans l’opposition.

Vue magnifique depuis le Pinnacle à Duxton road

Vue magnifique depuis le Pinnacle à Duxton road

Ca faisait longtemps que je voulais aller faire un tour en haut du Pinnacle, un HDB très récent et super classe qui n’a pas grand chose à envier aux condominiums si ce n’est une piscine et une salle de sport, mais j’ai jamais pris le temps d’y aller. Pourquoi aller a ce HDB en particulier ? A cause de son skybridge ! Une immense passerelle qui relie les 7 bâtiments du HDB entre eux au cinquantième étage. Ma boite à déménagé juste à coté et j’ai un nouvel appareil photo à tester, je n’avais donc plus d’excuse pour repousser ma visite.

Juste après le boulot, je me dépêche d’y aller pour essayer d’avoir le coucher le soleil. Direction le Bâtiment G pour trouver la borne qui va délester ma carte de transport des 5 dollars requis pour l’accès au skybridge pour les visiteurs (c’est gratuit pour les résidents). J’ai tourné en rond 10 minutes avant de finalement trouver la borne qui était au rez-de-chaussée (mais qui ressemble plus à un sous sol). Ensuite, rien de bien sorcier, ascenseur jusqu’au dernier étage et tourniquet taille guêpe pour accéder au skybrigde.

Qu’est ce que l’on voit depuis le skybrigde du Pinnacle ?

  • L’immense port de Singapore (entre Harbour Front et Marina Bay)
  • Le CDB de dos (par rapport aux photos classiques prise depuis l’esplanade)
  • Sentosa Island, le cable car et mount Faber
  • Le nouveau Singapore Cruise Terminal
  • Chinatown avec son temple et ses shophouses
  • Outram park
  • Les installations pétrochimiques qui crachent du feu au loin
  • L’ouest
Le port de Singapour

Le port de Singapour

Le nouveau terminal de croisière

Le nouveau terminal de croisière

Chinatown et son temple

Chinatown et son temple

CBD de Singapour de nuit

CBD de Singapour de nuit

Future Music Festival Asia, concert de musique à Kuala Lumpur

Future Music Festival Asia, concert de musique à Kuala Lumpur

Future Music Festival Asia est mon deuxième concert de musique de l’année,  et il fut bien plus impressionnant que le premier ! Le Future Music Festival est à la base un festival Australien qui se déroule dans les 5 plus grosses  villes d’Australie (Sydney, Melbourne, Brisbane, Perth et Adelaïde) à quelques jours d’intervalles au début du mois de mars avec les mêmes artistes. Depuis 2012, le festival s’exporte en Asie à Kuala Lumpur sur le circuit international de Sepang avec une liste d’artistes un peu différente.  Pour ce festival Asia 2013, on pouvait trouver parmi les têtes d’affiches : The Prodigy, Fun., Rita Ora, PSY…

Comment ça c’est passé ?

Un peu galère une fois arrivé sur place pour trouver une place pour se garer vu le nombre incroyable de voitures (en même temps le lieu du festival est à une heure de route de Kuala Lumpur et il n’y a pas vraiment de transport en commun). Il a fallu aller au fin fond du parking et marcher 15 bonnes minutes pour pouvoir arriver à l’entrée du Future Music Festival Asia.

Ballons illuminés flotants dans le ciel

Ballons illuminés flotants dans le ciel

Une fois à l’entrée, une petite bière payée deux fois moins chère que dans le festival pour se rafraichir, passage des trois vérifications (âge, sac et tickets)  et se retrouve enfin dans le festival. Première impression c’est énorme ! Trois immenses scènes, une grande roue et un nombre conséquents de stands de nourritures et d’animation : cigarettes, F1 (avec jeux vidéos), Red Bull, des ballons illuminés flottant dans le ciel (je n’ai pas vraiment compris le but de ça)… Bref, pas mal de choses pour occuper plusieurs milliers de personnes (comptées à la louche) toute une longue nuit.

Fun. au Future Music Festival Asia

Fun. au Future Music Festival Asia

Et pour le spectacle en lui-même ? Une ambiance de folie, du gros son et des artistes connus qui ont fait vibrer le public. Personnellement je ne connaissais pas vraiment les artistes, juste ce qui passe à la radio mais c’était vraiment génial ! J’ai étais étonné par le grand nombre de personnes non-asiatiques venu assister aux concerts, principalement des australiens et aussi beaucoup de gens venu de Singapour vu l’accueil donné à une porteuse du drapeau Singapourien.

La deuxième scène

La deuxième scène

La grande roue et l'impressionnant public

La grande roue et l’impressionnant public

Future Music Festival Asia fut la dernière étape de la tournée mondiale de PSY pour son célèbre titre « Gangnam Style » et il a choisi de l’immortalisé en chantant deux fois sa chanson : une fois pour que tout le monde puissent prendre des photos et des vidéos (on est en Asie quand même !) et une seconde fois où tout le monde dansaient !

Tweet de PSY

Tweet de PSY

PSY au Future Music Festival Asia

PSY au Future Music Festival Asia

Sentosa flowers ou comment commencer l’année du serpent avec des fleurs

Sentosa flowers ou comment commencer l’année du serpent avec des fleurs

Vous aimez les fleurs et vous ne savez pas quoi faire pendant ce long week end à Singapour où plus de la moitié des magasins sont fermés ? Allez donc admirez les nombreuses fleurs disséminées le long de Palawan Beach à Sentosa Island en l’honneur de l’année du serpent. L’événement est du 9 au 17 févier pour la modique somme de 5 dollars. La visite des fleurs est assez rapide mais ça fait du bien de se promener sur la plage sans but particulier.

Un serpent se cache dans cette photo

Un serpent se cache dans cette photo

Je ne connais pas cet oiseau mais j'aime l'idée

Je ne connais pas cet oiseau mais j’aime l’idée

Une scène bucolique pleine de fleurs

Une scène bucolique pleine de fleurs

Le carrosse citrouille

Le carrosse citrouille

Une étoile fleur

Une étoile fleur

Un serpent des sables

Un serpent des sables

Nuwa

Nuwa

Fleurs à Sentosa Island

Fleurs à Sentosa Island

Une balade en bateau dans un étang

Une balade en bateau dans un étang

Un serpent coloré plein de fleur

Un serpent coloré plein de fleur

Un peu de soft power français en Corée du Sud

Un peu de soft power français en Corée du Sud

Lors d’un business trip en Corée du Sud, juste en revenant du déjeuner, j’ai été surpris d’apercevoir « C’est pas sorcier », la célèbre émission française de France 3 de vulgarisation scientifique (et autre), sur MBC, une chaîne de télévision coréenne. Le soft power coréen c’est considérablement renforcé ces dernières années en culminant avec Gangnam Style mais je n’aurais jamais imaginé qu’une émission française comme C’est pas sorcier puisse s’exporter au pays du Kimchi et des spécialistes des animations explicatives (à moins que je confonde avec le Japon). L’influence française en Asie s’arrêtant en général à LVMH à la gastronomie et aux coffee shops : Paris baguette, Coffee antique, Paul…

C'est pas sorcier en Coréen

C’est pas sorcier en Coréen