TP1: COLORISATION DE L'EMPIRE RUSSE

Problématique

Ce TP a pour objectif de reconstituer une image RGB à partir d'images B, G et R comme illustré sur l'image suivante:


Pour y arriver, il suffirait de concaténer les différents canaux dans l'ordre adéquat. Seulement un problème subsiste: Les images ne sont pas forcément bien alignées. Cela peut créer des artefacts après reconstitution. Nous allons devoir trouver une solution pour y pallier.

Solution

La solution, de manière générale, se déroule en 3 étapes:

  1. Subdiviser l'image en 3 image de même dimension
  2. Choisir une image de référence et calculer les vecteurs de translation nécessaires pour les aligner avec l'image du canal de référence
  3. Réaliser la translation et concaténer les résultats obtenus

Cependant, dépendamment de la taille de l'image, le traitement peut être différent..

Approche à une seule échelle

Dans le cadre de ce TP, nous effectuons une recherche de -15 à 15, soit 961 essais de translations sur les images à fixer sur la référence. Pour évaluer chaque translation, j'utilise la somme des différences au carré. Cette méthode est plutôt robuste si on l'applique sur de petites images

 image sans ajustement
sans ajustement Vecteur G = [4 0]
Vecteur R = [9 -1]
 image sans ajustement
sans ajustement Vecteur G = [0 0]
Vecteur R = [5 1]
 image sans ajustement
sans ajustement Vecteur G = [6 -1]
Vecteur R = [12 -2]
 image sans ajustement
sans ajustement Vecteur G = [6 2]
Vecteur R = [13 3]
 image sans ajustement
sans ajustement Vecteur G = [1 1]
Vecteur R = [4 1]
Ici, j'ai retiré quelques pixels en bordure pour rendre les images plus intéressantes encore.

Approche à échelles multiples

Pour les plus grosses images, le calcul risque de grossir si l'on souhaite obtenir de bons résultats. En utilisant l'approche à une seule échelle sur une grosse image (3741 x 3260), on obtient le résultat suivant:

 image sans ajustement
sans ajustement image ajustée par une méthode non-récursive
Vecteur G = [15 -6]
Vecteur R = [15 -2]

On constate que la recherche du vecteur va au delà de la plage allouée pour le traitement. Pour obtenir de meilleurs résultats, on pourrait augmenter la plage de translations possibles; c'est-à-dire passer de [-15; 15] à [-200; 200] mais on se rend compte que la complexité quadratique du problème fait qu'il nous faudra essayer 160801 combinaisons pour tenter d'obtenir un résultat potable. Pour éviter tous les calculs encourus par cette méthode, on peut utiliser une approche à échellee multiples. Elle consiste à utiliser l'algorithme à une échelle n fois sur diverses tailles de la grande image. Ce qui permet d'obtenir des résultats plus intéressants en gardant une complexité linéaire.

 image sans ajustement
sans ajustement ajustée
 image sans ajustement
sans ajustement ajustée
 image sans ajustement
sans ajustement ajustée
 image sans ajustement
sans ajustement ajustée
 image sans ajustement
sans ajustement ajustée
Vecteur G = [6 0]
Vecteur R = [15 -1]

On constate que pour ces images, malgré le niveau de profondeur, quelques translations sont encore nécessaires. On note quand même une amélioration.

Apprenti Prokudin-Gorskii

Quelques images prises:

 image sans ajustement
sans ajustement image ajustée

Conclusion

Les algorithmes à utiliser pour reconstruire l'image de base dépendent de la taille de l'image. Si l'on veut obtenir de bons résultats, il est nécessaire de les effectuer sur une plus grande plage. Fort heureusement, l'on peu utiliser une méthode récursive qui permet d'éviter de trop nombreux calculs. J'aurais aimer traiter plus d'images mais le temps de calculs est assez long sur ma machine qui gèle pendant le traitement, ce qui ne m'a pas permis de faire plus. Sur ce plan, il y a peut-être un moyen d'améliorer le code. Par ailleurs peut-être pourrions-nous faire mieux d'un point e vue conceptuel... Si nous sommes capables d'appareiller des points communs aux images (2 à 2), nous serions alors en mesure de trouver "plus facilement" les translations nécessaires pour les concaténers. C'est une piste qu'on pourrait peut-être explorer.