Au fil des flows

29déc/118

Generer l’histogramme des couleurs d’une image

Même si à plusieurs reprises j'ai utilisé GDI+, je n'ai jamais eu l'occasion de m'intéresser a l'analyse d'une image. J'avais envi de découvrir ce qui se cachait derrière des outils comme Gimp, voir des outils plus complexes d'analyse.

Par curiosité, j'ai écrit une application en C# pour calculer et afficher l'histogramme de chaque canal.

Voici une capture d'écran du résultat :

Pour la construction, c'est un simple polygone. Force est de constater que la methode GetPixel de la classe Bitmap est très lente. L'alternative consiste à utiliser du code Unsafe pour manipuler celui-ci.  Voici un lien expliquant la démarche.

En prenant un peu de temps, j'aurai pu isoler la construction de l'histogramme dans une classe plutôt que lui dédier une simple méthode. En tout cas, le domaine de l'analyse parait très riche mais aussi très complexe.

Le calcul de l'histogramme s'appuie sur le moment d'espace du premier ordre. C'est une simple moyenne du nombre de pixels de chaque couleur. A priori, il existe un plusieurs ordres. J'essaierai de l'implémenter à l'occasion.

Voici le lien pour télécharger le projet : PictureHistogram

Posted by Fabien Arcellier

Remplis sous: Non classé Laisser un commentaire
Commentaires (8) Trackbacks (0)
  1. Bonjour,
    Je suis débutante en C#, je serais très reconnaissante si vous pouvez m’aider..
    Pour mon application , je veux obtenir la matrice de chaque couleur de RGB au lieu d’avoir l’histogramme..
    Est ce qu’il existe un code pour convertir l’histogramme en une matrice ou juste calculer la matrice dés le début…
    Merci de me répondre

    • Dans le code que j’ai publié, dans la classe Form1.cs, il y’a la méthode GetPixelMap.
      Elle renvoie une matrice non formatée (un tableau 1D au lieu de 2D) qui correspond à ce que tu demandes.

      En réécrivant légèrement celle ci, tu peux obtenir une matrice 2D pour chaque canal.
      Bon courage ^^

      PS : Je publierai un billet pour faire à ce sujet avec une classe toute faite demain ou après demain sur ce blog. Je pense que ça peut etre intéressant.

      • J’attend toujours la classe toute faite je m’excuse d’avoir trop insister mais je suis vraiment coincée là et j’en ai vraiment besoin..
        Je m’excuse si je vous ai dérangé
        Et merci pour tout ^^

  2. Merciii bien pour tes efforts ^^
    oui je pense que c’est bien intéressant et j’en ai bien besoin :)

  3. J’attend toujours la classe toute faite :) je m’excuse d’avoir trop insister mais je suis vraiment coincée là et j’en ai vraiment besoin..
    Je m’excuse si je vous ai dérangé
    Et merci pour tout ^^

  4. bonjour j’ai essayé de téléchargé votre appelication et de l’ouvrir avec visual 2013 mais sa ne s’ouvre pas est ce que qlq1 peut me publier le code ou de m’expliqué comment on fait pour calculer de diagramme de couleur pour une image merci


Leave a comment

Aucun trackbacks pour l'instant