Forum général.général reconnaissance de pièces de monnaies

Posté par  (site web personnel) . Licence CC By‑SA.
2
2
fév.
2016

Je ne suis pas numismate, pour autant je conserve les pièces de monnaie qui m'interpellent. Je le faisais déjà au siècle dernier, avec les pièces de 5 F, 10 F, 50 F et 100 F en argent (mes parents étant commerçants à l'époque, j'en voyais passer, je les choppais au passage).

Pour les recenser, un outil de reconnaissance automatique serait intéressant : a priori, opencv est largement utilisé, pour confirmer il y a quelques images permettant les comparaisons :

Je ne suis pas le seul à souhaiter reconnaître sa monnaie, cela permet sans doute de faire ses comptes :-) même si sans le corpus de pièces, la reconnaissance me semble compromise (la bce a sans doute une base, pas forcément exhaustive…).

Quelques-uns parmi vous avez-vous essayé de faire la même chose automatiquement ?
Sur les pièces de monnaie en Euro du Portugal, il est assez difficile de trouver la date (hormis tourner la pièce dans le bon sens et réussir à lire les chiffres au bas de la pièce si vous avez une bonne vision de près).

Il y a bien la lecture de QR code, de code barre, pourquoi pas la reconnaissance de pièces sur son mobile ?
Ce qui est surtout appréciable est l'adaptation / zoom / virer le flou de l'image dès la prise de photo.

Si en plus, vous avez des logiciels de gestion de collection permettant d'identifier les pièces recherchées, se référer à ce qui est déjà en stock, ça pourrait m'intéresser.
Vous faites comment pour récupérer des pièces de St Marin, du Vatican, d'Estonie ou de Monaco ?

Concernant la reconnaissance de formes (par exemple : reconnaître un tableau comme la Joconde ou les Coquelicots de Monet), je suis preneur des travaux permettant d'y arriver, m'y étant essayé avec beaucoup d'échec :/

  • # opencv et les pièces

    Posté par  (site web personnel) . Évalué à 2. Dernière modification le 02 février 2016 à 00:24.

    opencv sait déjà reconnaître les contours :

    pièces reconnues par opencv

    L'idée, ce serait de lister :

    • 1 cent irlandais
    • 1 cent
    • 1 euro
    • 2 euros
    • 20 cents
    • 10 cents
    • 5 cents
    • 50 cents
    • 2 cents

    moi, c'est surtout le 1 cent irlandais qui m'intéresse :-) (de 2002) d'où l'idée de rapprochement avec des images connues (je n'ai pas trouvé l'exhaustivité des pièces émises sur le site de la BCE…).

  • # Un peu long

    Posté par  . Évalué à 2.

    Je dis surement des choses fausses, si quelqu'un de mieux renseigné passe dans le coin, qu'il n’hésite pas à me corriger !

    Pour détecter un objet dans un image, l'approche la plus simple et performante est de créer un modèle mathématique de l'objet et ensuite de chercher ce modèle dans l'image. Par exemple, la reconnaissance de cercle citée plus haut c'est surement fait avec une transformée de Hough. Pour appliquer cette méthode il faut que tes objets recherchés soient très ressemblant (ce qui est le cas pour un cercle, un carré, un visage…). Les pièces et surtout leurs détails qui permettrait de les différencier sont trop différents pour utiliser ce genre de méthode selon moi.

    Une autre méthode simple et de faire de la comparaison "pixel à pixel" pour retrouver où l'objet recherché se trouve par rapport à une image de référence. Le problème est qu'il faut que l'objet recherché soit dans le même sens et de la même taille que l'image de référence. Tu peux toujours exécuter plein de fois la recherche en tournant et redimensionnant a chaque fois l'image de référence. Mais cela fait très vite beaucoup trop d'opérations.

    La dernière méthode est de passer par des algorithmes d'apprentissage automatique, comme le deep learning. Souvent ces algos coutent chères à entrainer, mais après c'est quasiment instantané. Pour les entrainer il te faut plein d'images dans lesquelles tu connais le résultat attendu. Si tu veux que l'algo soit capable de trouver des objets tournés et redimensionnés, il faut bien sure fournir des exemples de différentes tailles et orientations.
    Google Research est TRES fort la dessus. Google publie énormément de choses, cherche "google object detection" dans Google ou Google Scholar. Regarde aussi des exemples de Caffe qui semble être un framework utilisé par pas mal de papiers.

    Pour te donner un peu un ordre d'idée de comment faire, je vais te décrire comment Ocropy fonctionnait (à l'époque où j'ai regardé, depuis ça a peut-être changé). Ocropy permet de transformer des scans de livre en texte (c'est de la reconnaissance de caractère).
    1) l'image est d'abord nettoyée avec plusieurs algos (une qui enlève les poussières, une qui enlève les pliures, une qui transforment l'image en "noir ou blanc" de façon intelligente…)
    2) l'image est tournée et découpée grace à un algo d'analyse de ligne
    3) les lignes sont redimensionnées grâce à un algo de détection de taille moyenne de caractères
    4) Les lignes sont injectées dans un algo de deep learning spécialisé dans la détection de caractère

    L'étape 1, ce sont que des filtres d'images (comme ceux qu'il y a dans Gimp=>filtres). Les étapes 2 et 3 utilise une approche par modèle (mon premier paragraphe). Jusqu'à maintenant les images n'ont étaient que homogénéisées.
    La dernière étape utilise un algo d'apprentissage automatique. Cela fonctionne extrêmement bien si l'algo de learning a appris sur des lignes de la même langue et de la même police que le texte à lire par l'algo.

    Les algos de deep learning sont un peu magique (le choix des types de neurones et leurs nombres sont complètement faites au feeling) et c'est la grande critique qui leur sont faites. Mais elles peuvent donner des résultats extraordinaires!

    Toutefois tu ne seras peut-être pas obligé d'aller jusque là. Si tu arrives a suffisamment homogénéiser ton entré, une simple comparaison "pixel à pixel" peut suffire. Tu auras en sortie quelque chose comme : "cette image contient 1 pièce ressemblant a 80% à 5cent italien de 2004, 75% à 5cent polonais de 2003…". Et ensuite le choix final se fait à la main.

    TL;DR: Détecte les pièces avec OpenCV. Filtre tes pièces pour que quelque soit la photo les pièces aient toutes la même luminosité et couleurs. Trouve un moyen de les tourner toutes dans le même sens. Fait une copie "pixel à pixel" qui te donne une probabilité de ressemblance avec ta base de donnée de pièce. Profit.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.