// Code for D50 white Ref //public static CIEXYZ RGBtoXYZ(int red, int green, int blue) //{ // // normalize red, green, blue values // double rLinear = (double)red/255.0; // double gLinear = (double)green/255.0; // double bLinear = (double)blue/255.0; // // convert to a sRGB form // double r = (rLinear > 0.04045)? Math.Pow((rLinear + 0.055)/(1 + 0.055), 2.2) : (rLinear/12.92) ; // double g = (gLinear > 0.04045)? Math.Pow((gLinear + 0.055)/(1 + 0.055), 2.2) : (gLinear/12.92) ; // double b = (bLinear > 0.04045)? Math.Pow((bLinear + 0.055)/(1 + 0.055), 2.2) : (bLinear/12.92) ; // // Corrections received by from Rob2412 // return new CIEXYZ( // (r * 0.4360747 + g * 0.3850649 + b * 0.1430804), // (r * 0.2225045 + g * 0.7168786 + b * 0.0606169), // (r * 0.0139322 + g * 0.0971045 + b * 0.7141733)); //} /// <summary> /// Converts RGB to CIEXYZ. /// </summary> public static CIEXYZ RGBtoXYZ(RGB rgb) { return RGBtoXYZ(rgb.Red, rgb.Green, rgb.Blue); }
/// <summary> /// Converts RGB to YUV. /// </summary> public static YUV RGBtoYUV(RGB rgb) { return RGBtoYUV(rgb.Red, rgb.Green, rgb.Blue); }
/// <summary> /// Converts RGB to HSL. /// </summary> public static HSL RGBtoHSL(RGB rgb) { return RGBtoHSL(rgb.Red, rgb.Green, rgb.Blue); }
/// <summary> /// Converts RGB to CIELab. /// </summary> public static CIELab RGBtoLab(RGB rgb) { return XYZtoLab(RGBtoXYZ(rgb.Red, rgb.Green, rgb.Blue)); }
/// <summary> /// Converts YUV to RGB. /// </summary> /// <param name="y">Y must be in [0, 1].</param> /// <param name="u">U must be in [-0.436, +0.436].</param> /// <param name="v">V must be in [-0.615, +0.615].</param> public static RGB YUVtoRGB(double y, double u, double v) { var rgb = new RGB(); rgb.Red = Convert.ToInt32((y + 1.139837398373983740*v)*255); rgb.Green = Convert.ToInt32((y - 0.3946517043589703515*u - 0.5805986066674976801*v)*255); rgb.Blue = Convert.ToInt32((y + 2.032110091743119266*u)*255); return rgb; }
/// <summary> /// Converts RGB to CMYK /// </summary> public static CMYK RGBtoCMYK(RGB rgb) { return RGBtoCMYK(rgb.Red, rgb.Green, rgb.Blue); }
/// <summary> /// Converts RGB to CIELab. /// </summary> public static CIELab RGBtoLab(RGB rgb) { return(XYZtoLab(RGBtoXYZ(rgb.Red, rgb.Green, rgb.Blue))); }
// Code for D50 white Ref //public static CIEXYZ RGBtoXYZ(int red, int green, int blue) //{ // // normalize red, green, blue values // double rLinear = (double)red/255.0; // double gLinear = (double)green/255.0; // double bLinear = (double)blue/255.0; // // convert to a sRGB form // double r = (rLinear > 0.04045)? Math.Pow((rLinear + 0.055)/(1 + 0.055), 2.2) : (rLinear/12.92) ; // double g = (gLinear > 0.04045)? Math.Pow((gLinear + 0.055)/(1 + 0.055), 2.2) : (gLinear/12.92) ; // double b = (bLinear > 0.04045)? Math.Pow((bLinear + 0.055)/(1 + 0.055), 2.2) : (bLinear/12.92) ; // // Corrections received by from Rob2412 // return new CIEXYZ( // (r * 0.4360747 + g * 0.3850649 + b * 0.1430804), // (r * 0.2225045 + g * 0.7168786 + b * 0.0606169), // (r * 0.0139322 + g * 0.0971045 + b * 0.7141733)); //} /// <summary> /// Converts RGB to CIEXYZ. /// </summary> public static CIEXYZ RGBtoXYZ(RGB rgb) { return(RGBtoXYZ(rgb.Red, rgb.Green, rgb.Blue)); }
/// <summary> /// Converts RGB to YUV. /// </summary> public static YUV RGBtoYUV(RGB rgb) { return(RGBtoYUV(rgb.Red, rgb.Green, rgb.Blue)); }
/// <summary> /// Converts RGB to CMYK /// </summary> public static CMYK RGBtoCMYK(RGB rgb) { return(RGBtoCMYK(rgb.Red, rgb.Green, rgb.Blue)); }
/// <summary> /// Converts RGB to HSB. /// </summary> public static HSB RGBtoHSB(RGB rgb) { return(RGBtoHSB(rgb.Red, rgb.Green, rgb.Blue)); }