TP2: On s'amuse en fréquences



Partie 0: Réchauffement


Pour la partie réchauffement du travail pratique 2 j'ai simplement suivi les instructions assez clair dans les notes de cours, soit le document pdf "Applications du filtrage". Ça démontre aussi en même temps comment j'exécute le programme.

Originale

- Filtrée

= Détails

Originale

+ (alpha) Détails

= Accentuée



Un autre exemple rapide avec une photo de mon mariage (et en couleur!).

Mariage avec niveau de joie correct

Mariage avec niveau de joie ACCENTUÉ



Partie 1: Images hybrides


Première partie du TP assez simple somme toute quand on prend en compte les acquis du réchauffement et qu'on se donne la peine d'allez lire les notes de cours. Pour Einstein et Marilyn j'ai pris un passe-bas avec cutoff 10 et pour le passe-haut un cutoff 15. Pour afficher correctement les images il faut impérativement prendre le color map "gray" et sinon pour l'addition des deux images ensemble je divise le tout sortant en deux.
Pour la partie 0 et 1 du TP j'ai utilisé les fonctions données dans l'énoncé:

Détails de Einstein

Marilyn filtrée

Monstre de Frankenstein


De très proche on reconnait quand même bien M. Einstein


De très loin Marilyn a l'air de Marilyn


Président de la Chine (à perpétuité)

Pooh!

Xi Pooh

Xi Pooh


Prince

Freddie

Légendes

Légendes


Mon résultat préféré et extrêmement biaisé est celui de mes deux auteurs préférés, Ray Bradbury et Isaac Asimov. Je trouve que les deux images vont de pairs, ces personnages avait un peu le même style d'accoutrement et portaient tous les deux de belles grosses lunettes noirs. On voit bien avec l'aide des transformés de Fourier que les deux images changent rapidement selon l'axe des X et Y mais avec leurs distinctions chacuns. Ray a une mince ligne diagonale allant du sud-ouest au nord-est, et ses lignes verticales et horizontales sont très précises. Pour Isaac, à cause de sa super chemise rayée on peut voir que les lignes horizontales et verticales de la FFT ne sont pas très nets et vont un peu plus couci-couça. La FFT de M. Isaac Asimov détails montre bien qu'on a coupé des bases fréquences avec le filtre passe-haut et que l'image est clairement moins net à cause de ceci. Le contraire complètement pour Ray Bradbury qui se voit se faire couper ses hautes fréquences par le filtre Gaussien passe-bas. La dernière FFT montre bien l'addition des deux autres FFT, soit l'addition des composantes hautes et bases fréquences des deux images.

Ray Bradbury

Isaac Asimov

Ray Bradbury filtré

Isaac Asimov détails

Mes auteurs préférés

Mes auteurs préférés

Ray Bradbury

Isaac Asimov

Mes auteurs préférés

Mes auteurs préférés

Mes auteurs préférés


H.P. Lovecraft

Idole de Cthulhu

From the outer worlds

From the outer worlds


Partie 1: Bonus de couleur


Pour les images couleurs j'ai dû changer un peu la fonction qui aligne les images pour être capable de prendre en compte les images avec plus que 2 dimensions. C'est dans le fichier "align_images_color.py". Mon premier exemple est avec M. Trump et M. Putin. Un peu manqué selon moi, c'est assez dificile quand les couleurs de l'arrière plan ne fitte pas avec les couleurs de l'autre image. J'ai essayé de faire passe-haut trump et passe-bas putin, mais le meilleur résultat est le contraire, soit passe-bas trump et passe-haut putin.

Putin

Trump

Boff

Boff


Je trouve même que le résultat est meilleur si je prend seulement les bords du visage comme référence, très probablement que mes deux images ne sont pas très bonne pour ce genre de superposition ou bien il me manque un petit quelque chose.

Presque mieux

Presque mieux


Plutin.. hum Pluton

Terra Nostra

Univers

Parallèle


Playing

hide

and

seek


Bon avec des objets ronds c'est vraiment pas si pire, surtout si les deux sont roses! Les FFTs sont vraiment manquées, mais je n'ai pas réussi a recomposer correctement dans ceux-ci pour les images couleurs. Je vois bien que l'image est déplacée verticalement, mais sans plus. On comprend quand même par contre qu'il y a eu filtrage passe haut et bas.

Kirby

Jigglypuff

Kirby détails

Puff filtrée

Pink mess

Pink mess

Kirby fft

Jigglypuff fft

Kirby détails fft

Puff filtrée fft

Pink mess ftt


Partie 2: Piles gaussienne et laplacienne


Un peu plus difficile cette partie, je ne comprenais vraiment pas comment faire la pile laplacienne, mais j'ai finalement trouvé dans les notes de cours la méthode qui me semble la meilleur. Soit de prendre l'image filtrée par le filtre gaussien, et de soustraire cette image à l'image filtrée dans le futur (je trouve simplement l'image filtrée par la valeur alpha future, soit alpha multipliée par deux à chaque fois). Un petit 'for loop' assez simple me permet de faire le filtre gaussien. J'utilise deux structures de listes pour enregistrer les images travaillées au fur et à mesure.

Pour la partie 2 du TP j'ai fait mes propres fonctions dans le fichier:


Pile gaussienne couleur


Pile laplacienne noir et blanc


Pile laplacienne couleur


Pile gaussienne noir et blanc


Pile gaussienne noir et blanc


Pile laplacienne noir et blanc


Partie 2: Bonus avec pyramides


Il est probable que de passer un petit filtre gaussien (ou de laplacien) sur des images de plus en plus petites nécessite moins de calculs et est plus rapide. Les résultats sont équivalents selon moi. Mon implantation des pyramides est assez simple. Je réutilise les fonctions pour les piles gaussiennes et laplaciennes, mais au lieu de doubler à chaque fois la taille du filtre, je redimentionne l'image, l'enregistre dans une variable extérieur à la boucle 'for' et ensuite j'applique un filtre d'une taille fixe. Sauf pour le filtre laplace qui augmente lui aussi graduellement avec la redimention de l'image.


Pile gaussienne couleur


Pile laplacienne couleur


Partie 3: Mélange multirésolution




Pour la partie 3 du TP j'ai fait mes propres fonctions dans le fichier:


Petit test pour l'algo de split.

Alpha = 0.0

Alpha = 0.10

Alpha = 0.25


Algorithme de split fonctionnel, avec un tout petit glitch à la fin, mais seulement du côté de l'orange. Le résultat me semble très bon, surtout quand on le compare au simple splitting de l'image avec alpha 0.25.

Niveau 5

Niveau 4

Niveau 3

Niveau 2

Niveau 1

Laplace 5

Laplace 4

Laplace 3

Laplace 2

Laplace 1


Bon j'ai peut-être passé vraiment beaucoup trop de temps à comprendre comment faire fonctionner les masques correctement sur une image couleur alors j'ai fait des tests avec les images que je savais qu'elles pourraient fonctionner. J'ai donc pris les images qui sont dans la documentation sur le merge des images, soit les poissons et chevaux grecs. Le résultat est identique à celui dans les notes, je peux maintenant tenter de reproduire le résultat sur mes autres images que je voulais faire puisque l'algorithme fonctionne correctement.


Test sans couleurs, assez bon.


Avec couleurs c'est un peu moins bon, j'obtients des résultats différents entre image save et image show.


Allright, algorithme fonctionnel. Je devais numpy.clip(image, -1, 1) pour ne pas saturer.


Mon chat Bradbury.


Mon chat Asimov.


Hello there.


Voici l'analyse de mon image préféré, soit Jésus-wan Kenobi. Dans les deux premières lignes d'images ont voit bien que le masque commence avec un alpha assez large pour permettre le recouvrement des détails de la pile laplacienne de se chevaucher entre les deux images. Mais plus la résolution augmente, plus alpha laisse seulement passer une petite partie de l'image pour le recouvrement dans les hautes fréquences.


On le voit bien ici, les deux images ont vraiment mélangé leurs détails selon le alpha du masque. Dans ces images on pourrait vraiment croire que c'est la même image quand les couleurs sont aussi mélangée. Quand on ajoute à l'image filtrée au maximum de la pile gaussienne les détails des deux images mélangées ensemble on obtient l'image voulue à la fin.


Partie 3: Bonus couleur


J'ai utilisé de la couleur dans la plupart des exemples plus hauts.