Exemplo n.º 1
0
        public static Bitmap toContrast2(Bitmap _b)
        {
            Bitmap     temp = copy(_b);
            XHistogram his  = new XHistogram(_b);

            his.scaleHistogram(255);
            int[][] LUT;                         // look up table
            LUT = new int[3][];
            for (int i = 0; i < LUT.Length; i++) // isi dengan 0
            {
                LUT[i] = new int[256];
                for (int j = 0; j < LUT[i].Length; j++)
                {
                    LUT[i][j] = 0;
                }
            }
            int rmin = 255;
            int rmax = 0;
            int gmin = 255;
            int gmax = 0;
            int bmin = 255;
            int bmax = 0;

            for (int i = 0; i < his.data2[0].Length; i++)   // menentukan r g b max & min dari histo incremental
            {
                rmin = (his.data2[0][i] <= rmin) ? his.data2[0][i] : rmin;
                rmax = (his.data2[0][i] >= rmax) ? his.data2[0][i] : rmax;
                gmin = (his.data2[1][i] <= gmin) ? his.data2[1][i] : gmin;
                gmax = (his.data2[1][i] >= gmax) ? his.data2[1][i] : gmax;
                bmin = (his.data2[2][i] <= bmin) ? his.data2[2][i] : bmin;
                bmax = (his.data2[2][i] >= bmax) ? his.data2[2][i] : bmax;
            }
            for (int j = 0; j < LUT[0].Length; j++)   // bikin LUT
            {
                LUT[0][j] = 255 * (his.data2[0][j] - rmin) / (rmax - rmin);
                LUT[1][j] = 255 * (his.data2[1][j] - gmin) / (gmax - gmin);
                LUT[2][j] = 255 * (his.data2[2][j] - bmin) / (bmax - bmin);
            }
            for (int i = 0; i < _b.Width; i++)   // Apply LUT ke gambar
            {
                for (int j = 0; j < _b.Height; j++)
                {
                    Color ct = temp.GetPixel(i, j);
                    int   rt = LUT[0][ct.R];
                    int   gt = LUT[1][ct.G];
                    int   bt = LUT[2][ct.B];
                    temp.SetPixel(i, j, Color.FromArgb(rt, gt, bt));
                }
            }
            return(temp);
        }
Exemplo n.º 2
0
 public static Bitmap toContrast2(Bitmap _b)
 {
     Bitmap temp = copy(_b);
     XHistogram his = new XHistogram(_b);
     his.scaleHistogram(255);
     int[][] LUT;  // look up table
     LUT = new int[3][];
     for (int i = 0; i < LUT.Length; i++) { // isi dengan 0
         LUT[i] = new int[256];
         for (int j = 0; j < LUT[i].Length; j++) {
             LUT[i][j] = 0;
         }
     }
     int rmin = 255;
     int rmax = 0;
     int gmin = 255;
     int gmax = 0;
     int bmin = 255;
     int bmax = 0;
     for (int i = 0; i < his.data2[0].Length; i++) { // menentukan r g b max & min dari histo incremental
         rmin = (his.data2[0][i] <= rmin) ? his.data2[0][i] : rmin;
         rmax = (his.data2[0][i] >= rmax) ? his.data2[0][i] : rmax;
         gmin = (his.data2[1][i] <= gmin) ? his.data2[1][i] : gmin;
         gmax = (his.data2[1][i] >= gmax) ? his.data2[1][i] : gmax;
         bmin = (his.data2[2][i] <= bmin) ? his.data2[2][i] : bmin;
         bmax = (his.data2[2][i] >= bmax) ? his.data2[2][i] : bmax;
     }
     for (int j = 0; j < LUT[0].Length; j++) { // bikin LUT
         LUT[0][j] = 255 * (his.data2[0][j] - rmin) / (rmax - rmin);
         LUT[1][j] = 255 * (his.data2[1][j] - gmin) / (gmax - gmin);
         LUT[2][j] = 255 * (his.data2[2][j] - bmin) / (bmax - bmin);
     }
     for (int i = 0; i < _b.Width; i++) { // Apply LUT ke gambar
         for (int j = 0; j < _b.Height; j++) {
             Color ct = temp.GetPixel(i, j);
             int rt = LUT[0][ct.R];
             int gt = LUT[1][ct.G];
             int bt = LUT[2][ct.B];
             temp.SetPixel(i, j, Color.FromArgb(rt, gt, bt));
         }
     }
     return temp;
 }