コード例 #1
0
        public static void Luminancia(int[,,] src, int H, int W)
        {
            int r, g, b, gs;

            for (int y = 0; y < H; y++)
            {
                for (int x = 0; x < W; x++)
                {
                    HsiToRgb.convert(src[x, y, 0], src[x, y, 1], src[x, y, 2], out r, out g, out b);
                    gs = (int)(r * 0.2990 + g * 0.5870 + b * 0.1140);
                    RgbToHsi.convert(gs, gs, gs, out src[x, y, 0], out src[x, y, 1], out src[x, y, 2]);
                }
            }
        }
コード例 #2
0
        public unsafe static void bmpToHsi(Bitmap src, int [,,] dest)
        {
            int        W       = src.Width;
            int        H       = src.Height;
            BitmapData bmpData = src.LockBits(new Rectangle(0, 0, W, H), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

            byte *ptr     = (byte *)bmpData.Scan0.ToPointer();
            int   padding = bmpData.Stride - (W * 3);

            int b, g, r, h, s, i;

            for (int y = 0; y < H; y++)
            {
                for (int x = 0; x < W; x++)
                {
                    b = *(ptr++);
                    g = *(ptr++);
                    r = *(ptr++);
                    RgbToHsi.convert(r, g, b, out dest[x, y, 0], out dest[x, y, 1], out dest[x, y, 2]);
                }
                ptr += padding;
            }
            src.UnlockBits(bmpData);
        }