J'ai un projet "fumeux" =C3=A0 base de cam=C3=A9ra CCD ou CMOS. Une photo, puis une autre photo puis... puis .... en flux continu. Je voudrais faire une corr=C3=A9lation num=C3=A9rique entre deux images p= our=20 trouver et situer une diff=C3=A9rence. La cadence d'images est imagin=C3=A9= vers=20
25 i/s =C3=A0 une/seconde pour situer le temps de calcul autoris=C3=A9.
Dans la mesure o=C3=B9 le projet commence =C3=A0 partir du capteur d'imag= e, j'ai=20 une certaine libert=C3=A9 de choix pour la conception. Je veux pouvoir modifier les param=C3=A8tres de r=C3=A9glage du capteur e= n=20 automatique et =C3=A0 distance en fonction des r=C3=A9sultats. Ma question : faut-il plut=C3=B4t partir vers un DSP ou vers du FPGA.
Si tu recherches ce qui a chang=E9 entre deux images successives, alors tu vas calculer une diff=E9rence ( soustraction d'une image avec la pr=E9c=E9dente ) et non pas une corr=E9lation ( qui est une int=E9grale de deux fonctions )
A vitesse =E9gale de calcul, la soustraction est rapide, la corr=E9lation l'est beaucoup moins.
Disons que dans l'image tout va changer (un peu) et que seulement un peu =
de l'image va changer (beaucoup). Je crois savoir qu'il faut corr=E9ler des petites zones de l'image, je=20 peux imaginer de le faire en parall=E8le =E0 condition de pouvoir varier = les=20 zones. Typiquement apr=E8s avoir trouv=E9 une diff=E9rence, il faut =EAtre capab= le de=20 la suivre.
Ok. Si tu te contentes de faire la diff=E9rence par simple soustraction, alors les zones qui changent un peu auront un delta plus faible que celles qui changent beaucoup : donc si tu appliques ensuite =E0 cette diff=E9rence un seuil de d=E9tection, cela te permettrait de trier (et donc d'isoler) les zones qui changent beaucoup.
Pour =EAtre s=FBr de bien te comprendre, je r=E9it=E8re ma question : Par "corr=E9ler", parles-tu bien de l'op=E9ration math=E9matique qui correspond =E0 l'int=E9grale du produit de deux fonctions ?
Si oui, un uP peut s'en tirer (avec un calcul en flottant, ou un calcul purement binaire sur des entiers customis=E9s) mais un DSP serait sans doute plus simple question rapidit=E9.
En principe la corr=E9lation proc=E8de par comparaison glissante entre un signal source ( ta cam=E9ra vid=E9o ) et un signal de r=E9f=E9rence ( un motif pr=E9d=E9termin=E9 ) Or, si j'ai bien compris ta probl=E9matique, dans ton cas il n'existe pas de signal de r=E9f=E9rence pr=E9d=E9termin=E9, et =E0 priori n'importe quoi peut changer dans l'image. Et ton syst=E8me doit =EAtre capable : (1) D'isoler le delta, puis (2) D'effectuer un suivi de la zone en question. Est-ce bien cela ?
Une fois que tu auras fait le choix d'un algo, s'il est correctement impl=E9ment=E9 alors il sera totalement param=E9trable, donc la r=E9solution de ce genre de contrainte sera possible.
Question rapidit=E9, si on compare la vid=E9o avec l'audio, l'audio c'est du 1D mais une image c'est du 2D donc le nombre d'=E9chantillons =E0 traiter augmente quadratiquement.
Ah, y'a du tracking =E0 faire ... ?
Recherche des trucs comme "EyesWeb", j'ai boss=E9 l=E0-dessus =E0 l'IRCAM, leur soft est open-source et tu peux exp=E9rimenter avec, puis t'inspirer de leurs algos pour ton appli :
formatting link
Ca a l'air plut=F4t int=E9r=E9ssant comme projet. Tu peux en dire plus, ou c'est confidentel ?
Pour moi, un calcul de corr=E9lation s'impl=E9mente par la fonction d'intercorr=E9lation suivante : (la toute premi=E8re =E9quation en haut de page)
formatting link
Ceci vaut pour deux signaux complexes S(t) et R(t) avec dt l'=E9l=E9ment correspondant au temps, et bien s=FBr, en pratique les bornes de l'int=E9grale seront finies.
Pour une image, il faut int=E9grer suivant deux dimensions, donc une int=E9grale double avec par exemple dx et dy, et par suite le temps de calcul augmente comme le produit XY.
Ci-dessous un exemple d'utilisation pratique de l'intercorr=E9lation sur des images 2D
formatting link
Si tu recherches sur des sites universitaires tu trouveras de la doc tr=E9s s=E9rieuse sur la th=E9orie et la mise en oeuvre pour les applications pratiques. Un exemple au hasard :
formatting link
Tiens-nous au courant du d=E9veloppement de ton proto !
Je confirme que je crois avoir compris que la m=E9thode la plus simple=20 pour "traitre" une image (quelconque) en comparaison d'une autre image=20 (quelconque++) c'est de les corr=E9ler.
C'est une pratique courante dans les radars, mais ma question va vers la =
rapidit=E9 de traitement.
Disons que le changement sera faible sur l'ensemble de l'image et fort=20 dans une zone "=E0 trouver"
Merci :), j'ai visit=E9, c'est int=E9ressant mais les fonds paraissent tr= =E8s=20 uniformes
C'est plus que confidentiel sur la finalit=E9 tr=E8s innovante qui a =E9t= =E9=20 d=E9pos=E9e, je visite juste les moyens =E0 mettre en =9Cuvre.
La corr=E9lation sert =E0 localiser un motif CONNU : connais-tu =E0 l'avance le motif =E0 rechercher, ou veux-tu juste d=E9tecter des mouvements ?
Oui, tout =E0 fait. Dans ce cas la corr=E9lation op=E8re entre l'=E9cho et le signal =E9mis, qui bien s=FBr est d=E9ja connu.
Alors je crois qu'il te faut un DSP. A choisir en fonction du nombre de pixels de l'image et de la vitesse de traitement que tu veux atteindre.
|
formatting link
Regarde aussi les liens donn=E9s dans l'autre post.
Le fond peut =EAtre absolument quelconque, ca marche aussi bien, puisqu'ils proc=E8dent par simple soustraction entre deux images successives, la r=E9sultante est une image noire partout sauf aux endroits o=F9 il y a eu mouvement entre les deux images.
| Tu peux en dire plus, ou c'est confidentel ?
Dommage. Cela me fait penser =E0 la reconnaissance et au suivi d'un visage (d=E9ja connu) dans une foule.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.