Projet de vision Algorithmique (cours du M2 au MPRI)
Le but de ce projet était de réaliser un
programme de panoramas en C++ (
énoncé, miroir
ici) avec la librairie
Winlib. Enfin c'était sympa, ça m'a permis de découvrir Visual C++, et le langage lui-même de façon (un peu) plus approfondie que
là, notamment grâce aux docs de
cette page.
Le projet a eu plusieurs avantages avoués : faire un truc à peu près potable pour recoller deux images en un panorama horizontal, se prendre la tête sur des problèmes d'optimisation locaux pour trouver le global, et essayer de trouver des astuces pour corriger ce qui était moche dans les images obtenues. Il a aussi eu un avantage non avoué : découvrir ce que donne un gros projet motivant tout seul quand on est censé le faire à deux. Au final un programme pas très utile, et un source pas vraiment indispensable, qui n'intéresseront pas grand monde et c'est tant mieux :p.
Compiler main.cpp de TestImages.
Points faibles du programme :
- seuls les panoramas gauche/droite sont gérés en pratique.
- la corrélation donne parfois des résultats étranges.
- je n'ai pas trouvé comment enregistrer les images obtenues (pb de taille de tableau).
- l'algorithme LMS n'a pas été utilisé, mais la méthode alternative est très satisfaisante.
- l'image recollée (l'image de droite), quand elle a subi une rotation, présente quelques défauts visibles (sur des lignes de l'image).
Améliorations par rapport à la version précédente :
- la jonction des deux images a été très améliorée.
- les images couleurs sont gérées.
- le code source est plus commenté.
- on peut choisir au cours de l'exécution du programme les
images à charger.
Compiler main.cpp de TestImages (qui fait un panorama à partir de deux images en niveau de gris). Le choix des trois meilleurs appariements de points dans les deux images a été amélioré. La jonction des images a été traitée de façon un peu simple (une séparation verticale lissée départage les deux images), dans le cas d'un recollage "horizontal" de deux images. J'ai essayé d'améliorer en faisant déborder l'image de gauche sur la droie, mais il faudra améliorer cela. Il reste aussi à gérer les images couleurs, le chargement des images, et leur enregistrement.
Compiler main.cpp de TestImages (qui fait un panorama à partir de deux images en niveau de gris). LMS plantait bien que les points trouvés par la corrélation soient bons tous les 8, nous avons donc abandonné cet algorithme et choisi un autre n'utilisant pas LMS, et seulement trois points de Harris.
Il reste à gérer les images couleurs, la jonction entre les deux images, le chargement des images, et leur enregistrement.
Compiler main.cpp de TestImages (qui compile et affiche une sélection de points de Harris). LMS plante bien que les points trouvés par la corrélation soient bons tous les 8.
Compiler main.cpp de TestImages (qui compile et affiche une sélection de points de Harris, ainsi que les 4 ayant la meilleur corrélation). Il reste à trouve rles bons paramètres pour la corrélation (qui n'est pas assez efficace actuellement), et intégrer la partie concernant LMS dans le reste du code.
Compiler main.cpp de TestImages (qui compile et affiche une sélection de points de Harris). Il reste à finir la corrélation, et intégrer la partie concernant LMS dans le reste du code.
Retour à l'accueil