/// <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) { } }
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); } } }