Exemple #1
0
        /// <summary>
        /// Bouton qui permet de générer l'histogramme de couleur d'une image
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_Histogramme(object sender, RoutedEventArgs e)
        {
            string nomfichier = this.CheminOrigine;

            try
            {
                Projet_Vincent_Poupet.MyImage imagepourhisto = new Projet_Vincent_Poupet.MyImage(nomfichier);
                CreeImageBlanche("Histogramme.bmp", imagepourhisto.Largeur, imagepourhisto.Hauteur);
                Projet_Vincent_Poupet.MyImage Histogramme = new Projet_Vincent_Poupet.MyImage("Histogramme.bmp");
                Histogramme.Histogramme(imagepourhisto);
                Histogramme.EnregistrerImage(this.CheminEnregistrement);
            }
            catch (Exception)
            {
            }
        }
Exemple #2
0
        public void Histogramme()
        {
            Projet_Vincent_Poupet.MyImage imagepourhisto = new Projet_Vincent_Poupet.MyImage("coco.bmp");
            CreeImageBlanche("histogramme.bmp", imagepourhisto.Largeur, imagepourhisto.Hauteur);
            CreeImageBlanche("histogramme2.bmp", imagepourhisto.Largeur, imagepourhisto.Hauteur);
            Projet_Vincent_Poupet.MyImage imageresultat = new Projet_Vincent_Poupet.MyImage("histogramme.bmp");
            Projet_Vincent_Poupet.MyImage imagetest     = new Projet_Vincent_Poupet.MyImage("histogramme2.bmp");

            for (int i = 0; i < imagepourhisto.Largeur; i++)
            {
                int sommevert  = 0;
                int sommerouge = 0;
                int sommebleu  = 0;

                for (int j = 0; j < imagepourhisto.Hauteur; j++)
                {
                    sommebleu  = sommebleu + imagepourhisto.MatriceDePixels[j, i].bleu;
                    sommevert  = sommevert + imagepourhisto.MatriceDePixels[j, i].vert;
                    sommerouge = sommerouge + imagepourhisto.MatriceDePixels[j, i].rouge;
                }

                int nbbleu  = (sommebleu / 255) / 3;
                int nbvert  = (sommevert / 255) / 3;
                int nbrouge = (sommerouge / 255) / 3;

                for (int k = 0; k < imagepourhisto.Hauteur; k++)
                {
                    if (nbbleu > 0)
                    {
                        imageresultat.MatriceDePixels[k, i] = new Projet_Vincent_Poupet.Pixel(0, 0, 255);
                        nbbleu--;
                    }
                    else
                    {
                        if (nbrouge > 0)
                        {
                            imageresultat.MatriceDePixels[k, i] = new Projet_Vincent_Poupet.Pixel(255, 0, 0);
                            nbrouge--;
                        }
                        else
                        {
                            if (nbvert > 0)
                            {
                                imageresultat.MatriceDePixels[k, i] = new Projet_Vincent_Poupet.Pixel(0, 255, 0);
                                nbvert--;
                            }
                        }
                    }
                }
            }

            imagetest.Histogramme(imagepourhisto);

            for (int i = 0; i < imageresultat.Hauteur; i++)
            {
                for (int j = 0; j < imageresultat.Largeur; j++)
                {
                    Assert.AreEqual(imagetest.MatriceDePixels[i, j].rouge, imageresultat.MatriceDePixels[i, j].rouge);
                    Assert.AreEqual(imagetest.MatriceDePixels[i, j].bleu, imageresultat.MatriceDePixels[i, j].bleu);
                    Assert.AreEqual(imagetest.MatriceDePixels[i, j].vert, imageresultat.MatriceDePixels[i, j].vert);
                }
            }
        }