Auto level
objBitmap3 = new Bitmap(objBitmap1); int xgmax = 0; int xgmin = 255; for (int x = 0; x < objBitmap1.Width; x++) for (int y = 0; y < objBitmap1.Height; y++) { Color w = objBitmap1.GetPixel(x, y); int xg = (int)((w.R + w.G + w.B) / 3); if(xg > xgmax) xgmax = xg; if(xg < xgmin) xgmin = xg; } for (int x = 0; x < objBitmap1.Width; x++) for (int y = 0; y < objBitmap1.Height; y++) { Color w = objBitmap1.GetPixel(x, y); int xg = (int)((w.R + w.G + w.B) / 3); int xb = (int)(255 * (xg - xgmin) / (xgmax - xgmin)); Color new_w = Color.FromArgb(xb, xb, xb); objBitmap3.SetPixel(x, y, new_w); } pictureBox3.Image = objBitmap3; float[] h = new float[256]; int i; for (i = 0; i < 256; i++) h[i] = 0; for (int x = 0; x < objBitmap1.Width; x++) for (int y = 0; y < objBitmap1.Height; y++) { Color w = objBitmap1.GetPixel(x, y); int xg = (int)((w.R + w.G + w.B) / 3); if (xg > xgmax) xgmax = xg; if (xg < xgmin) xgmin = xg; int xb = (int)(255 * (xg - xgmin) / (xgmax - xgmin)); h[xb] = h[xb] + 1; } for (i = 0; i < 256; i++) { chart2.Series["Series1"].Points.AddXY(i, h[i]); } |
Output
Keterangan:
Pada hasil histogram menunjukan gambar dominan terang Karena grafik terlihat lebih banyak disisi bagian kanan. Auto Level adalah proses merubah nilai minimum sebuah citra menjadi 0 dan nilai maksimum sebuah citra menjadi 255. Pada gambar yang cenderung gelap biasanya nilai maksimumnya tidak sampai 255, dan pada gambar terang biasanya nilai minimumnya tidak mencapai 0. dengan proses auto level maka nilai maksimum akan menjadi 255 dan minimum menjadi 0. Untuk histogram gambar yang asalnya dominan terang maka grafik akan lebih banyak di sebelah kanan.
Berikut ini untuk mengatahui nilai minimum 0 dan maximum 255 yaitu dengan color picker sebagai
berikut keterangan: menunjukan bahwa nilai 0 merupakan nilai terendah dalam intensitas warna RGB.
Keterangan: menunjukan nilai 255 nilai max dari intensitas warna rgb yang ditunjukan warna putih. Hal ini ketahuan bahwa nilai maksimum dari intestitas warna adalah 255.