/// <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; }
/// <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; }