Example #1
0
        public unsafe static void hsiToBmp(int [,,] src, Bitmap dst)
        {
            int        W       = dst.Width;
            int        H       = dst.Height;
            BitmapData bmpData = dst.LockBits(new Rectangle(0, 0, W, H), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

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

            int r, g, b;

            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);
                    *(ptr++) = (byte)b;
                    *(ptr++) = (byte)g;
                    *(ptr++) = (byte)r;
                }
                ptr += padding;
            }

            dst.UnlockBits(bmpData);
        }
Example #2
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]);
                }
            }
        }