Redimensionnement d’images
GIF-4105/7105 Photographie AlgorithmiqueJean-François Lalonde
Retour sur le TP1
• Moyenne: 80%
• Écart-type: 16%
• Allez voir les autres projets et votez!
• votre projet préféré
• votre résultat préféré
• Envoyez vos votes à [email protected]
Retour sur le TP1
• Testez avec des images supplémentaires!
• Commentez les résultats (surtout les négatifs)
• Crédits supplémentaires: montrez avant et après
• Mettez des liens vers les images haute résolution
• <a href=“img_highres.jpg”><img src=“img_lowres.jpg”></a>
• Commencez tôt et venez nous voir!
Aujourd’hui
• Redimensionnement d’images: TP2!
• Aussi utile pour:
• agrandir les images
• enlever les objets, boucher les trous
Stratégies de redimensionnement
Image originale — 500 px de large, 375 px de haut
Écrasée — 300 px de large
Avidan, S. and Shamir, A. 2007. Seam Carving for Content-Aware Image Resizing. ACM Transactions on Graphics (SIGGRAPH 2007) 26,
3.
Stratégies de redimensionnement
Image originale — 500 px de large
Coupée — 300 px
But
• Conserver les parties importantes de l’image
• Qu’est-ce qui est “important”?
Fonction d’énergie• Définir une fonction d’énergie qui indique, pour
chaque pixel:
• Haute énergie = conserver le pixel
• Basse énergie = on peut l’enleverImage
originale
Stratégies de redimensionnement• Enlevons les pixels qui ont le moins d’énergie!
Énergie
Image moins ses (200x375) pixels ayant le moins
d’énergie
Stratégies de redimensionnement• Enlevons les pixels qui ont le moins d’énergie
— dans chaque ligneÉnerg
ie
Image moins ses (200x375) pixels ayant le moins
d’énergie
• Calculer l’énergie totale pour chaque colonne
• Retirer les colonnes ayant le moins d’énergie
Stratégies de redimensionnement
Énerg
ie p
ar
pix
el
Énerg
ie p
ar
colo
nne
Image moins ses 200 colonnes ayant le moins
d’énergie
Re-dimensionnement “intelligent”• Trouver un chemin à travers l’image dont la
somme totale d’énergie est minimale
Coupure minimisant les discontinuités
erreur minimale
blocs se chevauchant
discontinuité verticale
__ ==22
erreur dechevauchem
ent
Trouver le chemin au coût minimum
1
2
4
3
1
2
4
2
1
3
1
2
Coût de passer par ce pixel
Trouver le chemin au coût minimum
1
2
4
3
1
2
4
2
1
3
1
2
l1
l2
l3
source: l1
coût: 4
source: l2coût: 4
source: l1coût: 2
sour
ce:
l2
coût
: 6
source: l2
coût: 4
source: l2coût:3
4
2
4
6
4
3
sour
ce:
l2
coût
: 7
sour
ce:
l3
coût
:4
source: l3
coût:5
7
4
5
Trouver le chemin au coût minimum
1
2
4
3
1
2
4
2
1
3
1
2
l1
l2
l3
Trouver le chemin au coût minimum
1
2
4
3
1
2
4
2
1
3
1
2
Trouver le chemin au coût minimum
2
4
3
2
4
2
3
2
Algorithme
• Calculer une fonction d’énergie sur l’image
• Tant que l’image n’ait pas atteint la taille (réduite) voulue:
• Trouver le chemin (8-voisins) ayant le coût minimum
• Retirer les pixels faisant partie du chemin
Démo!
http://swieskowski.net/carve/
RésultatsImage
originaleÉcrasé
e
RésultatsImage
originaleCoupé
e
RésultatsImage
originaleDe-
dimensionnée
Agrandir l’image
Image originale
Image 50% plus large
Agrandir l’imageImage
originaleImage
agrandie
Trouver le chemin au coût minimum
1
2
4
3
1
2
4
2
1
3
1
2
l1
l2
l3
Trouver le chemin au coût minimum
1
2
4
3
1
2
4
2
1
3
1
2
Trouver le chemin au coût minimum
1
2
4
3
1
2
4
2
1
3
1
2
1
1
1
1
Trouver le chemin au coût minimum
1
2
4
3
1
2
4
2
1
3
1
2
1.5
1.5
1
1.5
Trouver le chemin au coût minimum
1
2
4
3
2
2
4
2
1.5
3
2
2
1.5
1.5
1
1.5
Agrandir l’image
Image originale
Image 100% plus large
Conserver (et enlever) des objets
Image originale
Rouge = conserver, vert = enlever
Nouvelle image
Enlever des objets
Image originale
Pigeon disparu
Fillette disparue
Trouvez le soulier manquant?
Image originale
Image moins un soulier (lequel?)
Trouvez le soulier manquant?
Image originale
Image moins un soulier (lequel?)
Trouvez le soulier manquant?
Image originale
Image moins un soulier (lequel?)
Incorporer d’autres contraintes Image
originale
Image re-dimensionnée
Incorporer d’autres contraintes Image
originale
Image re-dimensionnée
Rappel: TP2
• Date de remise: 16 février @ 23h55 sur Pixel
• Taille maximale pour le fichier: 100MB
• Sauvegardez vos images en jpg
• imwrite(img, ‘fichier.jpg’, ‘Quality’, 85);
La semaine prochaine• Découpage d’images