Dans ce deuxième travail personnel, nous explorons comment on peut manipuler les différentes fréquences d'une image pour en composer de nouvelles.
On combine et filtre beaucoup!
J'utilise la fonction [imgOut] = sharpening(imgRAW,alpha) dans le fichier main0.m pour produire les résultats.
Pour effectuer le calcul, on soustrait un montant des basses fréquences de l'image pour augmenter l'apparence des hautes.
J'utilise des images de ma collection personnelle.
Images demandées
Ici notre coeficiant alpha est de 80% |
Ici notre coeficiant alpha est de 80% aussi |
J'utilise la fonction [imgHybrid] = hybridImage(imgLow, imgHigh, sigma, hs) pour produire les résultats.
Pour effectuer le calcul, la fonction convertit les deux images en domaine fréquentiel. Puis on les filtre un avec un filtre laplacien et, l'autre, avec un filtre gaussien.
Le filtre laplacien est fabriqué dans le domaine spatial en soustrayant le filtre gaussien à 1 (1-filtre gaussien).
J'utilise des images de google image majoritairement et des extraits de vidéo YouTube.
J'ai tenté d'effectuer un montage intéressant en prenant des scènes qui changeaient peu. À vous d'en conclure les résultats.
Images demandées
Image Hybride Le sigma est de 9 |
Image filtrée passe bas(spectre), image filtrée passe haut(spectre) image construite(spectre), image construite |
source : tp2 |
images originales 1 et 2 | Image Hybride Le sigma est de 3 |
Image filtrée passe bas(spectre), image filtrée passe haut(spectre) image construite(spectre), image construite |
source : google image |
images originales 1 et 2 | Image Hybride Le sigma est de 4 |
Image filtrée passe bas(spectre), image filtrée passe haut(spectre) image construite(spectre), image construite |
source : google image |
images originales 1 et 2 | Image Hybride Le sigma est de 4 |
Image filtrée passe bas(spectre), image filtrée passe haut(spectre) image construite(spectre), image construite |
source : google image |
images originales 1 et 2 | Image Hybride Le sigma est de 4 |
Image filtrée passe bas(spectre), image filtrée passe haut(spectre) image construite(spectre), image construite |
source : google image |
Images supplémentaire
images originales 1 et 2 | Image Hybride Le sigma est de 4 |
Image filtrée passe bas(spectre), image filtrée passe haut(spectre) image construite(spectre), image construite |
source : google image |
images originales 1 et 2 | Image Hybride Le sigma est de 10 |
Image filtrée passe bas(spectre), image filtrée passe haut(spectre) image construite(spectre), image construite |
source : youtube |
images originales 1 et 2 | Image Hybride Le sigma est de 10 |
Image filtrée passe bas(spectre), image filtrée passe haut(spectre) image construite(spectre), image construite |
source : youtube |
images originales 1 et 2 | Image Hybride Le sigma est de 7,5 |
Image filtrée passe bas(spectre), image filtrée passe haut(spectre) image construite(spectre), image construite |
source : youtube |
images originales 1 et 2 | Image Hybride Le sigma est de 5 |
Image filtrée passe bas(spectre), image filtrée passe haut(spectre) image construite(spectre), image construite |
source : youtube |
images originales 1 et 2 | Image Hybride Le sigma est de 2 |
Image filtrée passe bas(spectre), image filtrée passe haut(spectre) image construite(spectre), image construite |
source : youtube |
Il est intéressant de noter que beaucoup d'images possèdent beaucoup d'information sur des diagonales. Cela est dû au fait que plusieurs images ont été alignées avec leurs correspondantes. Je trouvais sympathique de garder les bordures.
J'utilise la fonction [p] = pile(img, nb, type) dans le fichier main2.m pour produire les piles suivantes. On peut mentionner si on désire une pile laplacienne ou gaussienne. On peut aussi ajuster le nombre d'images dans la pile. Le sigma pour chaque itération est multiplié par deux et la dimension de la fenêtre est toujours le triple de sigma.
Il est intéressant de constater que les piles laplaciennes contiennent les informations à haute fréquence dans l'image et les gaussiennes, les basses.
On voit Gala le mieux quand sigma est de 16 pour le laplacien. Lincoln est très clair à 16 aussi, selon mes observations.
Lincoln et Gala
sigma = 1 | sigma = 2 | sigma = 4 | sigma = 8 | sigma = 16 | sigma = 32 |
Kojimads
sigma = 1 | sigma = 2 | sigma = 4 | sigma = 8 | sigma = 16 | sigma = 32 |
J'ai choisi l'image de "Kojimads" et c'est en combinant les sigma à 4 que j'ai construit mon image.
J'utilise encore ma fonction [p] = pile(img, nb, type),mais dans le fichier main3.m. Tout le nouveau code est dans le main3.m.
Ici, le masque est construit manuellement séparant l'image en deux. Par la suite, on multiplie les images de chaque pile par son gain. Le gain, c'est en fait la valeur du masque filtré à un sigma donné. On multiplie le masque pour une image et l'opposé du masque pour l'autre. Ensuite on peut les additionner ensemble. On ajoute aussi la valeur en basse fréquence pour la couleur et les surfaces uniformes.
J'ai rencontré plusieurs problèmes en codant et encore, j'ai des problèmes que je n'ai pas réglés encore.
Le plus important, c'est qu'après un filtrage à très grande fenêtre (et grand alpha), mon masque et mes images se décalent vers la droite et le bas. J'aimerais implanter une translation qui replace le masque au bon endroit.
Aussi, j'ai de la difficulté à "faire fondre" les frontières. Il s'agirait de donner moins d'importance à la composante de basse fréquence à très faible alpha. J'aimerais utiliser le masque pour pouvoir gérer la situation.
Pommange
mélange multirésolution Le sigma initiale de 1 |
Image avec Masque, mélange multirésolution | source : tp2 |
J'utilise une fonction modifiée de pile : [p] = pileS(img, nb, type),mais dans le fichier main3roi.m, pour pouvoir lui donner des sigmas de départ plus rapidement. Tout le nouveau code est dans le main3roi.m. Ici, je généralise la construction du masque avec région d'intérêt (RoI). Ça fonctionne bien.
Kojimads 2
mélange multirésolution Le sigma initiale de 1 |
Image avec Masque, mélange multirésolution | source : google image (Kojima et Mads) |
Los Angeles dans le sable
mélange multirésolution Le sigma initiale de 1 |
Image avec Masque, mélange multirésolution | source : personnelle |
Pêche
mélange multirésolution Le sigma initiale de 1 |
Image avec Masque, mélange multirésolution | source : personnelle |
J'utilise encore ma fonction [p] = pileS(img, nb, type),mais dans le fichier main31.m. Tout le nouveau code est dans le main31.m et je tente de reproduire l'effet que les gars du MIT on fait.
Je construis mes piles comme à l'habitude. Par contre, je me crée des images d'énergie (gain) pour trouver les différences à ajouter d'une image à l'autre. Je fais la racine sur le ratio des deux gains et je multiplie le résultat à mon image local sur ma pile laplacienne.
On peut voir que l'algorithme tente de transférer le style d'une image à l'autre, mais il y a beaucoup d'artefacts. C'est plus un générateur d'image artistique.
Un de mes gros problème, c'est que je n'ai pas de wrapper sur mes images, alors elles peuvent être trop différentes. Aussi, il faut du 'tunage' de sigma pour produire de belles piles. Peut-être aussi que mes images sont à trop faible résolution.
Kojimads 3
mélange multirésolution Le sigma initiale de 7, avec 5 piles |
Image du dernier Match, mélange de style | images bonus | source : google image (Kojima et Mads) |
L'éclairage provenant d'en arrière à 45 degrée est partiellement transferer. Aussi, on remarque que derrière ça tête à gauche, Kojima a le halo de lunmière de Mads. Il y a plus de reflet dans ses lunettes aussi.
Kojimads pop art
Sea Fishing
mélange multirésolution Le sigma initiale de 7, avec 5 piles |
Image du dernier Match, mélange de style | images originales. source : personnelle |
La plupart des sections m'ont donné de bons résultats, mais mes algorithmes ont encore les défauts décrient dans la section 3.
J'ai joué en fréquences.