Exemplo n.º 1
0
        /// <summary>
        /// Convert from XYZ to CIE
        /// </summary>
        /// <param name="xyz">XYZ Color</param>
        /// <returns></returns>
        public static CIELabColor XYZToCIE_Lab(XYZColor xyz)
        {
            float var_X = xyz.x / 95.047f;           // ref_X =  95.047   Observer= 2°, Illuminant= D65
            float var_Y = xyz.y / 100.000f;          // ref_Y = 100.000
            float var_Z = xyz.z / 108.883f;          // ref_Z = 108.883

            if (var_X > 0.008856f)
            {
                var_X = (float)Math.Pow(var_X, (1 / 3f));
            }
            else
            {
                var_X = (7.787f * var_X) + (16f / 116f);
            }

            if (var_Y > 0.008856f)
            {
                var_Y = (float)Math.Pow(var_Y, (1 / 3f));
            }
            else
            {
                var_Y = (7.787f * var_Y) + (16f / 116f);
            }

            if (var_Z > 0.008856f)
            {
                var_Z = (float)Math.Pow(var_Z, (1 / 3f));
            }
            else
            {
                var_Z = (7.787f * var_Z) + (16f / 116f);
            }

            float L = (116f * var_Y) - 16f;
            float a = 500f * (var_X - var_Y);
            float b = 200f * (var_Y - var_Z);

            return(new CIELabColor(L, a, b));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Convert from RGB to CIE
        /// </summary>
        /// <param name="col">Set Color</param>
        /// <returns></returns>
        public static CIELabColor FromRGB(Color col)
        {
            XYZColor xyz = XYZColor.FromRGB(col);

            return(ColorConverter.XYZToCIE_Lab(xyz));
        }
Exemplo n.º 3
0
 /// <summary>
 /// Convert  From XYZ to CIE
 /// </summary>
 /// <param name="xyz">XYZ</param>
 /// <returns></returns>
 public static CIELabColor FromXYZ(XYZColor xyz)
 {
     return(ColorConverter.XYZToCIE_Lab(xyz));
 }