static void Losange(MyImage Image) { int x = Image.Hauteur; int y = Image.Largeur; Pixel[,] NewMat = new Pixel[x, y]; for (int a = 0; a < x; a++) { for (int b = 0; b < y; b++) { NewMat[a, b] = new Pixel(0, 0, 0); } } int compt = 0; for (int i = x / 2; i < x / 1.05; i++) { for (int j = y / 4 + compt; j < y / 1.4 - compt; j++) { NewMat[i, j] = new Pixel(255, 255, 255); } compt++; } compt = 0; for (int i = x / 2; i > x / 12; i--) { for (int j = y / 4 + compt; j < y / 1.4 - compt; j++) { NewMat[i, j] = new Pixel(255, 255, 255); } compt++; } Image.From_Image_ToFile(NewMat, "FormeGeo"); }
static void Rotation270(MyImage Image) { Pixel[,] Mat3 = new Pixel[Image.Largeur, Image.Hauteur]; for (int i = 0; i < Image.Largeur; i++) { for (int j = 0; j < Image.Hauteur; j++) { Mat3[i, j] = Image.Mat1[Image.Hauteur - j - 1, i]; } } Pixel[,] Mat4 = new Pixel[Image.Hauteur, Image.Largeur]; for (int i = 0; i < Image.Hauteur; i++) { for (int j = 0; j < Image.Largeur; j++) { Mat4[i, j] = Mat3[Image.Largeur - j - 1, i]; } } Pixel[,] Mat5 = new Pixel[Image.Largeur, Image.Hauteur]; for (int i = 0; i < Image.Largeur; i++) { for (int j = 0; j < Image.Hauteur; j++) { Mat5[i, j] = Mat4[Image.Hauteur - j - 1, i]; } } Image.From_Image_ToFile(Mat4, "Rotation"); }
static void Hexagone(MyImage Image) { int x = Image.Hauteur; int y = Image.Largeur; Pixel[,] NewMat = new Pixel[x, y]; for (int a = 0; a < x; a++) { for (int b = 0; b < y; b++) { NewMat[a, b] = new Pixel(0, 0, 0); } } for (double i = x / 2.9; i < x / 1.98; i++) { for (double j = y / 3; j < y / 1.6; j++) { int I = Convert.ToInt32(i); int J = Convert.ToInt32(j); NewMat[I, J].R1 = 255; NewMat[I, J].G1 = 255; NewMat[I, J].B1 = 255; } } int compt = 0; for (double i = x / 1.98; i < x / 1.6; i++) { for (int j = y / 3 + compt; j < y / 1.6 - compt; j++) { int I = Convert.ToInt32(i); NewMat[I, j].R1 = 255; NewMat[I, j].G1 = 255; NewMat[I, j].B1 = 255; } compt++; } compt = 0; for (double i = x / 2.9; i > x / 4.3; i--) { for (int j = y / 3 + compt; j < y / 1.6 - compt; j++) { int I = Convert.ToInt32(i); NewMat[I, j].R1 = 255; NewMat[I, j].G1 = 255; NewMat[I, j].B1 = 255; } compt++; } Image.From_Image_ToFile(NewMat, "FormeGeo"); }
static void Rotation90(MyImage MonImage) { Pixel[,] Mat3 = new Pixel[MonImage.Largeur, MonImage.Hauteur]; for (int i = 0; i < MonImage.Largeur; i++) { for (int j = 0; j < MonImage.Hauteur; j++) { Mat3[i, j] = MonImage.Mat1[MonImage.Hauteur - j - 1, i]; } } MonImage.From_Image_ToFile(Mat3, "Rotation"); }
static void NuanceDeGris(MyImage Image, string Nom) { Pixel[,] Mat = new Pixel[Image.Hauteur, Image.Largeur]; for (int i = 0; i < Image.Hauteur; i++) { for (int j = 0; j < Image.Largeur; j++) { int M = (Image.Mat1[i, j].R1 + Image.Mat1[i, j].G1 + Image.Mat1[i, j].B1) / 3; byte M1 = Convert.ToByte(M); Mat[i, j] = new Pixel(M1, M1, M1); } } Image.From_Image_ToFile(Mat, Nom); }
static void Rond(MyImage Image) { int x = Image.Hauteur; int y = Image.Largeur; Pixel[,] NewMat = new Pixel[x, y]; Random R = new Random(); for (int a = 0; a < x; a++) { for (int b = 0; b < y; b++) { NewMat[a, b] = new Pixel(0, 0, 0); } } for (int a = 0; a < x; a++) { for (int b = 0; b < y; b++) { NewMat[a, b].R1 = Convert.ToByte(R.Next(1, 255)); NewMat[a, b].G1 = Convert.ToByte(R.Next(1, 255)); NewMat[a, b].B1 = Convert.ToByte(R.Next(1, 255)); } } double j = 0; double i = 0; int J; int I; for (i = 0; i < x; i++) { for (j = 0; j < y; j++) { int Centre1 = x / 2; int Centre2 = y / 2; double D = Math.Sqrt((i - Centre1) * (i - Centre1) + (j - Centre2) * (j - Centre2)); J = Convert.ToInt32(j); I = Convert.ToInt32(i); if (D < y / 4) { NewMat[I, J].R1 = 255; NewMat[I, J].G1 = 255; NewMat[I, J].B1 = 255; } } } Image.From_Image_ToFile(NewMat, "FormeGeo"); }
static void Negatif(MyImage Image) { Pixel[,] Mat = new Pixel[Image.Hauteur, Image.Largeur]; for (int i = 0; i < Image.Hauteur; i++) { for (int j = 0; j < Image.Largeur; j++) { byte R = Convert.ToByte(255 - Image.Mat1[i, j].R1); byte G = Convert.ToByte(255 - Image.Mat1[i, j].G1); byte B = Convert.ToByte(255 - Image.Mat1[i, j].B1); Mat[i, j] = new Pixel(R, G, B); } } Image.From_Image_ToFile(Mat, "Negatif"); }
static void InitialePrenom(MyImage Image) { int i; int j; int x = Image.Hauteur; int y = Image.Largeur; Pixel[,] Mat3 = new Pixel[Image.Hauteur, Image.Largeur]; for (int a = 0; a < x; a++) { for (int b = 0; b < y; b++) { Mat3[a, b] = Image.Mat1[a, b]; } } for (i = x / 6; i < x / 1.9; i++) { for (j = y / 4; j < y / 3; j++) { Mat3[i, j] = new Pixel(255, 255, 255); } } for (i = x / 6; i < x / 1.9; i++) { for (j = y / 2; j > y / 2.4; j--) { Mat3[i, j] = new Pixel(255, 255, 255); } } for (i = x / 3; i < x / 2.5; i++) { for (j = y / 3; j < y / 2.4; j++) { Mat3[i, j] = new Pixel(255, 255, 255); } } Image.From_Image_ToFile(Mat3, "Initiale"); }
static void NoirEtBlanc(MyImage Image, string Nom) { Pixel[,] Mat = new Pixel[Image.Hauteur, Image.Largeur]; for (int i = 0; i < Image.Hauteur; i++) { for (int j = 0; j < Image.Largeur; j++) { int M = (Image.Mat1[i, j].R1 + Image.Mat1[i, j].G1 + Image.Mat1[i, j].B1) / 3; byte M1 = Convert.ToByte(M); if (M1 < 128) { Mat[i, j] = new Pixel(0, 0, 0); } else { Mat[i, j] = new Pixel(255, 255, 255); } } } Image.From_Image_ToFile(Mat, Nom); }
static void Innovation() { byte[] TabImage = File.ReadAllBytes("lena.bmp"); MyImage MonImage = new MyImage(TabImage); for (int i = 0; i < MonImage.Hauteur; i++) { for (int j = 0; j < MonImage.Largeur; j++) { MonImage.Mat1[i, j].R1 = 144; MonImage.Mat1[i, j].G1 = 233; MonImage.Mat1[i, j].B1 = 135; } } for (double i = MonImage.Hauteur / 1.6; i < MonImage.Hauteur; i++) { for (int j = 0; j < MonImage.Largeur; j++) { int I = Convert.ToInt32(i); MonImage.Mat1[I, j].R1 = 236; MonImage.Mat1[I, j].G1 = 196; MonImage.Mat1[I, j].B1 = 38; } } int x = MonImage.Hauteur; int y = MonImage.Largeur; int compt = 0; for (int i = x / 2; i < x / 1.1; i++) { for (int j = y / 4 + compt; j < y / 1.2 - compt; j++) { MonImage.Mat1[i, j].R1 = 38; MonImage.Mat1[i, j].G1 = 103; MonImage.Mat1[i, j].B1 = 167; } compt++; //compt2++; } for (int i = x / 2; i > x / 20; i--) // gros carré { for (int j = y / 4; j < y / 1.2; j++) { MonImage.Mat1[i, j].R1 = 220; MonImage.Mat1[i, j].G1 = 245; MonImage.Mat1[i, j].B1 = 245; } } for (int i = x / 20; i < x / 3.6; i++) // porte { for (int j = y / 2; j < y / 1.5; j++) { MonImage.Mat1[i, j].R1 = 38; MonImage.Mat1[i, j].G1 = 103; MonImage.Mat1[i, j].B1 = 167; } } for (double i = (x / 20 + x / 3.6) / 2; i < (x / 20 + x / 3.6) / 1.8; i++) { for (double j = y / 1.6; j < y / 1.55; j++) { int J = Convert.ToInt32(j); int I = Convert.ToInt32(i); MonImage.Mat1[I, J].R1 = 0; MonImage.Mat1[I, J].G1 = 0; MonImage.Mat1[I, J].B1 = 0; } } for (int i = x / 3; i < x / 2.1; i++) // fenetre { for (int j = x / 3; j < x / 2.1; j++) { MonImage.Mat1[i, j].R1 = 208; MonImage.Mat1[i, j].G1 = 208; MonImage.Mat1[i, j].B1 = 128; } } for (int i = x / 3; i < x / 2.1; i++) // 2eme fenetre { for (double j = x / 1.6; j < x / 1.3; j++) { int J = Convert.ToInt32(j); MonImage.Mat1[i, J].R1 = 208; MonImage.Mat1[i, J].G1 = 208; MonImage.Mat1[i, J].B1 = 128; } } for (int i = x / 3; i > x / 20; i--) // tronc du sapin { for (int j = y / 10; j < y / 7; j++) { MonImage.Mat1[i, j].R1 = 27; MonImage.Mat1[i, j].G1 = 86; MonImage.Mat1[i, j].B1 = 0; } } int C = 0; for (int i = x / 10; i < x / 2; i++) // Triangle sapin { for (int j = 0 + C; j < y / 4.2 - C; j++) { MonImage.Mat1[i, j].R1 = 27; MonImage.Mat1[i, j].G1 = 86; MonImage.Mat1[i, j].B1 = 0; } C++; } C = 0; for (int i = x / 6; i < x / 2; i++) { for (int j = 0 + C; j < y / 4.2 - C; j++) { MonImage.Mat1[i, j].R1 = 27; MonImage.Mat1[i, j].G1 = 86; MonImage.Mat1[i, j].B1 = 0; } C++; } C = 0; for (double i = x / 4.25; i < x / 2; i++) { for (int j = 0 + C; j < y / 4.2 - C; j++) { int I = Convert.ToInt32(i); MonImage.Mat1[I, j].R1 = 27; MonImage.Mat1[I, j].G1 = 86; MonImage.Mat1[I, j].B1 = 0; } C++; } C = 0; for (double i = x / 3.4; i < x / 2; i++) { for (int j = 0 + C; j < y / 4.2 - C; j++) { int I = Convert.ToInt32(i); MonImage.Mat1[I, j].R1 = 27; MonImage.Mat1[I, j].G1 = 86; MonImage.Mat1[I, j].B1 = 0; } C++; } for (double i = x / 1.25; i < x / 1.17; i++) // soleil { for (double j = y / 10; j < y / 4; j++) { int I = Convert.ToInt32(i); int J = Convert.ToInt32(j); MonImage.Mat1[I, J].R1 = 0; MonImage.Mat1[I, J].G1 = 255; MonImage.Mat1[I, J].B1 = 255; } } int C2 = 0; for (double i = x / 1.17; i < x / 1.11; i++) { for (int j = y / 10 + C2; j < y / 4 - C2; j++) { int I = Convert.ToInt32(i); MonImage.Mat1[I, j].R1 = 0; MonImage.Mat1[I, j].G1 = 255; MonImage.Mat1[I, j].B1 = 255; } C2++; } C2 = 0; for (double i = x / 1.25; i > x / 1.32; i--) { for (int j = y / 10 + C2; j < y / 4 - C2; j++) { int I = Convert.ToInt32(i); MonImage.Mat1[I, j].R1 = 0; MonImage.Mat1[I, j].G1 = 255; MonImage.Mat1[I, j].B1 = 255; } C2++; } MonImage.From_Image_ToFile(MonImage.MAT1, "Innovation"); }
static void MatriceDeConvolution(MyImage Image, int[,] Mat, int b, string Nom) { Pixel[,] MatNew = new Pixel[Image.Hauteur, Image.Largeur]; for (int a = 0; a < Image.Hauteur; a++) { for (int c = 0; c < Image.Largeur; c++) { MatNew[a, c] = Image.Mat1[a, c]; } } for (int i = 2; i < Image.Hauteur - 2; i++) { for (int j = 2; j < Image.Largeur - 2; j++) { Pixel[,] Mat3 = new Pixel[5, 5]; for (int c = 0; c < 5; c++) { for (int d = 0; d < 5; d++) { Mat3[c, d] = Image.Mat1[i - 2 + c, j - 2 + d]; } } int B = 0, C = 0, D = 0; for (int I = 0; I < 5; I++) { for (int J = 0; J < 5; J++) { B += Mat[I, J] * Mat3[I, J].R1; C += Mat[I, J] * Mat3[I, J].G1; D += Mat[I, J] * Mat3[I, J].B1; } } B = B / b; C = C / b; D = D / b; if (B < 0) { B = 0; } if (C < 0) { C = 0; } if (D < 0) { D = 0; } if (B > 255) { B = 255; } if (C > 255) { C = 255; } if (D > 255) { D = 255; } byte B1 = Convert.ToByte(B); byte C1 = Convert.ToByte(C); byte D1 = Convert.ToByte(D); MatNew[i, j] = new Pixel(B1, C1, D1); } } Image.From_Image_ToFile(MatNew, Nom); }