Un moteur de recherche de pièces de monnaie

de | 2018-01-12

Aujourd’hui, P. m’a demandé comment je m’y prendrai pour faire un moteur de recherche de pièces de monnaie.

Je vais présenter la première itération d’une POC réalisée en 10 minutes. La méthode est simple et de très nombreuses améliorations peuvent être proposées. Cependant, pourquoi faire compliqué si la version basique fonctionne déjà très bien ? C’est parti !

Le cadre du problème

On va chercher à reconnaitre une pièce (euros) grâce à sa photo. Dans cette itération on ne s’intéressera qu’au coté pile de la pièce.

On fera les suppositions suivantes :

  • L’utilisateur a (re)cadré la photo de sorte que la pièce prenne toute l’image.
  • L’utilisateur a orienté la pièce pour qu’elle soit droite.

La solution

La solution minimale que je propose de tester est assez simple :

  1. On a un ensemble d’images d’exemple (la base) et d’image requêtes. On cherche à trouver la pièce de la base qui correspond à la requête.
  2. Traitements : les images sont passées en niveau de gris et redimensionnées pour être toutes à la même taille.
  3. Chaque image est représentée par son descripteur (un vecteur) basé sur le HOG.
  4. Pour une image requête on calcule la distance de son descripteur à ceux de toutes les images de la base. Plus la distance est faible plus les images sont similaires.

Voici ci-dessous les résultats d’un test rapide (8 pièces dans la base et 3 pièces requêtes). Les images de la base, notées « top X » proviennent de l’article euro sur Wilipédia.

Les 3 requêtes

La solution proposée semble fonctionner. Évidemment, il faudrait tester sur plus de photos, avec des variations d’illumination, des qualités différentes, etc. On verra si j’ai des retours sur les difficultés rencontrées ou si la solution est suffisante. A mon avis dans un petit projet il vaut mieux rester sur des solutions simples et adapter en fonction des données (Data Driven).

En attendant, le code Matlab  du POC est en entier ci-dessous :

[EDIT 12/01/2018]: correction des fautes d’orthographe.

Une réflexion au sujet de « Un moteur de recherche de pièces de monnaie »

  1. Alexandre Auteur de l’article

    Il y a quelques temps j’ai fait des tests sur un jeu de pièces anciennes. Cette approche est en effet efficace si 1) la pièce est bien « alignée » (sensibilité à la rotation) et 2) si les bords sont bien ronds. En effet, les pièces anciennes ont tendance à avoir des bords abimés et donc le HOG est affecté. Dans les cas d’usure important, les pièces retrouvées correspondaient plus au pièces dont le bord avait la même usure que les pièces dont le motif était le même.

    Plusieurs études existent déjà sur la classification automatique de pièce. Un des soucis principaux est le faible nombre d’exemple dans les bases de données.

    Si j’ai le temps, et l’envi, je reviendrai dessus en détails dans un prochain billet.
    Alexandre

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.