TP4: Assemblage de photos
Par Mathieu Garon
Introduction
Une des techniques essentielles dans la plupart des applications en vision numérique est la capacité à corréler
plusieurs caractéristiques semblables dans deux images différentes. Par exemple, si le même pixel de deux images
est identifié, il est possible de déterminer sa position dans l'espace 3D en fonction de la position des caméras. Le TP suivant va
utiliser ce même principe pour assembler plusieurs photos en un panorama. L'implantation sera présentée en deux étapes importantes qui sont,
l'appariement automatique des caractéristiques des images et la transformation appliquée sur celle-ci.
Approche
Appariement automatique des caractéristiques
Création de points d'intérêts
La première étape consiste à trouver dans les deux images, plusieurs caractéristiques potentielles et dans la mesure
du possible, uniques.. La méthode utilisée dans le cadre de ce TP sera la détection des coins
de Harris. L'algorithme donne un coefficient pour chaque pixel et ceux-ci devront être triés de manière
efficace. L'image suivante présente une implémentation brute pour la recherche des coins.
Sélection des points d'intérêts
Pour la sélection des points, deux critères sont importants soit, la disposition de ceux-ci ainsi que
leurs coefficients en tant que gradient x,y dans l'image. En appliquant un seuil sur la valeur des coefficients,
les valeurs non importantes sont retirées. Pour la suite, un algorithme appelé
Adaptive Non-Maximal Suppression
devra être appliqué pour choisir les points les plus importants dispersés de manière égale. De cette manière, les points
d'intérêts seront dispersés dans toute l'image. L'algorithme est très simple, il suffit de trouver le rayon minimum
entre chaque pixel et le pixel le plus proche ayant une valeur plus élevée. Une fois que cela est déterminé, il suffit de trier
les pixels du plus isolé au plus proche. Le nombre de points est sélectionné parmi les plus grands ce qui
uniformise la distance entre les maximums.
Extraction des descripteurs
Lorsque les maximums sont déterminés, des descripteurs doivent être extraits des images. Pour ce faire, une fenêtre de
40x40 pixels est sélectionné autour du point et est réduit à une fenêtre de 8x8 dans le but de garder seulement les
informations à basse fréquence. Ceux-ci étant plus robuste au bruit. Finalement, les descripteurs sont comparés
exhaustivement dans le but de trouver des points potentiellement identiidentiquesles deux images. Les lignes
bleus représentes les points potentiellement égales.
Transformations des images
Lorsque la correspondance des points a été établie, le problème devient un système linéaire surdéfini. L'homographie
d'une image vers une autre peut être calculé dans l'objectif de pouvoir faire la projection des images sur le même
plan.
RANSAC
Bien que plusieurs points ont été appareillés, il n'est pas certain que ceux-ci sont bien les mêmes. Pour rendre
la détermination de l'homographie entre les deux images plus robuste, l'algorithme Ransac s'avère une solution efficace
et facile à implémenter. L'objectif de ransac est simplement de choisir au hasard quatre points et de calculer leurs
homographies. Ensuite celle-ci est appliquée sur tous les descripteurs préalablement calculés. Un pointage est établi
sur l'itération en fonction de la distance des points avec leurs homologues. Il est important de bien choisir la valeur
de la distance pour classifier les points comme étant valide, cela a un enjeu majeur sur la transformation finale.
Finalement, la meilleure itération est sélectionnée et l'homographie est recalculée sur l'ensemble des points valide pour
donner un résultat plus précis. Dans l'image suivante, les points verts représente les pixels valides.
Mixer les images
L'homographie doit être calculée avec la méthode SVD. Pour ce faire, il suffit de modifier le système linéaire
Ax=B pour obtenir la forme Ax=0. Voir la section Problèmes rencontrée pour une explication sur les résultats. Pour
construire la mosaïque, il est nécessaire d'appliquer la transformation sur les points de la première image vers
la deuxième image. Les dimensions des images subséquentes peuvent être calculées en fonction de la transformation
des quatre coins de l'image à transformer. Finalement, lors de l'application des images, un addition pondéré
entre les deux images est appliqué. Il serait plus éfficace de varier la pondération en fonction de l'endroit
ou les images sont superposés.
Résultats
Problèmes rencontrés
En premier lieu, le calcul des homographies avec la méthode des moindres carrés cause beaucoup de problèmes avec
l'alignement des images. En effet, il s'avère que cette méthode est inefficace pour un tel problème, et la méthode
de résolution svd donne les résultats escomptés.
Une limite sur la taille des images devrait etre imposé dans le cas ou l'homgraphie est trop "étiré". En
effet, dans certain cas les images générés était tout simplement trop grandes.
Ensuite, une mauvaise gestion des matrices dans la version actuelle du programme génère certains défauts dans les résultats.
Par exemple, il y a du repliement spectral causé par la mauvaise interpolation des transformations des pixels, de plus,
aucune opération n’assure la transition entre les images.
Finalement, le programme principale qui créé la mosaic n'est pas modulaire et ne permet pas de facilement faire
des panoramas avec un nombre arbitraire d'images. De légères modifications pourraient rendre l'outil plus aisé
à utiliser.