Пример #1
0
        public void MyImageNoirEtBlanc()
        {
            Projet_Vincent_Poupet.MyImage imagetest     = new Projet_Vincent_Poupet.MyImage("coco.bmp");
            Projet_Vincent_Poupet.MyImage imageresultat = new Projet_Vincent_Poupet.MyImage("coco.bmp");

            imagetest.PassageNoiretBlanc();

            for (int i = 0; i < imageresultat.Hauteur; i++)
            {
                for (int j = 0; j < imageresultat.Largeur; j++)
                {
                    imageresultat.MatriceDePixels[i, j].PassageNoirEtBlanc();
                }
            }

            for (int i = 0; i < imagetest.Hauteur; i++)
            {
                for (int j = 0; j < imagetest.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);
                }
            }
        }
Пример #2
0
        public void AgrandirImageHauteur()
        {
            Projet_Vincent_Poupet.MyImage imagetest = new Projet_Vincent_Poupet.MyImage("test.bmp");
            Projet_Vincent_Poupet.Pixel[,] matriceimageresultat = new Projet_Vincent_Poupet.Pixel[2 * imagetest.Hauteur, imagetest.Largeur];

            for (int i = 0; i < imagetest.Hauteur; i++)
            {
                for (int j = 0; j < imagetest.Largeur; j++)
                {
                    int k = 0;
                    while (k < 2)
                    {
                        matriceimageresultat[i * 2 + k, j] = imagetest.MatriceDePixels[i, j];
                        k++;
                    }
                }
            }

            imagetest.AgrandirImageHauteur(2);

            for (int i = 0; i < imagetest.Hauteur; i++)
            {
                for (int j = 0; j < imagetest.Largeur; j++)
                {
                    Assert.AreEqual(imagetest.MatriceDePixels[i, j].rouge, matriceimageresultat[i, j].rouge);
                    Assert.AreEqual(imagetest.MatriceDePixels[i, j].bleu, matriceimageresultat[i, j].bleu);
                    Assert.AreEqual(imagetest.MatriceDePixels[i, j].vert, matriceimageresultat[i, j].vert);
                }
            }
        }
Пример #3
0
        public void Rotation()
        {
            Projet_Vincent_Poupet.MyImage imagetest = new Projet_Vincent_Poupet.MyImage("coco.bmp");
            Projet_Vincent_Poupet.Pixel[,] matricetournée = new Projet_Vincent_Poupet.Pixel[imagetest.Largeur, imagetest.Hauteur];


            for (int j = 0; j < imagetest.Largeur; j++)
            {
                for (int i = 0; i < imagetest.Hauteur; i++)
                {
                    matricetournée[j, imagetest.Hauteur - i - 1] = imagetest.MatriceDePixels[i, j];
                }
            }

            imagetest.RotationSensTrigo();

            for (int i = 0; i < imagetest.Hauteur; i++)
            {
                for (int j = 0; j < imagetest.Largeur; j++)
                {
                    Assert.AreEqual(imagetest.MatriceDePixels[i, j].rouge, matricetournée[i, j].rouge);
                    Assert.AreEqual(imagetest.MatriceDePixels[i, j].bleu, matricetournée[i, j].bleu);
                    Assert.AreEqual(imagetest.MatriceDePixels[i, j].vert, matricetournée[i, j].vert);
                }
            }
        }
Пример #4
0
        /// <summary>
        /// Bouton qui permet de générer une fractale
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_Fractale(object sender, RoutedEventArgs e)
        {
            CreeImageBlanche("Fractale.bmp", 240, 270);
            Projet_Vincent_Poupet.MyImage Fractale = new Projet_Vincent_Poupet.MyImage("Fractale.bmp");
            Fractale.AgrandirImageLargeur(10);
            Fractale.AgrandirImageHauteur(10);

            Fractale.Fractale(40);
            Fractale.EnregistrerImage(this.CheminEnregistrement);
        }
Пример #5
0
        public void FiltreFlouPlus()
        {
            Projet_Vincent_Poupet.MyImage imagetest     = new Projet_Vincent_Poupet.MyImage("coco.bmp");
            Projet_Vincent_Poupet.MyImage imageresultat = new Projet_Vincent_Poupet.MyImage("coco.bmp");

            int[,] matrice = new int[, ] {
                { 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1 }
            };

            int m = 0;
            int n = 0;

            for (int i = 2; i < imageresultat.Hauteur - 2; i++)
            {
                for (int j = 2; j < imageresultat.Largeur - 2; j++)
                {
                    int totalrouge = 0;
                    int totalbleu  = 0;
                    int totalvert  = 0;

                    for (int k = i - 2; k <= i + 2; k++)
                    {
                        for (int l = j - 2; l <= j + 2; l++)
                        {
                            totalrouge = totalrouge + imageresultat.MatriceDePixels[k, l].rouge * matrice[m, n];
                            totalbleu  = totalbleu + imageresultat.MatriceDePixels[k, l].bleu * matrice[m, n];
                            totalvert  = totalvert + imageresultat.MatriceDePixels[k, l].vert * matrice[m, n];
                            n++;
                        }
                        m++;
                        n = 0;
                    }
                    m = 0;


                    imageresultat.MatriceDePixels[i, j].rouge = totalrouge / 25;
                    imageresultat.MatriceDePixels[i, j].bleu  = totalbleu / 25;
                    imageresultat.MatriceDePixels[i, j].vert  = totalvert / 25;
                }
            }

            imagetest.FiltreFlouPlus();

            for (int i = 0; i < imagetest.Hauteur; i++)
            {
                for (int j = 0; j < imagetest.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);
                }
            }
        }
Пример #6
0
        /// <summary>
        /// Bouton qui permet d'appliquer une détection de contours
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_DectectionContours(object sender, RoutedEventArgs e)
        {
            string nomfichier = this.CheminOrigine;

            try
            {
                Projet_Vincent_Poupet.MyImage imagedectioncontour = new Projet_Vincent_Poupet.MyImage(nomfichier);
                imagedectioncontour.FiltreDetectionContours();
                imagedectioncontour.EnregistrerImage(this.CheminEnregistrement);
            }
            catch (Exception)
            {
            }
        }
Пример #7
0
        /// <summary>
        /// Bouton qui permet d'appliquer un effet miroir en fonction d'un axe horizontal
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_EffetMiroirHorizontal(object sender, RoutedEventArgs e)
        {
            string nomfichier = this.CheminOrigine;

            try
            {
                Projet_Vincent_Poupet.MyImage imagemiroirhorizontal = new Projet_Vincent_Poupet.MyImage(nomfichier);
                imagemiroirhorizontal.EffetMiroirParRapportAHorizontale();
                imagemiroirhorizontal.EnregistrerImage(this.CheminEnregistrement);
            }
            catch (Exception)
            {
            }
        }
Пример #8
0
        /// <summary>
        /// Bouton qui permet d'effectuer une rotation dans le sens trigo de 90°
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_Rotation(object sender, RoutedEventArgs e)
        {
            string nomfichier = this.CheminOrigine;

            try
            {
                Projet_Vincent_Poupet.MyImage imagerotation = new Projet_Vincent_Poupet.MyImage(nomfichier);
                imagerotation.RotationSensTrigo();
                imagerotation.EnregistrerImage(this.CheminEnregistrement);
            }
            catch (Exception)
            {
            }
        }
Пример #9
0
        /// <summary>
        /// Bouton qui permet d'appliquer un effet de repoussage
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_Repoussage(object sender, RoutedEventArgs e)
        {
            string nomfichier = this.CheminOrigine;

            try
            {
                Projet_Vincent_Poupet.MyImage imagerepoussage = new Projet_Vincent_Poupet.MyImage(nomfichier);
                imagerepoussage.FiltreRepoussage();
                imagerepoussage.EnregistrerImage(this.CheminEnregistrement);
            }
            catch (Exception)
            {
            }
        }
Пример #10
0
        /// <summary>
        /// Bouton qui permet d'appliquer en effet de renforcement des bords
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_RenforcementDesBords(object sender, RoutedEventArgs e)
        {
            string nomfichier = this.CheminOrigine;

            try
            {
                Projet_Vincent_Poupet.MyImage imagerenforcementdesbords = new Projet_Vincent_Poupet.MyImage(nomfichier);
                imagerenforcementdesbords.FiltreRenforcementDesBords();
                imagerenforcementdesbords.EnregistrerImage(this.CheminEnregistrement);
            }
            catch (Exception)
            {
            }
        }
Пример #11
0
        /// <summary>
        /// Bouton qui permet de décoder une image et voir si une image est cachée dans une autre
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_DécoderImageDansUneAutre(object sender, RoutedEventArgs e)
        {
            string nomfichierprincipale = this.CheminOrigine;

            try
            {
                Projet_Vincent_Poupet.MyImage imageprincipale = new Projet_Vincent_Poupet.MyImage(nomfichierprincipale);
                imageprincipale.DécoderImageDansUneAutre();
                imageprincipale.EnregistrerImage(this.CheminEnregistrement);
            }
            catch (Exception)
            {
            }
        }
Пример #12
0
        //ON MET DES TRY/CATCH POUR EVITER QUE L'ON AIT DES ERREURS DE BUILT A CAUSE DE LA TAILLE DU MOT "nomfichier" QUI SERA NUL SI L'ON CLIQUE SUR "ANNULER"

        /// <summary>
        /// Bouton qui permet de faire passer l'image en niveau de gris en fonction de la valeur renvoyée par le slider associé
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_PassageNiveauGris(object sender, RoutedEventArgs e)
        {
            string nomfichier = this.CheminOrigine;;

            try
            {
                Projet_Vincent_Poupet.MyImage imagegrise = new Projet_Vincent_Poupet.MyImage(nomfichier);
                imagegrise.PassageGris();
                imagegrise.EnregistrerImage(this.CheminEnregistrement);
            }
            catch (Exception)
            {
            }
        }
Пример #13
0
        /// <summary>
        /// Bouton qui permet de faire passer l'image en noir et blanc en fonction de la valeur renvoyée par le slider associé
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_PassageNoirEtBlanc(object sender, RoutedEventArgs e)
        {
            string nomfichier = this.CheminOrigine;

            try
            {
                Projet_Vincent_Poupet.MyImage imagenoireetblanc = new Projet_Vincent_Poupet.MyImage(nomfichier);
                imagenoireetblanc.PassageNoiretBlanc();
                imagenoireetblanc.EnregistrerImage(this.CheminEnregistrement);
            }
            catch (Exception)
            {
            }
        }
Пример #14
0
        /// <summary>
        /// Bouton qui permet d'agrandir l'image en largeur en fonction de la valeur renvoyée par le slider associé
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AgrandirLargeur(object sender, RoutedEventArgs e)
        {
            string nomfichier = this.CheminOrigine;

            try
            {
                Projet_Vincent_Poupet.MyImage imageagrandie = new Projet_Vincent_Poupet.MyImage(nomfichier);
                imageagrandie.AgrandirImageLargeur(Convert.ToInt32(SliderAgrandirLargeur.Value));

                imageagrandie.EnregistrerImage(this.CheminEnregistrement);
            }
            catch (Exception)
            {
            }
        }
Пример #15
0
        /// <summary>
        /// Bouton qui permet d'agrandir l'image en hauteur en fonction de la valeur renvoyée par le slider associé
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AgrandirHauteur(object sender, RoutedEventArgs e)
        {
            string nomfichier = this.CheminOrigine;

            try
            {
                Projet_Vincent_Poupet.MyImage imageagrandie = new Projet_Vincent_Poupet.MyImage(nomfichier);
                imageagrandie.AgrandirImageHauteur(Convert.ToInt32(SliderAgrandirHauteur.Value)); //On agrandit l'image en fonction du coefficient donné par le slider

                imageagrandie.EnregistrerImage(this.CheminEnregistrement);
            }
            catch (Exception)
            {
            }
        }
Пример #16
0
        public void DecoderImageDansUneAutre()
        {
            Projet_Vincent_Poupet.MyImage imagetestprincipale = new Projet_Vincent_Poupet.MyImage("lac_en_montagne.bmp");
            Projet_Vincent_Poupet.MyImage imagetestacacher    = new Projet_Vincent_Poupet.MyImage("coco.bmp");

            Projet_Vincent_Poupet.MyImage imageresultatprincipale = new Projet_Vincent_Poupet.MyImage("lac_en_montagne.bmp");
            Projet_Vincent_Poupet.MyImage imageresultatacacher    = new Projet_Vincent_Poupet.MyImage("coco.bmp");

            int[] tabrougeresultatacacher = new int[imageresultatprincipale.Hauteur * imageresultatprincipale.Largeur];
            int[] tabbleuresultatacacher  = new int[imageresultatprincipale.Hauteur * imageresultatprincipale.Largeur];
            int[] tabvertresultatacacher  = new int[imageresultatprincipale.Hauteur * imageresultatprincipale.Largeur];

            int k = 0;

            for (int i = 0; i < imageresultatprincipale.Hauteur; i++)
            {
                for (int j = 0; j < imageresultatprincipale.Largeur; j++)
                {
                    tabrougeresultatacacher[k] = imageresultatprincipale.MatriceDePixels[i, j].rouge & 15;
                    tabrougeresultatacacher[k] = tabrougeresultatacacher[k] << 4;
                    tabbleuresultatacacher[k]  = imageresultatprincipale.MatriceDePixels[i, j].bleu & 15;
                    tabbleuresultatacacher[k]  = tabbleuresultatacacher[k] << 4;
                    tabvertresultatacacher[k]  = imageresultatprincipale.MatriceDePixels[i, j].vert & 15;
                    tabvertresultatacacher[k]  = tabvertresultatacacher[k] << 4;

                    tabrougeresultatacacher[k] = tabrougeresultatacacher[k] & 255;
                    tabbleuresultatacacher[k]  = tabbleuresultatacacher[k] & 255;
                    tabvertresultatacacher[k]  = tabvertresultatacacher[k] & 255;

                    k++;
                }
            }

            imagetestprincipale.DécoderImageDansUneAutre();

            k = 0;

            for (int i = 0; i < imageresultatprincipale.Hauteur; i++)
            {
                for (int j = 0; j < imageresultatprincipale.Largeur; j++)
                {
                    Assert.AreEqual(imagetestprincipale.MatriceDePixels[i, j].rouge, tabrougeresultatacacher[k]);
                    Assert.AreEqual(imagetestprincipale.MatriceDePixels[i, j].bleu, tabbleuresultatacacher[k]);
                    Assert.AreEqual(imagetestprincipale.MatriceDePixels[i, j].vert, tabvertresultatacacher[k]);
                    k++;
                }
            }
        }
Пример #17
0
        /// <summary>
        /// Bouton qui permet de rétrecir la largeur en fonction de la valeur renvoyée par le slider associé
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void RetrecirLargeur(object sender, RoutedEventArgs e)
        {
            string nomfichier = this.CheminOrigine;

            try
            {
                Projet_Vincent_Poupet.MyImage imageretrecie = new Projet_Vincent_Poupet.MyImage(nomfichier);

                imageretrecie.RetrecirImageLargeur(Convert.ToInt32(SliderRetrecirLargeur.Value));
                imageretrecie.CorrectionTaillefichierdivisibilitépar4(); //NE PAS OUBLIER CETTE FONCTION
                imageretrecie.EnregistrerImage(this.CheminEnregistrement);
            }
            catch (Exception)
            {
            }
        }
Пример #18
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)
            {
            }
        }
Пример #19
0
        /// <summary>
        /// Bouton qui permet de cacher une image dans une autre
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_CoderImageDansUneAutre(object sender, RoutedEventArgs e)
        {
            string nomfichierprincipale = ParcourirFichierEtRecupererNomImage();
            string nomfichieracacher    = this.CheminOrigine;

            try
            {
                Projet_Vincent_Poupet.MyImage imageprincipale = new Projet_Vincent_Poupet.MyImage(nomfichierprincipale);
                Projet_Vincent_Poupet.MyImage imageacacher    = new Projet_Vincent_Poupet.MyImage(nomfichieracacher);

                imageprincipale.CoderImageDansUneAutre(imageacacher);
                imageprincipale.EnregistrerImage(this.CheminEnregistrement);
            }
            catch (Exception)
            {
            }
        }
Пример #20
0
        public void EffetMiroirParRapportAHorizontale()
        {
            Projet_Vincent_Poupet.MyImage imagetest     = new Projet_Vincent_Poupet.MyImage("coco.bmp");
            Projet_Vincent_Poupet.MyImage imageresultat = new Projet_Vincent_Poupet.MyImage("coco.bmp");

            int milieu;

            if (imageresultat.Hauteur % 2 == 0)
            {
                milieu = imageresultat.Hauteur / 2;
            }
            else
            {
                milieu = (imageresultat.Hauteur - 1) / 2;
            }


            for (int i = 0; i < imageresultat.Largeur; i++)
            {
                for (int j = 0; j < milieu; j++)
                {
                    Projet_Vincent_Poupet.Pixel Clone = new Projet_Vincent_Poupet.Pixel(imageresultat.MatriceDePixels[j, i].rouge, imageresultat.MatriceDePixels[j, i].vert, imageresultat.MatriceDePixels[j, i].bleu);
                    imageresultat.MatriceDePixels[j, i] = imageresultat.MatriceDePixels[imageresultat.Hauteur - j - 1, i];
                    imageresultat.MatriceDePixels[imageresultat.Hauteur - j - 1, i] = Clone;
                }
            }

            imagetest.EffetMiroirParRapportAHorizontale();

            for (int i = 0; i < imagetest.Hauteur; i++)
            {
                for (int j = 0; j < imagetest.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);
                }
            }
        }
Пример #21
0
        public void FiltreRenforcementDesBords()
        {
            Projet_Vincent_Poupet.MyImage imagetest     = new Projet_Vincent_Poupet.MyImage("coco.bmp");
            Projet_Vincent_Poupet.MyImage imageresultat = new Projet_Vincent_Poupet.MyImage("coco.bmp");

            int[,] matrice = new int[, ] {
                { 0, 0, 0 }, { -1, 1, 0 }, { 0, 0, 0 }
            };

            int m = 0;
            int n = 0;

            int[] tableaurouge = new int[imageresultat.Largeur * imageresultat.Hauteur];
            int[] tableaubleu  = new int[imageresultat.Largeur * imageresultat.Hauteur];
            int[] tableauvert  = new int[imageresultat.Largeur * imageresultat.Hauteur];

            for (int i = 0; i < imageresultat.Hauteur; i++)
            {
                tableaurouge[i] = 0;
                tableaubleu[i]  = 0;
                tableauvert[i]  = 0;
            }

            int g = 0;

            for (int i = 1; i < imageresultat.Hauteur - 1; i++)
            {
                for (int j = 1; j < imageresultat.Largeur - 1; j++)
                {
                    int totalrouge = 0;
                    int totalbleu  = 0;
                    int totalvert  = 0;

                    for (int k = i - 1; k <= i + 1; k++)
                    {
                        for (int l = j - 1; l <= j + 1; l++)
                        {
                            totalrouge = totalrouge + imageresultat.MatriceDePixels[k, l].rouge * matrice[m, n];
                            totalbleu  = totalbleu + imageresultat.MatriceDePixels[k, l].bleu * matrice[m, n];
                            totalvert  = totalvert + imageresultat.MatriceDePixels[k, l].vert * matrice[m, n];
                            n++;
                        }
                        m++;
                        n = 0;
                    }
                    m = 0;

                    if (totalrouge > 255)
                    {
                        totalrouge = 255;
                    }
                    if (totalbleu > 255)
                    {
                        totalbleu = 255;
                    }
                    if (totalvert > 255)
                    {
                        totalvert = 255;
                    }
                    if (totalrouge < 0)
                    {
                        totalrouge = 0;
                    }
                    if (totalbleu < 0)
                    {
                        totalbleu = 0;
                    }
                    if (totalvert < 0)
                    {
                        totalvert = 0;
                    }

                    tableaurouge[g] = totalrouge;
                    tableaubleu[g]  = totalbleu;
                    tableauvert[g]  = totalvert;
                    g++;
                }
            }

            g = 0;
            for (int i = 0; i < imageresultat.Hauteur; i++)
            {
                for (int j = 0; j < imageresultat.Largeur; j++)
                {
                    if (i == 0 || i == imageresultat.Hauteur - 1 || j == 0 || j == imageresultat.Largeur - 1)
                    {
                        imageresultat.MatriceDePixels[i, j].rouge = 0;
                        imageresultat.MatriceDePixels[i, j].bleu  = 0;
                        imageresultat.MatriceDePixels[i, j].vert  = 0;
                    }
                    else
                    {
                        imageresultat.MatriceDePixels[i, j].rouge = tableaurouge[g];
                        imageresultat.MatriceDePixels[i, j].bleu  = tableaubleu[g];
                        imageresultat.MatriceDePixels[i, j].vert  = tableauvert[g];
                        g++;
                    }
                }
            }

            imagetest.FiltreRenforcementDesBords();

            for (int i = 0; i < imagetest.Hauteur; i++)
            {
                for (int j = 0; j < imagetest.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);
                }
            }
        }
Пример #22
0
        public void CoderImageDansUneAutre()
        {
            Projet_Vincent_Poupet.MyImage imagetestprincipale = new Projet_Vincent_Poupet.MyImage("lac_en_montagne.bmp");
            Projet_Vincent_Poupet.MyImage imagetestacacher    = new Projet_Vincent_Poupet.MyImage("coco.bmp");

            Projet_Vincent_Poupet.MyImage imageresultatprincipale = new Projet_Vincent_Poupet.MyImage("lac_en_montagne.bmp");
            Projet_Vincent_Poupet.MyImage imageresultatacacher    = new Projet_Vincent_Poupet.MyImage("coco.bmp");

            int[] tabrougeimageprincipale = new int[imageresultatprincipale.Hauteur * imageresultatprincipale.Largeur];
            int[] tabbleuimageprincipale  = new int[imageresultatprincipale.Hauteur * imageresultatprincipale.Largeur];
            int[] tabvertimageprincipale  = new int[imageresultatprincipale.Hauteur * imageresultatprincipale.Largeur];

            int[] tabrougeimagecachée = new int[imageresultatacacher.Hauteur * imageresultatacacher.Largeur];
            int[] tabbleuimagecachée  = new int[imageresultatacacher.Hauteur * imageresultatacacher.Largeur];
            int[] tabvertimagecachée  = new int[imageresultatacacher.Hauteur * imageresultatacacher.Largeur];

            int[] tabrougeresultat = new int[imageresultatacacher.Hauteur * imageresultatacacher.Largeur];
            int[] tabbleuresultat  = new int[imageresultatacacher.Hauteur * imageresultatacacher.Largeur];
            int[] tabvertresultat  = new int[imageresultatacacher.Hauteur * imageresultatacacher.Largeur];

            int k = 0;

            for (int i = 0; i < imageresultatacacher.Hauteur; i++)
            {
                for (int j = 0; j < imageresultatacacher.Largeur; j++)
                {
                    tabrougeimageprincipale[k] = imageresultatprincipale.MatriceDePixels[i, j].rouge & 240;
                    tabbleuimageprincipale[k]  = imageresultatprincipale.MatriceDePixels[i, j].bleu & 240;
                    tabvertimageprincipale[k]  = imageresultatprincipale.MatriceDePixels[i, j].vert & 240;

                    tabrougeimagecachée[k] = imageresultatacacher.MatriceDePixels[i, j].rouge & 240;
                    tabrougeimagecachée[k] = tabrougeimagecachée[k] >> 4;
                    tabbleuimagecachée[k]  = imageresultatacacher.MatriceDePixels[i, j].bleu & 240;
                    tabbleuimagecachée[k]  = tabbleuimagecachée[k] >> 4;
                    tabvertimagecachée[k]  = imageresultatacacher.MatriceDePixels[i, j].vert & 240;
                    tabvertimagecachée[k]  = tabvertimagecachée[k] >> 4;


                    tabrougeresultat[k] = tabrougeimageprincipale[k] | tabrougeimagecachée[k];
                    tabbleuresultat[k]  = tabbleuimageprincipale[k] | tabbleuimagecachée[k];
                    tabvertresultat[k]  = tabvertimageprincipale[k] | tabvertimagecachée[k];

                    k++;
                }
            }

            imagetestprincipale.CoderImageDansUneAutre(imagetestacacher);

            k = 0;

            for (int i = 0; i < imageresultatacacher.Hauteur; i++)
            {
                for (int j = 0; j < imageresultatacacher.Largeur; j++)
                {
                    Assert.AreEqual(imagetestprincipale.MatriceDePixels[i, j].rouge, tabrougeresultat[k]);
                    Assert.AreEqual(imagetestprincipale.MatriceDePixels[i, j].bleu, tabbleuresultat[k]);
                    Assert.AreEqual(imagetestprincipale.MatriceDePixels[i, j].vert, tabvertresultat[k]);
                    k++;
                }
            }
        }
Пример #23
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);
                }
            }
        }