public void ConvertisseurBinaireenDec() { MyImage test = new MyImage("lena.bmp"); int[] binaire = { 0, 0, 0, 0, 1, 0, 1, 0 }; int result = test.ConvertisseurBinaireenDec(binaire); Assert.AreEqual(10, result); }
public void ConvertEndiantoInt() { byte[] tab = { 230, 4, 0, 0 }; MyImage test = new MyImage("lena.bmp"); int result = test.Convertir_endian_to_int(tab); Assert.AreEqual(1254, result); }
static void SousMenu2(MyImage a) { Console.WriteLine("Quel type de filtre voulez vous?"); Console.WriteLine("1 - Filtre Flou"); Console.WriteLine("2 - Filtre Renforcement des bords"); Console.WriteLine("3 - Filtre Detection des contours"); Console.WriteLine("4 - Filtre Repoussage"); Console.WriteLine("5 - Filtre Contraste"); string check = Convert.ToString(Console.ReadLine()); int n = 0; bool verif = int.TryParse(check, out n); while ((n != 1 && n != 2 && n != 3 && n != 4 && n != 5) || (verif != true)) { Console.WriteLine("Veuillez saisir soit 1 ou 2 ou 3 ou 4 ou 5"); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out n); } switch (n) { case 1: int[,] NoyauFlou = { { 1, 1, 1 }, { 1, 1, 1 }, { 1, 1, 1 } }; a.MatriceConvolution(NoyauFlou); break; case 2: int[,] NoyauRenforcementdesbords = { { 0, 0, 0 }, { -1, 1, 0 }, { 0, 0, 0 } }; a.MatriceConvolution(NoyauRenforcementdesbords); break; case 3: int[,] NoyauDetectiondescontours = { { 0, 1, 0 }, { 1, -4, 1 }, { 0, 1, 0 } }; a.MatriceConvolution(NoyauDetectiondescontours); break; case 4: int[,] NoyauRepoussage = { { -2, -1, 0 }, { -1, 1, 1 }, { 0, 1, 2 } }; a.MatriceConvolution(NoyauRepoussage); break; case 5: int[,] NoyauContraste = { { 0, -1, 0 }, { -1, 5, -1 }, { 0, -1, 0 } }; a.MatriceConvolution(NoyauContraste); break; } }
/// <summary> /// Permet de coder une image dans une autre /// </summary> /// <param name="a"> image sélectionner par l'utilisateur </param> /// <returns> l'image comprenant l'image cacher dans une image</returns> public Pixel[,] ImageCache(MyImage a) { int[] binaireR = new int[8]; int[] binaireG = new int[8]; int[] binaireB = new int[8]; int[] binaireRC = new int[8]; int[] binaireGC = new int[8]; int[] binaireBC = new int[8]; int[] ConcatenationR = new int[8]; int[] ConcatenationG = new int[8]; int[] ConcatenationB = new int[8]; for (int i = 0; i < a.matRGB.GetLength(0); i++) { for (int j = 0; j < a.matRGB.GetLength(1); j++) { binaireR = ConvertisseurDecenBinaire(matRGB[i, j].red); binaireG = ConvertisseurDecenBinaire(matRGB[i, j].green); binaireB = ConvertisseurDecenBinaire(matRGB[i, j].blue); binaireRC = ConvertisseurDecenBinaire(a.matRGB[i, j].red); binaireGC = ConvertisseurDecenBinaire(a.matRGB[i, j].green); binaireBC = ConvertisseurDecenBinaire(a.matRGB[i, j].blue); for (int x = 0; x < 8; x++) { if (x < 4) // on met les 4 premiers bits de l'image de base en premier bit { ConcatenationR[x] = binaireR[x]; ConcatenationG[x] = binaireG[x]; ConcatenationB[x] = binaireB[x]; } else if (4 <= x) // on met les 4 derniers bits de l'image à cacher coller aux autres 4 premiers bits { ConcatenationR[x] = binaireRC[x - 4]; ConcatenationG[x] = binaireGC[x - 4]; ConcatenationB[x] = binaireBC[x - 4]; } } matRGB[i, j].red = ConvertisseurBinaireenDec(ConcatenationR); // on convertit le tableau de bits et on rentre les valeurs dans la matrice image matRGB[i, j].green = ConvertisseurBinaireenDec(ConcatenationG); matRGB[i, j].blue = ConvertisseurBinaireenDec(ConcatenationB); } } return(matRGB); }
public void ConvertinttoEndian() { MyImage test = new MyImage("lena.bmp"); byte[] result = test.Convertir_int_to_endian(1254, 4); byte[] tab = { 230, 4, 0, 0 }; Assert.AreEqual(tab[0], result[0]); Assert.AreEqual(tab[1], result[1]); Assert.AreEqual(tab[2], result[2]); Assert.AreEqual(tab[3], result[3]); }
static void MenuImage() { Bitmap Image = new Bitmap("coco.bmp"); Console.WriteLine("Choisissez la photo que vous voulez selecitonner avec .bmp a la fin"); Console.WriteLine("Different choix possible :\n1 - Coco"); Console.WriteLine("2 - lena"); Console.WriteLine("3 - lac"); string check = Convert.ToString(Console.ReadLine()); int n = 0; bool verif = int.TryParse(check, out n); while ((n != 1 && n != 2 && n != 3) || (verif != true)) { Console.WriteLine("Veuillez saisir soit 1 ou 2 ou 3"); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out n); } switch (n) { case 1: Image = new Bitmap("coco.bmp"); Image.Save("coco1.bmp"); break; case 2: Image = new Bitmap("lena.bmp"); Image.Save("coco1.bmp"); break; case 3: Image = new Bitmap("lac.bmp"); Image.Save("coco1.bmp"); break; default: break; } MyImage myImage = new MyImage("coco1.bmp"); Menu1(myImage); myImage.From_image_to_file("coco1.bmp"); Process.Start("coco1.bmp"); Console.ReadLine(); }
/// <summary> /// Permet de faire une fractale de Julia differente possiblité d'image graàce à cette fractale /// </summary> /// <param name="a">l'image qu'on va venir transformer </param> /// <param name="c1">valeur modifiable afin de changer le rendu de l'image</param> /// <param name="c2">valeur modifiable afin de changer le rendu de l'image</param> public void FractaledeJulia(MyImage a, double c1, double c2) { a.FractaledeMandelBroot(); for (int x = 0; x < a.matRGB.GetLength(0); x++) { for (int y = 0; y < a.matRGB.GetLength(1); y++) { double Re = Convert.ToDouble((x - (a.matRGB.GetLength(0) / 2)) / Convert.ToDouble(a.matRGB.GetLength(0) / 4)); double Im = Convert.ToDouble((y - (a.matRGB.GetLength(1) / 2)) / Convert.ToDouble(a.matRGB.GetLength(1) / 4)); int i = 0; Complexe z = new Complexe(Re, Im); while (i < 100) { double RE2 = z.re * z.re; double IM2 = z.im * z.im; double REIM = 2.0 * z.re * z.im; z.re = RE2 - IM2 + c1; z.im = REIM + c2; if (RE2 * RE2 + IM2 * IM2 > 2) { break; } i++; } if (i < 100) { a.matRGB[x, y] = new Pixel(255 * i / 100, 12 * i / 100, 105 * i / 100); } else { a.matRGB[x, y] = new Pixel(150, 125, 255); } } } }
public void ConvertisseurDecenBinaire() { MyImage test = new MyImage("lena.bmp"); int[] result = test.ConvertisseurDecenBinaire(10); int[] binaire = { 0, 0, 0, 0, 1, 0, 1, 0 }; Assert.AreEqual(binaire[0], result[0]); Assert.AreEqual(binaire[1], result[1]); Assert.AreEqual(binaire[2], result[2]); Assert.AreEqual(binaire[3], result[3]); Assert.AreEqual(binaire[4], result[4]); Assert.AreEqual(binaire[5], result[5]); Assert.AreEqual(binaire[6], result[6]); Assert.AreEqual(binaire[7], result[7]); }
static void MenuQrCode() { Console.WriteLine("Que vouelz vous faire"); Console.WriteLine("1 - Faire un QR CODE V1"); Console.WriteLine("2 - Décoder Un Qr CODE V1"); Console.WriteLine("3 - Faire un QR CODE V2 (Pas fait)"); Console.WriteLine("4 - Décoder Un Qr CODE V2 (Pas fait)"); string check = Convert.ToString(Console.ReadLine()); int n = 0; bool verif = int.TryParse(check, out n); while ((n != 1 && n != 2) || (verif != true)) { Console.WriteLine("Veuillez saisir soit 1 ou 2"); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out n); } switch (n) { case 1: Console.WriteLine("ecrivez le mot à encoder max 19 caractère (V1)"); string mot = Console.ReadLine(); mot = mot.ToUpper(); QRcode Qr = new QRcode(mot); Bitmap Image = new Bitmap("coco.bmp"); Image.Save("coco1.bmp"); MyImage QRIm = new MyImage("coco1.bmp"); QRIm = Qr.EcritureQRCodeMatrice(QRIm); QRIm.From_image_to_file("coco1.bmp"); Process.Start("coco1.bmp"); break; case 2: Console.WriteLine("ecrivez le mot à encoder max 19 caractère (V1) qui sera décoder par la suite"); mot = Console.ReadLine(); mot = mot.ToUpper(); Qr = new QRcode(mot); Console.WriteLine(Qr.DecodageQRV1(Qr)); Console.ReadKey(); break; default: break; } }
static void Menu1(MyImage a) { Console.Write("Que Voulez vous faire ?"); Console.WriteLine("\n1 - Traitement d'Image"); Console.WriteLine("2 - Matrice Convolution"); Console.WriteLine("3 - Fractale, Histogramme et coder et decoder une image dans une autre"); string check = Convert.ToString(Console.ReadLine()); int n = 0; bool verif = int.TryParse(check, out n); while ((n != 1 && n != 2 && n != 3) || (verif != true)) { Console.WriteLine("Veuillez saisir soit 1 ou 2 ou 3"); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out n); } switch (n) { case 1: SousMenu1(a); break; case 2: SousMenu2(a); break; case 3: SousMenu3(a); break; default: break; } }
static void SousMenu3(MyImage a) { Console.WriteLine("Menu Fractale"); Console.WriteLine("1 - Fractale de MandelBroot"); Console.WriteLine("2 - Fractale de Julia"); Console.WriteLine("3 - Histogramme"); Console.WriteLine("4 - Coder une image dans une autre"); Console.WriteLine("5 - Coder puis decoder une image (qu'on vient d'encoder dans une autre)"); string check = Convert.ToString(Console.ReadLine()); int n = 0; bool verif = int.TryParse(check, out n); while ((n != 1 && n != 2 && n != 3 && n != 4 && n != 5) || (verif != true)) { Console.WriteLine("Veuillez saisir soit 1 ou 2 ou 3"); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out n); } switch (n) { case 1: a.FractaledeMandelBroot(); break; case 2: Console.WriteLine("3 Fractale de Julia differente possible:\n 1- etoile, \n 2- fleche \n 3- éclair "); check = Convert.ToString(Console.ReadLine()); n = 0; verif = int.TryParse(check, out n); while ((n != 1 && n != 2 && n != 3) || (verif != true)) { Console.WriteLine("Veuillez saisir soit 1 ou 2 ou 3"); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out n); } switch (n) { case 1: a.FractaledeJulia(a, -0.70176, -0.3842); break; case 2: a.FractaledeJulia(a, -0.8, 0.156); break; case 3: a.FractaledeJulia(a, 0, 0.8); break; default: break; } break; case 3: a.Histogramme(); break; case 4: Console.WriteLine("choisissez la photo a cacher dedans avec .bmp : \n 1 - lena.bmp \n 2 - coco.bmp \n 3 - lac.bmp"); check = Convert.ToString(Console.ReadLine()); n = 0; verif = int.TryParse(check, out n); while ((n != 1 && n != 2 && n != 3) || (verif != true)) { Console.WriteLine("Veuillez saisir soit 1 ou 2 ou 3"); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out n); } switch (n) { case 1: Bitmap Im = new Bitmap("lena.bmp"); Im.Save("Imageacacher.bmp"); MyImage Im1 = new MyImage("Imageacacher.bmp"); a.ImageCache(Im1); break; case 2: Im = new Bitmap("coco.bmp"); Im.Save("Imageacacher.bmp"); Im1 = new MyImage("Imageacacher.bmp"); a.ImageCache(Im1); break; case 3: Im = new Bitmap("lac.bmp"); Im.Save("Imageacacher.bmp"); Im1 = new MyImage("Imageacacher.bmp"); a.ImageCache(Im1); break; default: break; } break; case 5: Console.WriteLine("choisissez la photo a cacher dedans avec .bmp puis qui sera redecoder dans la foulée : \n 1 - lena.bmp \n 2 - coco.bmp \n 3 - lac.bmp"); check = Convert.ToString(Console.ReadLine()); n = 0; verif = int.TryParse(check, out n); while ((n != 1 && n != 2 && n != 3) || (verif != true)) { Console.WriteLine("Veuillez saisir soit 1 ou 2 ou 3"); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out n); } switch (n) { case 1: Bitmap Im = new Bitmap("lena.bmp"); Im.Save("Imageacacher.bmp"); MyImage Im1 = new MyImage("Imageacacher.bmp"); a.ImageCoderetDecoder(Im1); break; case 2: Im = new Bitmap("coco.bmp"); Im.Save("Imageacacher.bmp"); Im1 = new MyImage("Imageacacher.bmp"); a.ImageCoderetDecoder(Im1); break; case 3: Im = new Bitmap("lac.bmp"); Im.Save("Imageacacher.bmp"); Im1 = new MyImage("Imageacacher.bmp"); a.ImageCoderetDecoder(Im1); break; default: break; } break; } }
static void SousMenu1(MyImage a) { Console.Write("Que Voulez vous faire sur l'image"); Console.WriteLine("\n1 - Noir et Blanc"); Console.WriteLine("2 - Nuance de gris"); Console.WriteLine("3 - Miroir par horizontal"); Console.WriteLine("4 - Miroir par Vertical"); Console.WriteLine("5 - Rotation Image"); Console.WriteLine("6 - Agrandir Image"); Console.WriteLine("7 - Retrecir Image"); string check = Convert.ToString(Console.ReadLine()); int n = 0; bool verif = int.TryParse(check, out n); while ((n != 1 && n != 2 && n != 3 && n != 4 && n != 5 && n != 6 && n != 7) || (verif != true)) { Console.WriteLine("Veuillez saisir soit 1 ou 2 ou 3 ou 4 ou 5 ou 6 ou 7"); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out n); } switch (n) { case 1: a.NoirBlanc(); break; case 2: a.NuanceGris(); break; case 3: a.MiroirH(); break; case 4: a.MiroirV(); break; case 5: int angle = 0; Console.WriteLine("entrer un angle"); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out angle); while (verif != true) { Console.WriteLine("Veuillez saisir un angle pas un caractère"); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out angle); } a.matRGB = a.Rotation(angle); break; case 6: int coeff = 0; Console.WriteLine("de combien voulez vous agrandir l'image c'est à dire de x1 x2 x3 (max 6)"); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out coeff); while ((coeff != 1 && coeff != 2 && coeff != 3 && coeff != 4 && coeff != 5 && coeff != 6) || (verif != true)) { Console.WriteLine("Veuillez saisir un chiffre entre 1 et 6 inclus et pas un caractère"); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out coeff); } a.matRGB = a.Agrandir(coeff); break; case 7: int coeffR = 0; Console.WriteLine("donner un multiplicateur càd de combien voulez vous reduire l'image x1 x2 x3 ..."); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out coeffR); while (verif != true) { Console.WriteLine("Veuillez saisir un chiffre pas un caractère"); check = Convert.ToString(Console.ReadLine()); verif = int.TryParse(check, out coeffR); } a.matRGB = a.retrecir(coeffR); break; default: break; } }
/// <summary> /// Permet de coder une image dans une image puis de la décoder dans le second temps /// </summary> /// <param name="a"> l'image selectionner par l'utilisateur</param> public void ImageCoderetDecoder(MyImage a) { Pixel[,] matcache = ImageCache(a); Pixel[,] mat = new Pixel[a.matRGB.GetLength(0), a.matRGB.GetLength(1)]; int[] binaireR = new int[8]; int[] binaireG = new int[8]; int[] binaireB = new int[8]; int[] ConcatenationR = new int[8]; int[] ConcatenationG = new int[8]; int[] ConcatenationB = new int[8]; for (int i = 0; i < mat.GetLength(0); i++) { for (int j = 0; j < mat.GetLength(1); j++) { mat[i, j] = new Pixel(255, 255, 255); } } for (int i = 0; i < a.matRGB.GetLength(0); i++) { for (int j = 0; j < a.matRGB.GetLength(1); j++) { binaireR = ConvertisseurDecenBinaire(matcache[i, j].red); binaireG = ConvertisseurDecenBinaire(matcache[i, j].green); binaireB = ConvertisseurDecenBinaire(matcache[i, j].blue); for (int x = 0; x < 8; x++) // on vient chercher le sbits cachés de 4 à 8 qu'on met en 0 à 4 { if (x < 4) { ConcatenationR[x] = binaireR[x + 4]; ConcatenationG[x] = binaireG[x + 4]; ConcatenationB[x] = binaireB[x + 4]; } else if (4 <= x) { ConcatenationR[x] = 0; // on remplit le reste à 0 puisqu'on à plus le reste de 4 à 8 ConcatenationG[x] = 0; ConcatenationB[x] = 0; } } mat[i, j].red = ConvertisseurBinaireenDec(ConcatenationR); mat[i, j].green = ConvertisseurBinaireenDec(ConcatenationG); mat[i, j].blue = ConvertisseurBinaireenDec(ConcatenationB); } } for (int i = 0; i < matRGB.GetLength(0); i++) // on met l'image en blanc { for (int j = 0; j < matRGB.GetLength(1); j++) { matRGB[i, j] = new Pixel(255, 255, 255); } } for (int i = 0; i < mat.GetLength(0); i++) // on remplit avec ce qu'on à récuperé juste avant { for (int j = 0; j < mat.GetLength(1); j++) { matRGB[i, j] = mat[i, j]; } } }