Exemplo n.º 1
0
        /// <summary>
        /// Converts color from RGB space to YCbCr space.
        /// By http://www.couleur.org/index.php?page=transformations#YCbCr
        /// </summary>
        /// <param name="c"></param>
        /// <returns></returns>
        public static YCbCr ToYCbCr2(this Color c)
        {
            double y, cb, cr;
            double r = c.R;
            double g = c.G;
            double b = c.B;

            y = 0.2989D * r + 0.5866d * g + 0.1145d * b;
            cb = -0.1688d * r - 0.3312d * g + 0.5000d * b;
            cr = 0.5000d * r - 0.4184d * g - 0.0816d * b;

            YCbCr result = new YCbCr((float)y, (float)cb, (float)cr);
            return result;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Converts color from RGB space to YCbCr space.
        /// </summary>
        /// <param name="c">RGB color (Red: 0-255; Green: 0-255; Blue: 0-255)</param>
        /// <returns></returns>
        public static YCbCr ToYCbCr(this Color c)
        {
            float y, cb, cr;
            float r = c.R;
            float g = c.G;
            float b = c.B;

            y = 16 + (65.738F * r / 256.0F) + (129.057F * g / 256.0F) + (25.064F * b / 256.0F);
            cb = 128 + (-37.945F * r / 256.0F) - (74.494F * g / 256.0F) + (112.439F * b / 256.0F);
            cr = 128 + (112.439F * r / 256.0F) - (94.154F * g / 256.0F) - (18.285F * b / 256.0F);

            YCbCr result = new YCbCr(y, cb, cr);
            return result;
        }