-
Superposition d'image
Bonjour à tous,
je réalise un projet dans lequel je souhaite réaliser une estimation de mouvement par block matching.
J'ai déjà implémenté la partie de block matching, mais il me reste un problème au niveau du recalage des images.
Je m'explique, pour faire une bonne compensation de mvt entre 2 images, j'ai besoin que le "décor" soir fixe or dans mon appilcation la caméra qui saisit les images bouge un peu. Je dois donc superposer chaque images successives pour limiter l'effet des mvts de la caméra.
Pour réaliser cette superposition, je pensais utiliser la corrélation qu'il y a entre les 2 images pour obtenir les coordonnées du maximum de vraissemblance afin d'en déduire le vecteur de déplacement.
Seulement je ne sais pas trop quelle formule de la corrélation utiliser ni comment l'implémenter sous matlab.
Si quelqu'un peut me donner un p'tit coup de main...
PS: si une meilleure solution existe, je suis à l'écoute :D
-
Salut!
A ma connaissance il n'existe pas de méthode rapide et robuste pour superposer les images...
En effet, pour les rassembler en une seule, il faut trouver des points communs entre les images, et ensuite estimer les déformations à appliquer à l'image 1 pour la recoller sur l'image 2.
Le problème c'est que pour déterminer des points de ressemblance (automatiquement j'entends) il n'y a pas de méthode rapide (enfin je crois car j'avais pas mal cherché c'était mon stage l'an dernier)... Si tu veux plus de détails va voir http://www.mathieu.tobie.perso.ceget...Stage_enac.pdf...
C'est basé sur la détermination de points de l'image qui seront détectés à coup sûr dans chaque image : elle doit être invariante par translation, rotation, changement d'échelle... ça déjà c'est très long... Ensuite il faut déterminer avec l'ensemble des points de similitude la déformation à appliquer via des algos d'optimisation...
On pourrait me dire qu'il suffit juste d'essayer de recaler en translation seulement, mais le problème de trouver des points de similitude reste le même...
Pour ton suivi de mouvement en temps réel (ou quasi réel, en tout cas plus qu'avec un recalage d'images), il y a des méthodes bien plus efficace que de tenter de superposer les images... Je me souviens plus des noms, mais sûr ça existe... Je dois avoir ça chez moi, je verrai ça ce soir...
A+
-
ok merci,
donc selon toi mon idee d'utiliser la correlation ne sera pas efficace?
dans mon cas je ne devrais pas avoir de rotation, uniquement des translations, c'est pour ca que je m'etais penché sur la corrélation.
le cas des points d'intérêts j'y ai aussi pensé mais c'est un technique trop éloignée du temps réel pour mon application (comme tu l'as dit)...
j'attends avec impatience le nom de tes methodes quand tu seras rentrés ce soir.
merci d'avance.
-
Bah pour ce qui est de la corrélation tu peux toujours essayer, mais je doute de son efficacité... Surtout pour des calculs rapides... Les techniques dont je ne me souviens plus le nom :cry: incorporent il me semble cesnotions de corrélation mais de façon optimisée dans la recherche du mouvement, donc il vaut mieux se fier à ces techniques.
-
des idees??
si tu penses à tes methodes... merci
-
Oui désolé, j'ai pas pu rentrer chez moi hier soir, la vie étudiante est dure :)... Promis je regarde ce soir...
Mais cherche déjà sous google avec des mots clés du genre "visual tracking" "motion camera"...
-
Salut,
J'ai déjà fait pas mal de recherche, mais j'ai surtout trouvé des methodes de suivi, de detection ou de classification tel que les snakes, le flot optique etc...
En ce qui concerne le "recardage" je tombe la plupart du temps sur des systemes de stéréo-vision ou sur l'utilisation de la correlation, c'est pour ca que le nom des methodes m'interesse --> pour les recherches :wink:
-
Euh... J'arrive pas à retrouver le nom de la méthode :oops: ...
Dans mon cours on voit clairement des images où la caméra bouge et où on arrive à suivre le mouvement...
Je crois que l'algo se base sur une estimation du mouvement général, ce qui correspond au mouvement de la caméra, puis en retranchant ce mouvement on peut détecter quels sont les objets qui bougent...
Vraiment désolé, c'est tout ce que je peux dire :oops: ...
-
en fait, c'est du block matching dans lequel on interprete le vecteur de mvt comme etant le deplacement de la cam.
c'est plutot rapide(j'avais dejà commencé à le faire) et je vais donc poursuivre sur cette voie.
surtout que la correlation croisée à calculer c'est bien long.
par contre qd on fait la corrélation croisée sur 2 images (2 matrices) je vois pas bien comment exploiter le resultat.
je l'ai programmé sous matlab:
correlation = xcorr2(matrice1,matrice2);
mais le resultat est une matrice et je ne voix pas bien comment en extraire les pics des maximums de ressemblance.
si la corrélation croisée est clair pour qqun et qu'il peur d'eclairer ma lanterne ;)
merci à tous
-
en fait, c'est du block matching dans lequel on interprete le vecteur de mvt comme etant le deplacement de la cam.
c'est plutot rapide(j'avais dejà commencé à le faire) et je vais donc poursuivre sur cette voie.
surtout que la correlation croisée à calculer c'est bien long.
par contre qd on fait la corrélation croisée sur 2 images (2 matrices) je vois pas bien comment exploiter le resultat.
je l'ai programmé sous matlab:
correlation = xcorr2(matrice1,matrice2);
mais le resultat est une matrice et je ne voix pas bien comment en extraire les pics des maximums de ressemblance.
si la corrélation croisée est clair pour qqun et qu'il peut d'eclairer ma lanterne ;)
merci à tous
-
Bah il suffit d'extraire le (i,j) où est le maximum... C'est le centre de ton image à caler sur l'autre...
-