Louis-Émile Robitaille
Dans cette partie, il faut implémenter un filtre d’accentuation (
sharpening filter
) afin de se pratiquer à filtrer des images. Le filtre d’accentutation peut être facilement implémenté grâce à un filtre gaussien. En effet, le filtre gaussien étant un filtre passe-bas, il suffit de soustraire l’image initial
\begin{equation}
I_a(I, \alpha, \sigma) = I + \alpha \cdot (I - I * G(\sigma))
\end{equation}
Résultat obtenu sur deux images choisies :
python code/no0.py
source :
http://bit.ly/2lpPzcg
source :
http://bit.ly/2lufSKk
Dans cette partie, il faut implémenter l’algorithme de création d’images hybrides décrit dans l’article
SIGGRAPH Oliva 2006
. Pour créer l’image hybride, Oliva and al. suggère de prendre les hautes fréquences de la première image et les basses fréquences de la deuxièmes image pour composer une image hybride
Tout d’abord, pour que le résultat soit intéressant, il faut aligner les images. Le code
code/align_images.py
permet de demander à l’utilisateur deux paires de correspondance entre les images afin d’aligner celles-ci.
Ensuite, nous filtrons les images avec deux filtres gaussiens ayant chacun un sigma différent,
Les sigmas sont choisis empiriquement.
\begin{equation}
I_h(I_1, I_2, \sigma_H, \sigma_L) = \frac{1}{2} (I_1 - I_1 * G(\sigma_H)) + \frac{1}{2}(I_2 * G(\sigma_L))
\end{equation}
Résultat sur la paire d’images fournie
python code/no1.py Albert_Einstein.png Marilyn_Monroe.png
Résultats sur quatre autres paires d’images
python code/no1.py couillard.png bellavance.png
python code/no1.py lune.png soleil.jpg
python code/no1.py spock.jpg kenobi.jpg
python code/no1.py innovation.jpg kheops.jpg
Illustration de l’analyse fréquentielle du résultat préféré
Notre résultat préféré est, sans conteste, l’hybride des deux héros de la science-fiction Spock et Obi-Wan Kenobi. Nous pouvons voir l’analyse fréquentielle détaillée ci-dessous. Pour les besoins de la visualisation, nous présentons l’analyse fréquentielle de l’image hybride noir et blanc que nous retrouvons ci-dessous également.
Nous y pouvons voir que les filtres atténuent les hautes fréquences de l’image 2 et atténues les basses fréquences de l’images 1. Également, nous voyons que l’image final est un mélange des hautes fréquences de l’image 1 et des basses fréquences de l’image 2.
Dans cette partie, il faut implémenter la pile gaussienne et la pile laplacienne. Chacune des piles contient 8 niveaux de filtrage.
La pile gaussienne est construite à partir de 8 filtre gaussien aux sigmas suivants :
La pile laplacienne est construite à partir des soustractions chaque niveau de la pile gaussienne avec son niveau inférieur. Le dernier niveau de la pile gaussienne n’ayant pas de niveau le succédant, nous le repoduisons comme tel dans la pile laplacienne. Ainsi, la pile laplacienne nous donne 8 plage de fréquences qui nous serons utiles pour de prochains algorithmes.
Résultat pour l’image Lincoln et Gala de Dali
Implémentation :
python code/no2.py lincoln.py
Pile gaussienne
Résultat pour l’hybride Kenobi-Spock
Finalement, nous pouvons voir les mêmes piles avec le résultat préféré de la section précédente : l’hybride Kenobi-Spock
Implémentation :
python code/no2.py hybridKS.py
Pile gaussienne
Discussion
Les deux piles nous permettent de mieux comprendre le fonctionnement de l’image hybride dans les deux cas ci-dessus.
En effet, nous pouvons voir que plus nous avançons dans la pile gaussienne, plus nous commençons à voir l’image filtrée en basse fréquence. Cela est normal, car nous enlevons progressivement les hautes fréquences.
Tandis que la pile laplacienne nous aide à voir les différentes bandes de fréquence formant l’image. Au début de la pile laplacienne, nous avons seulement les hautes fréquences et, ainsi, seulement l’image filtrée en haute fréquence. À la fin, nous avons seulement les basses fréquences, ainsi nous avons seulement l’image filtrée en basse fréquence. Or, vers le milieu de la pile, nous avons une tranche nous permettant d’avoir une partie des hautes et des basses fréquences, nous pouvons ainsi voir une composition des deux images.
Dans cette partie, il faut implémenter un algorithme similaire à celui présenté dans l’article Burt 1983 pour faire un spline d’images.
Pour ce faire, nous :
\begin{equation}
I_M(I_1, I_2, M)=\sum P_L(I_1)\cdot G_L(M)+\sum P_L(I_2)\cdot G_L(1-M)
\end{equation}
Résultat pour l’hybride la pommange
Pour la pommange, nous décidons arbitrairement que le masque est défini comme étant la moitié de l’image.
python code/no3.py apple.jpeg orange.jpeg
Résultats pour trois autres paires
Pour les autre image, nous utilisons premièrement le script d’alignement pour bien positionner les images. Ensuite, nous utilisons un code trouvé sur
internet
(implémentation de roipoly pour python dans
extern/roipoly.py
) pour sélectionner un masque. Pour des soucis de vision, nous affichons la moyenne des images pour choisir le masque. Nous utilisons l’argument
m
à la fin de la commande pour entrer en mode manuel.
python code/no3.py eiffel.jpg unilaval.jpg m
Oh! la tour eiffel est rendu sur le campus! Même si nous voyons un certain halo, le résultat est impressionnant!
python code/no3.py cachalot.jpg port.jpg m
Je vous assure, j’ai vu un cachalot dans le port de Québec!
python code/no3.py einstein.jpg trump.jpg m
trump devrait s’intéresser plus à la science! Le résultat est vraiment impressionnant, surement dû au fait que Trump fait une grimace dans son image également.
Résultats avec mes images
python code/no3.py guig.jpg complexe_g.jpg m
Mon frère attaque le complexe G…
python code/no3.py moi.jpg tele.jpg m
Je passe à la télé pour les affaires étrangères
Résultats détaillées sur le montage préféré
Le grand gagnant est l’image mélangée de trump qui tire la langue à la Einstein. Voici les étapes détaillés pour faire le mélange :
Discussion
Nous pouvons ainsi voir qu’avec une pile laplacienne nous pouvons utiliser un mélange graduel entre les deux images et ainsi produire une image somme toute plus réaliste qu’un simple copier-coller. Nous voyons dans la dernière partie comment la pile permet d’ajouter graduellement les basses-fréquences en premier et les hautes fréquences ensuite.