TP2: Découpage d'images

Introduction

Ce TP consiste à redimensionner des images en en conservant le contenu. Pour choisir les pixels qui sont retirés de l'image, on considère que le contenu intéressant d'une image contient changements importants d'un pixel à l'autre. On vise donc à conserver les pixels des régions de hautes fréquences. Pour déterminer les pixels qui seront retirés, on utilise une fonction d'énergie qui permet d'évaluer le contenu des pixels. Pour éviter de déformer le contenu de l'image, les pixels sont retirés en lignes ou en colonnes complètes, suivant un chemin de moindre énergie. L'algorithme utilisé est décrit dans l'article Seam Carving for Content-Aware Image Resizing publié par Shai Avidan et Ariel Shamir dans SIGGRAPH.

Fonction d'énergie

La fonction d'énergie utilisée est simple. Elle consiste en la somme des valeurs absolues des gradients horizontaux et verticaux de l'image. On peut voir le résultat du calcul de cette fonction d'énergie ci-dessous:

Tests avec les images imposées

Les résultats suivants ont été obtenus avec les 4 images imposées:

Original
-100 pixels horizontaux
-200 pixels verticaux
Original
-100 pixels horizontaux
-200 pixels verticaux
Original
-100 pixels horizontaux
-200 pixels verticaux
Original
-100 pixels horizontaux
-200 pixels verticaux

Analyse des résultats

Les artéfacts sont peu apparents pour les trois premières images. Dans la dernière image, on peut observer des artéfacts apparents et nombreux au niveau des voitures et des personnages, autant dans l'image où des lignes ont été enlevées que dans celle où des colonnes ont été retirées. Cela peut s'expliquer par le fait que cette image est beaucoup plus chargée que les trois autres. En effet, on peut observer sa fonction d'énergie calculée:

Il est difficile de voir un chemin de moindre énergie dans cette image qui éviterait toutes les zones de haute énergie tant en direction horizontale qu'en direction verticale. Pour obtenir une image sans artéfacts plus petite dans ce cas, il serait probablement nécessaire d'éliminer certains éléments par découpage.

Tests avec des images choisies

Les images suivantes sont tirées de mes photos personnelles. Pour la deuxième image, on peut constater que le tamia est déformé dans le redimensionnement vertical. Ceci est probablement dû à la difficulté de trouver un chemin de moindre énergie de haut en bas de l'image, ce qui fait que des pixels du tamia sont retirés. Ce problème pourrait être corrigé en réservant l'espace occupé par le tamia dans la matrice des énergies en leur assignant une grande valeur.

Original
-100 pixels horizontaux
-200 pixels verticaux
Original
-100 pixels horizontaux
-200 pixels verticaux
Original
-100 pixels horizontaux
-200 pixels verticaux
Original
-100 pixels horizontaux
-200 pixels verticaux
Original
-100 pixels horizontaux
-200 pixels verticaux
Original
-100 pixels horizontaux
-200 pixels verticaux
Original
-100 pixels horizontaux
-200 pixels verticaux
Effets spéciaux

Il est aussi possible d'utiliser les artéfacts créés dans certaines images pour obtenir volontairement des déformations. L'image suivante est à l'origine du meme Longcat.

Longcat is long
Longcat is shorter
Longcat is thin