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