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.