IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement d'images Discussion :

Construction optimisée d'une image à partir de petites images


Sujet :

Traitement d'images

  1. #1
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut Construction optimisée d'une image à partir de petites images
    Bonjour,

    je recherche un algorithme discret qui me permettrait de construire une grande image à partir de plein de petites images qui ont chacune une taille donnée, en perdant le moins d'espace possible au final.

    Merci

  2. #2
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    cherche knapsack.

  3. #3
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Merci, je ne connaissais pas.
    Cependant je pense que mon problème est légèrement différent:

    La définition du problème knapsack accepte en entrée des listes d'objets pondérés et le poids total maximum et recherche combien d'objets de chaque type peuvent rentrer.

    Mon problème est plutôt de trouver la taille minimale capable de faire rentrer toutes mes vignettes et aussi de déterminer un layout pour les agencer les unes par rapport aux autres.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par NiamorH Voir le message
    Mon problème est plutôt de trouver la taille minimale capable de faire rentrer toutes mes vignettes et aussi de déterminer un layout pour les agencer les unes par rapport aux autres.
    Alors cherche "layout algorithm"
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  5. #5
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    J'avoue ne pas avoir trouvé grand chose avec "layout algorithm", pourtant ces mots clefs semblaient tout à fait à propos.

    En revanche une recherche avec "sprite packing" m'a permis de trouver cet article : http://www.codeproject.com/Articles/...gorithm-for-bu

    Après quelques tests, ça marche pas mal du tout et c'est très rapide.

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Canvas canvas = new Canvas();
    MapperOptimalEfficiency<Sprite> mapper = new MapperOptimalEfficiency<Sprite>(canvas);
     
    RandomSizeGenerator rd = new RandomSizeGenerator(10, 200, 100);
    List<ImageInfo> imgs = new List<ImageInfo>();
     
    for (int i = 0; i < 100; i++)
    {
    	imgs.Add(rd.Next());
    }
     
    Sprite s = mapper.Mapping(imgs);
     
    var rnd = new Random();
     
    using (Bitmap bmp = new Bitmap(s.Width, s.Height))
    using (Graphics gr = Graphics.FromImage(bmp))
    using (Pen pen = new Pen(Brushes.Black))
    {
    	foreach (var r in s.MappedImages)
    	{
    		gr.DrawRectangle(pen, r.X, r.Y, r.ImageInfo.Width, r.ImageInfo.Height);
    		gr.FillRectangle(new SolidBrush(Color.FromArgb(rnd.Next())), r.X, r.Y, r.ImageInfo.Width, r.ImageInfo.Height);
    	}
    	bmp.Save("D:\\toto.bmp");
    }

    Merci à vous deux pour m'avoir mis sur la piste.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] construction d'une image à partir de deux images différentes en taille
    Par inessfar dans le forum Images
    Réponses: 4
    Dernier message: 16/05/2013, 17h03
  2. Construction optimisée d'une image à partir de petites images
    Par NiamorH dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 01/11/2012, 14h22
  3. Créer une vidéo à partir de fichier image Matab
    Par efkone dans le forum MATLAB
    Réponses: 4
    Dernier message: 10/06/2010, 15h50
  4. [ImageMagick] Générer une image à partir de plusieurs images ?
    Par fichtre! dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 16/02/2005, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo