private static Bitmap GrayDiff(Bitmap b1, Bitmap b2)
        {
            var res = new Bitmap(b1.Width, b1.Height);

            using (var fb1 = new FastBitmap(b1))
                using (var fb2 = new FastBitmap(b2))
                    using (var fb3 = new FastBitmap(res))
                    {
                        for (var i = 0; i < fb1.Count; i++)
                        {
                            var diff = (byte)Math.Abs(fb1.GetI(i).r - fb2.GetI(i).r);
                            fb3.SetI(i, (diff, diff, diff));
                        }
                    }

            var(min, max) = ((byte)255, (byte)0);
            FastBitmap.ForEach(res, cl =>
            {
                if (cl.r > max)
                {
                    max = cl.r;
                }
                if (cl.r < min)
                {
                    min = cl.r;
                }
            });

            return(FastBitmap.Select(res, cl =>
            {
                var t = (byte)((cl.r - min) / (double)(max - min) * 255);
                return (t, t, t);
            }));;
        }