Seam carving

Description

Je continue mes effets de redimensionnement avec un autre algorithme très sympathique.
Le recadrage intelligent (Seam carving) permet de supprimer ou d'ajouter des pixels de façon intelligente.
Dans mon code, je ne fait qu'en supprimer.
en temps normal, si on veux diminuer les dimensions d'une image, il faut soit :
- recarder l'image (on perde les bords)
- rétrécir l'image (on obtient des déformations, aplatissement, tassement...)

Dans cet algo, on recherche dans l'image un chemin de 1 pixel (horizontal ou vertical) qui contient des informations peu importante et on le supprime.
On recommence ce principe pour supprimer un nombre N de pixel en largeur ou en hauteur.

Le résultat : l'image "s’aplatit" dans des zones de moindre importance et garde les zones "visuellement" importante.

Voir : http://fr.wikipedia.org/wiki/Seam_carving

On calcul en premier lieu l’énergie de chaque pixel (son importance), grâce à l'algorithme de recherche de contour de Sobel.
Ensuite, on cherche un chemin avec un coût en énergie minimum.
Puis on supprime ce chemin.
et on recommence.

Pour aller plus loin, on pourrait ajouter la possibilité de définir des zones à supprimer en priorité, ou encore des zones à ne jamais toucher.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.