TP2: Découpage d'images

Généralement lorsque l'on veut changer la dimension d'une image on coupe cette dernière ou bien on l'écrase, mais cela ne donne pas de bons résultats. Dans le premier cas, de l'information possiblement importante est perdue et dans le deuxième, l'image est déformée. Le but de notre algorithme est de retirer de l'information, mais de l'information peu importante.

Approche

On trouve donc l'énergie de l'image à chaque pixel et ensuite en enlève le chemin contenant le moins d'énergie d'un bout à l'autre de l'image (horizontal ou vertical). La fonction nous permettant de trouver l'énergie d'un pixel est simplement les valeurs absolues des gradients en x et y additionnées. Pour trouver le chemin contenant le moins d'énergie, on calcule le coût d'énergie de chaque chemin traversant d'un bout à l'autre l'image sans revenir sur ses pas. Donc, en utilisant toujours les trois pixels voisins de la prochaine ligne ou colonne pour avancer. De cette façon, l'algorithme permettant de calculer le chemin peut être dynamique et donc beaucoup plus rapide.

Les figures suivantes présentent cette approche en trois images. La première est l'énergie de l'image (pâle = forte énergie, foncé = peu d'énergie). La deuxième présente le chemin trouvé en rouge ou noir (la ligne ne semble pas continue à cause de la compression, mais elle l'est en réalité). Finalement, la troisième présente l'image avec le chemin rouge retiré. On voit très bien que l'algorithme a choisi un chemin où il y a très peu de changement (hautes fréquences), donc peu d'effet sur le contenu global si on le retire.


Exemple 1




Exemple 2





Résultats

On peut voir qu'en général les résultats sont bons. Lorsqu'ils sont mauvais, c'est souvent dû au fait que l'image contient beaucoup d'informations importantes et l'algorithme ne peut pas tout conserver. Surtout dans les cas où la forme des objets est importante et que leur contenu a peu d'énergie. On peut aussi remarquer qu'en général enlever les lignes ou les colonnes en premier ne fait pas beaucoup de différence (les deux images à droite complètement).

Images fournies

Original 25% moins de colonnes 25% moins de lignes 25% moins de colonnes et lignes
(appliqué dans cet ordre)
25% moins de lignes et colonnes
(appliqué dans cet ordre)




Original 25% moins de colonnes 25% moins de lignes 25% moins de colonnes et lignes
(appliqué dans cet ordre)
25% moins de lignes et colonnes
(appliqué dans cet ordre)

Ici on remarque que les autos sont déformés puisque le contenu de la carrosserie est assez uniforme comparé au reste de l'image. L'algorithme croit que ce contenu est inutile et qu'il n'apporte pas d'informations. Cependant, la forme de l'auto change et c'est cela qui nous donnait l'information...



Original 25% moins de colonnes 25% moins de lignes 25% moins de colonnes et lignes
(appliqué dans cet ordre)
25% moins de lignes et colonnes
(appliqué dans cet ordre)

Cette image a tout simplement été conçue pour qu'on lui enlève des colonnes, il y a beaucoup d'informations inutiles entre le château et la personne. Le résultat est donc très bon!



Original 25% moins de colonnes 25% moins de lignes 25% moins de colonnes et lignes
(appliqué dans cet ordre)
25% moins de lignes et colonnes
(appliqué dans cet ordre)

Cette dernière fonctionne aussi assez bien étant donné que le contenu important est moindre et est situé au centre de l'image. On peut se permettre d'enlever beaucoup d'asphalte autour et ça ne change pas beaucoup le contenu.



Images d'Internet

Source : media.treehugger.com
Original 25% moins de colonnes 25% moins de lignes 25% moins de colonnes et lignes
(appliqué dans cet ordre)
25% moins de lignes et colonnes
(appliqué dans cet ordre)

Encore une fois ici c'est assez facile d'enlever du contenu sur le contour de l'image.





Source : arabnews.com
Original 25% moins de colonnes 25% moins de lignes 25% moins de colonnes et lignes
(appliqué dans cet ordre)
25% moins de lignes et colonnes
(appliqué dans cet ordre)

Ici on peut voir que les trous ne sont pas conservés correctement mais le reste est assez bien préservé puisqu'il contient beaucoup de hautes fréquences.



Source : trailfinders.com
Original 25% moins de colonnes 25% moins de lignes 25% moins de colonnes et lignes
(appliqué dans cet ordre)
25% moins de lignes et colonnes
(appliqué dans cet ordre)

Sur cette photo je trouve que le résultat est assez remarquable. Dans tout les cas, on ne peut pas vraiment savoir que l'image a été modifiée.





Source : i.telegraph.co.uk
Original 25% moins de colonnes 25% moins de lignes 25% moins de colonnes et lignes
(appliqué dans cet ordre)
25% moins de lignes et colonnes
(appliqué dans cet ordre)

Ici, un peu comme avec les autos plus haut, c'est la forme des maisons qui était importante. Pourtant, malgré cela, le résultat n'est pas si mal. Bien sûr, la maison en avant plan est déformée (surtout le toit et le mur droit), mais pour le reste le résultat est assez surprenant. Les maisons sont plus petites, mais leur forme est tout de même préservée dans la majorité des cas.



Images personnelles

Original 25% moins de colonnes 25% moins de lignes 25% moins de colonnes et lignes
(appliqué dans cet ordre)
25% moins de lignes et colonnes
(appliqué dans cet ordre)

Si on ignore la chandelle de droite, le résultat est assez bon! La chandelle de droite est déformée à cause de son contenu trop uniforme, surtout par rapport au noeud dans le bois à sa gauche qui est considéré comme très important dans notre algorithme puisque le gradient change beaucoup dans ce coin.



Original 25% moins de colonnes 25% moins de lignes 25% moins de colonnes et lignes
(appliqué dans cet ordre)
25% moins de lignes et colonnes
(appliqué dans cet ordre)

Comme dans les résultats précédents, la forme des casseroles n'est pas préservée puisque son contenu est trop uniforme par rapport au reste de l'image (surtout au niveau des lignes comme on peut le voir).





Original 25% moins de colonnes 25% moins de lignes 25% moins de colonnes et lignes
(appliqué dans cet ordre)
25% moins de lignes et colonnes
(appliqué dans cet ordre)

Ce résultat est mon préféré. Non seulement il est pratiquement impossible de savoir que l'image a été modifiée, mais en plus, il est très difficile de trouver où l'image a été modifiée, même avec l'original à côté. Cette étrange texture de glace permet à notre algorithme d'enlever du contenu assez uniformément ce qui donne l'impression que l'image n'a pas trop été modifiée.



Source : mon ami débile Félix Blais qui m'a autorisé à mettre ceci dans mon TP
Original 25% moins de colonnes 25% moins de lignes 25% moins de colonnes et lignes
(appliqué dans cet ordre)
25% moins de lignes et colonnes
(appliqué dans cet ordre)
Original 50% moins de colonnes 50% moins de lignes 50% moins de colonnes et lignes
(appliqué dans cet ordre)
50% moins de lignes et colonnes
(appliqué dans cet ordre)

Difficile de ne pas rire en voyant ce résultat (il faut dire que l'image de départ est assez extraordinaire aussi ☺). On voit très bien que sur un portrait si on essaie d'enlever trop de lignes ou de colonnes, le résultat devient assez rapidement laid (on dirait du cubisme comme mentionné dans l'énoncé). La forme d'un humain est ce qui nous permet de le reconnaître, si on modifie les proportions, le portrait devient étrange et désagréable à regarder (ou cocasse c'est selon). Étant donné que notre algorithme n'a aucune connaissance des proportions et qu'il se fie uniquement à l'énergie de l'image (les gradients), ça devient rapidement n'importe quoi.

Il faut aussi savoir que peu importe l'image, plus on essaie d'enlever du contenu, plus le résultat risque d'être mauvais.

© Frédéric Boutin