Rapport travail 1

Par Maxime Guillemette, le 17/01/2019.
Pour le cours GIF-4105 - Photographie algorithmique

Description du projet

Le projet consiste à générer automatiquement une image couleur à partir des plaques de verre numérisées de la collection Prokudin-Gorskii, et ce, avec le minimum d’artifacts visuels possible. Le programme doit donc recevoir en entrée une image telle que

Exemple d'image en entrée et produire une image telle que Exemple d'image en sortie

Pour ce faire, les approches suivantes seront utilisées: approche à une échelle et approche à échelles multiples. De plus, des résultats avec des photos personnelles et certaines optimisations seront présentées.

Approche à une seule échelle

Les résultats obtenus avec l’approche à une seule échelle sont les suivants:

00106 00757 00888 00889 00907 00911 01031 01657 01880

Approche à échelles multiples

Les résultats obtenus avec l’approche à échelle multiple sont les suivants:

00029 00087 00128 00458 00737 00822 00892 01043 01047 01892 01894 01895 01898 08197 01899 01900 01901 01902 01903

L’approche utilisée pour faire fonctionner cet algorithme a été de premièrement retirer 100 pixels de chaque côté de chaque image. Cela permet de retirer les bordures des images afin d’aligner selon le centre de l’image. Ensuite, une pyramide de l’image originale est formée jusqu’à ce que l’on atteigne une taille d’image de moins de 400 par 400 pixels. La réduction de l’image se fait en filtrant l’image avec un filtre gaussian (gaussian blur) puis en effectuant un downsampling de l’image filtrée. En commençant avec la plus petite, chaque image de la pyramide est alignée de -15 à 15 pixels en x et y et les valeurs d’alignement sont appliquées à l’image suivante, jusqu’à ce que l’on remonte à l’image originale.

Résultats sur photos personnelles

Voici les résultats sur des photos prises par moi-même:

p1out p2out p3out p4out

Toutes les photos ont été prises avec une caméra de téléphone cellulaire (celle d’un HTC 610S). Les 2 premières ont été prises sans faire d’effort de prendre les 3 photos de façon stable. Les résultats montre que l’algorithme a du mal à aligner les images, mais donne tout de même un résultat qui permet de comprendre le contenu de l’image. Les 2 autres images ont été prises en essayant le plus possible de garder la caméra stable et les résultats sont ainsi beaucoup mieux, particulièrement la 3ème photo.

Optimisations

Calcul d’erreur sur valeurs autres que RGB

Calculer l’erreur sur les valeurs RGB peut parfois bruiter le signal d’erreur. C’est-à-dire que l’algorithme peut parfois, dans des cas dégénérés, rencontrer des endroits de l’image ou il n’y a par exemple que du bleu. L’erreur est donc grande pour ces endroits et il est possible que l’erreur minimal soit avec un alignement non optimal. Plus la quantité de pixels est grande, plus ce phénomène a de chances de se produire. En effet, pour les images de type .tif qui on des forêts ou un ciel bleu dans l’image, il arrive que l’alignement ne soit pas parfait, comme le montre le résultat suivant:

Image sans filtre de contour

Avec un filtre de sobel, appliqué sur les images avant le calcul du score, l’alignement est significativement amélioré, comme le montre le résultat suivant sur la même image:

Image avec filtre de contour

Le filtre de sobel est un filtre qui effectue un filtrage passe-haut du contenu fréquentiel de l’image, c’est-à-dire qu’il atténue les endroits de l’image où il y a moins de variation. Donc, les contours prennent des valeurs hautes et le reste des valeurs basses. Par conséquent, l’erreur d’alignement est calculée sur l’alignement des contours et non sur l’alignement des couleurs.