Description du travail

L'objectif de ce travail consiste à utiliser les images noir et blanc de Prokudin-Gorskii afin d'en réaliser la coloration.

Chacune des images contient la même image prises avec un filtre bleu, un filtre vert ainsi qu'un filtre rouge. Ainsi, en ayant recourt à chacune des images, en les superposant et en réalisant un alignement des images, il est possible de recontruire chacun des canaux (RGB) des images pour en obtenir le résultat couleur.

1. Approche à une seule échelle

En ayant recourt au canal bleu (première image des 3 images) comme image de référence, il est possible d'aligner les deux autres images (canal vert, canal rouge) sur celle-ci.

L'alignement des images a été réalisé sur le résultat d'un filtre laplacien appliqué sur chacune des images. Le métrique utilisé pour comparé l'alignement des images est la norme L2. En effet, le filtre laplacien permet de mesurer les variations d'intensité de chaque canal de l'image ce qui permet une meilleure comparaison entre les canaux de couleur RGB.

La superpositions des images a été effectuée et évaluée sur une plage de [-15, 15] pixels en x ainsi qu'en y. Une bordure maximale de 15 pixels a été retirée de chacune des images pour annuler les effet de la translation des images.

Les images suivantes présentent les résultats obtenus à partir de l'algorithme d'alignement des images implémenté dans le fichier q1.py

00106v.jpg
00757v.jpg
00888v.jpg
00889v.jpg
00907v.jpg
00911v.jpg
01031v.jpg
01657v.jpg
01880v.jpg

2. Approche à échelles multiples

Cette section utilise la même méthode d'alignement qu'à la question 1. Cependant, la translation optimale de chacune des images est déterminée de manière séquentielle en ayant recout à une pyramide d'images où la taille de l'image est réduite par deux à chaque niveau de la pyramide. L'algorithme avec l'image de plus faible résolution et remonte ensuite dans la pyramide. À chaque niveau de la pyramide une nouvelle translation est trouvée. Celle-ci est ensuite doublée et appliquée sur l'image l'image du niveau suivant de la pyramide (2 fois plus grande). L'algorithme est appliqué jusqu'à remonter à l'image de taille originale et ainsi donc trouver la translation à appliquer à l'image grande résolution.

Les images suivante présentent le résultat final de l'algorithme.

00029u.jpg
00087u.jpg
00128u.jpg
00458u.jpg
00737u.jpg
00822u.jpg
00892u.jpg
01043u.jpg
01047u.jpg

10 images additionnelles tirées de la librarie disponible en ligne.

00001u.jpg
00002u.jpg
00003u.jpg
00004u.jpg
00005u.jpg
00006u.jpg
00007u.jpg
00008u.jpg
00009u.jpg
00010u.jpg

Il est possible de remarquer que dans l'ensemble les résultats de l'algorithme sont bon. Toutefois, certaines images ont quelques effets de "ghosting" généralement autour des choses animées dans l'image (objets mobiles ou personnes) puisque ceux-ci se sont probablement déplacés entre chacune des acquisitions d'image.

3. Mettez-vous dans la peau de Prokudin-Gorskii!

Le petit basil en mouvement!
00087u.jpg
00128u.jpg

La première image est une photo de mon chat. L'ensemble de l'image est bon excepté autour de la tête et de la queue qui eux se sont déplacés entre chacune des acquisitions et ont créer du "ghosting" dans l'image. Cela démontre la limitation de cette méthode et de l'algorithme lorsque des éléments sont pris en mouvement.

La deuxième image a été prise en étant le plus stable possible et la scène n'a aucun élément en mouvement. Dans ce cas, l'algorithme fonctionne de manière optimale et le résultat de l'alignement est bon.

La troisième image a été prise avec une légère rotation de la caméra entre les images. Puisque l'algorithme ne corrige que les effets de translation, il est possible de remarquer un léger "ghosting" autour de la machine espresso. Cela est dû au fait que l'algorithme ne parvient pas à corriger la rotation entre les images.

Crédits supplémentaires

Égalisation par histogramme

L'égalisation d'histogramme a été implémenté en portant l'image vers l'espace de couleur L-A-B est en effectuant l'égalisation seulement sur le canal L. Suite à l'égalisation par histogramme, l'image est rapportée vers l'espace R-G-B. Les résultats suivant montre à gauche l'image initiale et à droite le résultat suite à l'application de l'algorithme. Il est possible de remarquer que l'égalisation d'histogramme accentue les contrastes dans l'image.

Avant
Après
Avant
Après

Équilibrage blanc

L'équilibrage blanc a été effectué en assumant un monde gris. l'équilibrage est appliqué sur l'image dans l'espace couleur L-A-B sur les canaux A et B. Tel qu'il est possible de constater sur les images suivantes, après l'équilibrage blanc, le blanc des images apparait nettement plus blanc que dans les images initiales. De plus, on remarque que les couleurs de la deuxième images semblent plus étendues et permettent donc de mieux percevoir la brique du bâtiment.

Avant équilibrage
Après équilibrage
Avant équilibrage
Après équilibrage

Découpage des bordures

Le découpage des bordures a été réalisé par une analyse de la somme de l'intensité des pixels par colonne et par ligne de l'image. L'algorithme implémenté vérifie 10% de l'image de part et d'autre de l'image pour les bordures verticales et horizontales. En calculant la médiane ainsi que l'écart type de l'ensemble des colonnes et des lignes, il est possible d'obtenir une valeur centrale ainsi qu'une marge dans laquelle le contenu pertinent de l'image doit se retrouver. Ainsi, en partant de chaque côté de l'image, si la somme des valeurs de la colonne est plus grande ou plus faible que deux écarts types la position de la colonne ou de la ligne est notée. Celle-ci correspondra à la position à laquelle il faut couper l'image à gauche, à droite, au haut ou au bas de cette dernière selon le côté de l'image analysé.

La figure suivant montre la somme de l'intensité selon le déplacement en x sur chaque colonne de l'image. On remarque la présence de deux zones d'intérêts qui correspondent aux endroits où couper l'image puisque ceux-ci sont hors de la marge de deux écarts types. Cette figure a été générée à partir d'image 00106v.jpg.

Les figures suivantes présentent les résultats obtenus suite à l'application du découpage de bordures.

Avant découpage
Après découpage
Avant découpage
Après découpage