TP1: Colorisation de l'Empire Russe

GIF-7105 : Photographie algorithmique (Hiver 2015)

Au début du 20e siècle, le photographe Sergei Mikhailovich Prokudin-Gorskii parcourut l'empire russe en prenant des photos bien particulières. Pour chaque scène qu'il immortalisait, il prenait trois photos : l'une avec un filtre bleu devant l'objectif, une seconde avec un filtre vert et une dernière avec un filtre rouge. Cela lui permettait par la suite de reconstituer des photos couleur, en combinant les trois différentes prises avec une source lumineuse.

Dans ce travail, nous utilisons les originaux de ces photos et tentons de reconstituer les scènes en couleur. Quelques problèmes se doivent d'être résolus, en particulier l'alignement des différents canaux, la suppression des bordures et la balance des blancs.

L'algorithme général utilisé pour réaligner les images est le suivant :

La visualisatrice suivante présente les exemples obligatoires d'images à basse résolution. Les translations utilisées pour chaque canal sont indiquées en bas.

La visualisatrice suivante présente les exemples obligatoires d'images à haute résolution. Les translations utilisées pour chaque canal sont indiquées en bas.

Quelques images additionnelles ont été choisies parmi les autres photos. La visualisatrice suivante présente ces images (basse résolution).

Les résultats pour sept autres images à haute résolution sont aussi présentés ici.

Afin de reconstituer la méthode de Prokudin-Gorskii de nos jours, plusieurs photos ont été prises d'une même scène avec un appareil photo moderne. De l'une de ces prises, on a retiré le canal rouge, d'une autre le canal vert et d'une troisième le canal bleu. Le léger mouvement entre les prises de vues permet de simuler la translation apparaissant dans les images originales de Prokudin-Gorskii. Notons que pour certaines de ces photos, cette translation a malencontreusement été accompagnée d'une rotation. Par conséquent, il est impossible de réaligner les images en utilisant seulement une translation, ce qui fait en sorte que le centre de l'image (la partie utilisée pour l'alignement) est nette alors que les bords sont flous ou diffus.

Les images reconstituées comportent souvent de disgracieuses bordures causées par le réalignement des différents canaux. L'image de gauche en montre un exemple. Afin de supprimer ces artefacts, une petite heuristique a été mise au point :

Au final, les résultats sont satisfaisants, comme le montre la figure suivante (toutes les figures haute résolution de la page ont également reçu ce traitement). Les problèmes viennent principalement du choix des seuils (écart 55-45 ou 65-35? ou alors 60-40?), et du fait qu'un artefact présent dans la bande en question diminue la valeur de d et augmente celle de v, ce qui peut conduire l'algorithme à ne pas assez rogner. De manière générale, une préférence a été accordée à préserver l'image plutôt qu'à la suppression totale des bordures.

Graphe

Le graphique de gauche montre la variation de d (courbe verte, une haute valeur indique une bordure) et de v (courbe rouge, une basse valeur indique une bordure) en fonction de la colonne (le graphique est aligné avec l'image présent en-dessous). On voit bien la nette coupure lorsque l'on passe de la bordure à l'image en elle-même.

Original
Cropped

Original

Recadré

Original
Cropped

Original

Recadré

Dans les images, la balance des blancs a été ajustée de façon très simple, en ajustant la moyenne de l'image au gris. Le canal vert a été arbitrairement choisi pour servir de référence, et les moyennes des autres canaux sont ramenées à sa valeur. Les résultats sont généralement corrects, bien que l'on remarque que la correction n'est pas toujours complète. Il est toutefois à noter que la balance des blancs est rendue difficile par les nombreuses "taches" de couleur présentent sur la plupart des photos.

Original

Original

Balance

Avec balance des blancs


Original

Original

Balance

Avec balance des blancs

Le principal problème rencontré découle du choix de la fonction de distance. À l'origine, une simple somme des différences au carré (SSD) étaient utilisée. Toutefois, elle s'est avérée peu robuste, puisque, par définition, le contenu de chaque canal est indépendant. Si cette métrique donne des résultats acceptables dans certains cas, c'est parce que les canaux sont suffisamment similaires pour qu'elle s'en tire à bon compte, mais ce n'est pas toujours le cas. Par exemple, dans l'image de gauche, le canal bleu est très décorrélé des deux autres canaux (le bleu n'étant présent ni dans le vert de la forêt, ni dans le beige du bois). Comme ce canal est utilisé comme référence, l'alignement obtenu avec une métrique SSD appliquée directement sur les canaux est mauvais.

Afin de régler ce problème, un filtre de Sobel (détection de bords) a été utilisé préalablement au calcul du SSD, en partant de la supposition que les arêtes sont généralement présentes de manière significative dans tous les canaux. Les parties non-intéressantes, peu corrélées, sont simplement mises à zéro par le filtre, ce qui permet à l'alignement utilisant le SSD de bien mieux performer (image de droite). L'application de ce filtre a toutefois le désavantage de ralentir quelque peu le traitement.

Bad
Good

Somme des différences au carré (SSD)

Sobel + SSD