TP2: On s’amuse en fréquence

Louis-Émile Robitaille

Partie 0: Réchauffement

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 $I$ à l’image convoluée avec le filtre gaussien $G$ pour obtenir l’équivalent de la sortie d’un filtre passe-haut. Il suffit ensuite d’additionner à l’image initiale un multiple $\alpha$ des hautes fréquences obtenues. La formule finale de la création de l’image accentuée est :

\begin{equation}
I_a(I, \alpha, \sigma) = I + \alpha \cdot (I - I * G(\sigma))
\end{equation}

Résultat obtenu sur deux images choisies :


source : http://bit.ly/2lpPzcg


source : http://bit.ly/2lufSKk

Partie 1: Images hybrides

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 $I_h$ avec la moyenne des deux images filtrées ( $I_1$ et $I_2$ ).

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, $\sigma_H$ ( H igh) et $\sigma_L$ ( L ow). Pour obtenir la sortie d’un filtre passe-haut avec un filtre gaussien, il suffit de faire l’image intiale moins l’image filtré avec le filtre gaussien, comme dans la partie 0. Nous obtenons alors l’équation suivante pour la création de l’image hybride.

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


Résultats sur quatre autres paires d’images





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.

Partie 2: Piles gaussienne et laplacienne

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 : $\{\sigma_0, \sigma_1,\sigma_2,\sigma_4,\sigma_8,\sigma_{16},\sigma_{32},\sigma_{64}\}$ (l’image à $\sigma_0$ étant l’image initiale directement).

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

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

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.

Partie 3: Mélange multirésolution

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 :

  1. choissisons un masque pour l’image 1 $I_1$ . Le masque $M$ corresponant dans l’image 2 $I_2$ sera le masque inversé.
  2. nous calculons la pile laplacienne $P_L$ pour chaque image (comme en partie 2)
  3. nous calculons la pile gaussienne $G_L$ pour chaque masque (comme en partie 2)
  4. pour chaque image et son masque, nous multiplions les niveaux des deux types de piles $P_L(I)\cdot G_L(M)$
  5. nous calculons la somme de la pile résultante pour chaque image, ce qui nous donne deux images
  6. nous additionnons ces deux images pour donner l’image finale $I_M$

\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.

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.

Oh! la tour eiffel est rendu sur le campus! Même si nous voyons un certain halo, le résultat est impressionnant!


Je vous assure, j’ai vu un cachalot dans le port de Québec!


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

Mon frère attaque le complexe G…


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 :

  1. alignement des images

  2. sélection du masque
  3. pile laplacienne avec masque gaussien pour Einstein (avec constante 0.5 pour mieux voir)
  4. pile laplacienne avec masque gaussien pour Trump (avec constante 0.5 pour mieux voir)

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.