OpenCV+AKAZE pour la Reconnaissance d’images

Je ne sais pas si vous avez enten­du par­ler de l’al­go­rithme KAZE. C’est un sys­tème de détec­tion de forme fonc­tion­nant en 2D, sorte de suc­cesseur des approches SIFT et SURF (ou encore FREAK et BRISK) pour ceux qui con­nais­sent plus ces derniers. Il sup­porte beau­coup mieux le bruit et les défor­ma­tions spa­tiales dues au Blur. D’ailleurs, c’est amu­sant, car KAZE en japon­ais sig­ni­fie le “vent”.

A‑KAZE est une ver­sion accélérée de KAZE util­isant le Fast Explic­it Dif­fu­sion (FED) pour amélior­er la vitesse de traite­ment, ce qui le rend util­is­able dans nos télé­phones portables.

Bon, comme une vidéo vaut 100 dis­cours et que je serais inca­pable de vous expli­quer math­é­ma­tique­ment com­ment cela fonc­tionne, voyons ce que cela permet:

Remar­quez ces points de con­ver­gence entre les 2 images. Regardez cette autre vidéo pour com­pren­dre à quel point l’al­go­rithme est capa­ble de fonc­tion­ner dans des con­di­tions extrêmes:

Bon, avec un cer­tain nom­bre de cor­re­spon­dance, on peut se dire que les 2 images sont proches, mais ce n’est pas suff­isant toute­fois. Avant de voir com­ment exploiter le résul­tat, réfléchissons à une appli­ca­tion: la recon­nais­sance de vis­age ? Bof, il y a de meilleurs algos pour cela. Non, c’est bien mieux pour des objets du quo­ti­di­en ou même de la prise de pho­tos dans un paysage. Ah, vous voyez où je veux en venir ? Vous vous rap­pelez de cet arti­cle sur la pho­togram­métrie avec un drône ? Ou même de celui-ci ? Voilà… avec cela, on peut rec­oller les pho­tos — il manque toute­fois quelques élé­ments pour le repo­si­tion­nement dans l’e­space, mais on en est pas loin. il y a aus­si le track­ing d’ob­jet en mou­ve­ment comme la détec­tion “visuelle” de drones afin d’établir un cal­cul bal­is­tique en vue d’une destruc­tion (zut, je vais encore recevoir une vis­ite des RGs ou de la DST… bah, sont habitués, vien­dront pren­dre 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’in­stant sur l’i­den­ti­fi­ca­tion de formes. Avec AKAZE, on obtient les points de cor­re­spon­dance (les match­ing key­points) entre 2 images. On peut les sauver dans un fichi­er au for­mat JSON facile­ment exploitable. Mais le mieux est de réin­jecter cela dans OpenCV pour iden­ti­fi­er l’ho­mo­gra­phie de l’im­age dans la pho­to. OpenCV est une librairie d’In­tel­li­gence Arti­fi­cielle dédiée au traite­ment de la vision. Les dif­férents algos qui nous con­cer­nent ici et sup­port­és par OpenCV sont ici. on y retrou­ve BRISK, SIFT et … AKAZE ! Non, franche­ment si vous ne con­nais­sez pas cette lib, allez la tester, c’est vrai­ment top ce qu’on peut faire avec, tout en ayant très peu de con­nais­sances sur le sujet !

Si vous voulez faire vos pro­pres tests, vous trou­verez une implé­men­ta­tion de l’al­go­rithme à cette adresse. Il y a égale­ment tous ces pas­sion­nants travaux sur la ques­tion à cette adresse. Sinon, plus sim­ple­ment, com­mencez par com­pil­er et tester le code à cette adresse: c’est un test de base à par­tir d’A­CAZE et d’OpenCV.

En par­tant de cette image:

graf

On obtient ce résultat:

res

Soit: Key­points 1: 2943 Key­points 2: 3511 Match­es: 447 Inliers: 308 Inli­er Ratio: 0.689038

Ain­si, nous avons une cor­re­spon­dance à 69%, ce qui est un très bon chiffre, mal­gré la défor­ma­tion spa­tiale du à l’an­gle de la prise de photo.

Bon, si comme moi vous préférez utilis­er ce genre d’al­go en python, vous pou­vez aller lire cet arti­cle (c’est pour Mac OS, mais c’est pareil au final). Et vous trou­verez plein de tutos intéres­sants sur le sujet sur Intorobotics.org

Purée, ça y est, j’ai encore envie de tra­vailler sur un sys­tème d’in­ter­cep­tion avec cal­cul bal­is­tique… mais bon, je suis dans la réal­ité virtuelle en ce moment — et y‑a déjà beau­coup à faire- puis, chaque chose en son temps 😉

PS: La meilleure défense, c’est l’at­taque — non je déconne — ça ne parait pas je le sais, mais je suis un paci­fiste con­va­in­cu. En même temps, je suis aus­si par­ti­san du fait que si tu pointes un gros mis­sile sur ton voisin, il ne vien­dra jamais gar­er sa voiture devant chez toi. Bref, mieux vaut une forte dis­sua­sion que de le laiss­er croire qu’il a une chance de t’en coller une par der­rière. Bref, c’est ma philoso­phie de vie.

4 commentaires sur “OpenCV+AKAZE pour la Reconnaissance d’images

Ajouter un commentaire

  1. j’ai util­isé l’al­go­rithme pour la recon­nais­sance d’une colonie en mou­ve­ment apres detec­tion sur cam­era et ben j’ai un peut mal a ger­er. j’u­tilise python et open cv .si quelqu’ un peut m’aider je lui serai recon­nais­sant et au fait mer­ci pour le partage c’est un enorme evo­lu­tion dans la tech­nolo­gie de demain

  2. Est ce qu’on pour­rait utilis­er ce genre de tech­nolo­gie pour faire de la recon­nais­sance de pion/figurine sur une table de jeu ?

    1. Bien sûr, avec OpenCV et une ou deux bonnes cams ori­en­tées vers me plateau de jeu, ça doit bien fonctionner.Encore faut-il que les fig­urines soit suff­isam­ment différenciées.

Laisser un commentaire

Fièrement propulsé par WordPress | Thème : Baskerville 2 par Anders Noren.

Retour en haut ↑

%d blogueurs aiment cette page :