OpenCV+AKAZE pour la Reconnaissance d'images

Je ne sais pas si vous avez entendu parler de l’algorithme KAZE. C’est un système de détection de forme fonctionnant en 2D, sorte de successeur des approches SIFT et SURF (ou encore FREAK et BRISK) pour ceux qui connaissent plus ces derniers. Il supporte beaucoup mieux le bruit et les déformations spatiales dues au Blur. D’ailleurs, c’est amusant, car KAZE en japonais signifie le “vent”.

A-KAZE est une version accélérée de KAZE utilisant le Fast Explicit Diffusion (FED) pour améliorer la vitesse de traitement, ce qui le rend utilisable dans nos téléphones portables.

Bon, comme une vidéo vaut 100 discours et que je serais incapable de vous expliquer mathématiquement comment cela fonctionne, voyons ce que cela permet:


Remarquez ces points de convergence entre les 2 images. Regardez cette autre vidéo pour comprendre à quel point l’algorithme est capable de fonctionner dans des conditions extrêmes:

Bon, avec un certain nombre de correspondance, on peut se dire que les 2 images sont proches, mais ce n’est pas suffisant toutefois. Avant de voir comment exploiter le résultat, réfléchissons à une application: la reconnaissance de visage ? Bof, il y a de meilleurs algos pour cela. Non, c’est bien mieux pour des objets du quotidien ou même de la prise de photos dans un paysage. Ah, vous voyez où je veux en venir ? Vous vous rappelez de cet article sur la photogrammétrie avec un drône ? Ou même de celui-ci ? Voilà… avec cela, on peut recoller les photos – il manque toutefois quelques éléments pour le repositionnement dans l’espace, mais on en est pas loin. il y a aussi le tracking d’objet en mouvement comme la détection “visuelle” de drones afin d’établir un calcul balistique en vue d’une destruction (zut, je vais encore recevoir une visite des RGs ou de la DST… bah, sont habitués, viendront prendre le café – le plus proche habite à …. c’est mon voisin 🙂 – il a emménagé à quelques jours près juste à coté quand je me suis installé ).

Mais restons pour l’instant sur l’identification de formes. Avec AKAZE, on obtient les points de correspondance (les matching keypoints) entre 2 images. On peut les sauver dans un fichier au format JSON facilement exploitable. Mais le mieux est de réinjecter cela dans OpenCV pour identifier l’homographie de l’image dans la photo. OpenCV est une librairie d’Intelligence Artificielle dédiée au traitement de la vision. Les différents algos qui nous concernent ici et supportés par OpenCV sont ici. on y retrouve BRISK, SIFT et … AKAZE ! Non, franchement si vous ne connaissez pas cette lib, allez la tester, c’est vraiment top ce qu’on peut faire avec, tout en ayant très peu de connaissances sur le sujet !

Si vous voulez faire vos propres tests, vous trouverez une implémentation de l’algorithme à cette adresse. Il y a également tous ces passionnants travaux sur la question à cette adresse. Sinon, plus simplement, commencez par compiler et tester le code à cette adresse: c’est un test de base à partir d’ACAZE et d’OpenCV.

En partant de cette image:

graf

On obtient ce résultat:

res

Soit: Keypoints 1: 2943 Keypoints 2: 3511 Matches: 447 Inliers: 308 Inlier Ratio: 0.689038

Ainsi, nous avons une correspondance à 69%, ce qui est un très bon chiffre, malgré la déformation spatiale du à l’angle de la prise de photo.

Bon, si comme moi vous préférez utiliser ce genre d’algo en python, vous pouvez aller lire cet article (c’est pour Mac OS, mais c’est pareil au final). Et vous trouverez plein de tutos intéressants sur le sujet sur Intorobotics.org

Purée, ça y est, j’ai encore envie de travailler sur un système d’interception avec calcul balistique… mais bon, je suis dans la réalité virtuelle en ce moment – et y-a déjà beaucoup à faire- puis, chaque chose en son temps 😉

PS: La meilleure défense, c’est l’attaque – non je déconne – ça ne parait pas je le sais, mais je suis un pacifiste convaincu. En même temps, je suis aussi partisan du fait que si tu pointes un gros missile sur ton voisin, il ne viendra jamais garer sa voiture devant chez toi. Bref, mieux vaut une forte dissuasion que de le laisser croire qu’il a une chance de t’en coller une par derrière. Bref, c’est ma philosophie de vie.

Ces articles pourraient aussi vous intéresser …