Colorisation de l'Empire Russe

Sergei Mikhailovich Prokudin-Gorskii (1863-1944)

Alignement et restauration d'images avec filtre RGB

L'Empire Russe

Au courant du siècle dernier, Sergei Mikhailovich Prokudin-Gorskii (1863-1944) pris de nombreuses images en utilisant des filtres Rouge, vert et bleu pour chaque photopraphie prise.

Voir sa page wikipédia

Description du projet

Le but du projet est de tenter de recréer, à partir de plaques de verre numérisées de la collection Prokudin-Gorskii, des images couleurs avec le moins d'artéfacts possible. Tout d'abord, les alignements seront fait avec des images en résolution réduite et en format .jpg en utilisant la technique de somme de différences de carré.

Ensuite, cette technique sera utilisée, combinée avec une approche à échelles multiples, afin de minimiser les temps de calculs sur les images originales en format .tif.

Code

Le code est disponible dans l'archive dans le dossier code(Question 1,Question 2, Question 3,Fonctions utilitaires)


Question 1

Pour aligner les différents canaux de couleurs, il est nécessaire d'utiliser une technique permettant de trouver la qualité de l'alignement entre les images. Dans le cas présent, la technique de somme de différence de carré a été choisie

$$ \epsilon_{\hat{Y},Y} = \sum_{i=1}^{n}(\hat{Y}_i - Y_i)^2 \quad ,$$

où $ n $ est le nombre de pixels utilisés pour comparé les deux images, $ Y $ et $ \hat{Y} $ sont les images comparées et $\epsilon_{\hat{Y}Y} $ la somme des différences au carré.

Afin d'obtenir l'image avec le meilleur alignement, il est nécessaire de rechercher la translation à effectuer avec les canaux vert et bleu par rapport au canal rouge afin d'obtenir la somme de différence de carré la plus petite possible.

Question 2

Le principal problème avec la technique utilisée à la Question 1 est la performance de l'algorihme. En effet, plus la résolution est grande, plus il sera long de trouver la somme de différence de carré minimale pour aligner les images. Afin de remédier à ce problème, la technique d'alignement à échelles multiples permet de résoudre une partie du problème.

Avec l'approche à échelle multiple, on diminue la taille des images avec un certain facteur permertant de réduire de façon importante le temps de calcul. Par la suite, la recherche de la somme de différence de carré minimale est effectuée sur cette image de plus basse résolution. Finalement, une fois la translation en x et en y trouvée à l'aide de la SDC, on effectue cette translation multipliée par le facteur précèdant sur l'image de taille originale.

Question 3

Résultats d'alignement

Voici l'alignement des images pour les différentes techniques utilisées. Les déplacements présentés sont représentés sous la forme (x,y).

Images utilisées

Somme de différence de carré force brute Approche à échelles multiples
Force brute: R->G: (2, -5), R->B: (1, -9) Échelles multiple: R->G: (-16, -48), R->B: (-32, -64)
Force brute: R->G: (-2, -3), R->B: (-5, -5) Échelles multiple: R->G: (-16, -48), R->B: (-48, -96)
Force brute: R->G: (0, -6), R->B: (-1, -12) Échelles multiple: R->G: (-16, 0), R->B: (-32, -32)
Force Brute: R->G: (-1, -3), R->B: (-3, -4) Échelles multiple: R->G: (0, -80), R->B: (-16, -128)
Force brute: R->G: (1, -3), R->B: (1, -6) Échelles multiple: R->G: (,0 -64), R->B: (0, -80)
Force brute: R->G: (1, -12), R->B: (1, -13) Échelles multiple: R->G: (0, -80), R->B: (0, -112)
Force brute: R->G: (0, -3), R->B: (-2, -4) Échelles multiple: R->G: 0, -112), R->B: (16, -160)
Force brute: R->G: (0, -6), R->B: (-1, -12) Échelles multiple: R->G: (0, -80), R->B: (16, -128)
Force brute: R->G: (-2, -8), R->B: (-4, -14) Échelles multiple: R->G: (-16, -96), R->B: (-32, -128)
Échelles multiple: R->G: (0, -64), R->B: (-224, 224)
Échelles multiple: R->G: (0, -64), R->B: (0, -96)
Échelles multiple: R->G: (16, -80), R->B: (16, -96)
Échelles multiple: R->G: (0, -96), R->B: (0, -160)
Échelles multiple: R->G: (-32, -32), R->B: (-32, -80)
Échelles multiple: R->G: (-16, -16), R->B: (-16, -32)
Échelles multiple: R->G: (0, -64), R->B: (-32, -112)
Échelles multiple: R->G: (0, -16), R->B: (0, -32)
Échelles multiple: R->G: (-16, -32), R->B: (-16, -16)
Échelles multiple: R->G: (-16, -48), R->B: (-32, -80)

Tableau de tous les déplacements:

Images personnelles

Voici trois images personnelles en utilisant la somme de différence de carré avec force brute comme dans la question 1. Comme les images ont été prises avec un téléphone cellulaire tenu à la main et que certaines images contiennent des éléments en arrière plan qui bouge, parfois l'alignement n'est pas parfait.

Force brute: R->G: (0, -1), R->B: (5, -1)
Force brute: R->G: (11, -2), R->B: (-8, 2)
Force brute: R->G: (2, -19), R->B: (21, -39)