Esempio n. 1
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)
            {
            }
        }
Esempio n. 2
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);
                }
            }
        }