示例#1
0
        private static CieLAB TranFormImageToCieLAB(Image image, IlluminantItem _userIlluminant)
        {
            var averageRGB = new AverageRGB(image);
            var XYZ        = new XYZ(averageRGB);
            var cieLAB     = new CieLAB(XYZ, _userIlluminant);

            return(cieLAB);
        }
示例#2
0
        public XYZ(AverageRGB averageRGB)
        {
            var rgb = new Dictionary <String, Double>()
            {
                { "Red", averageRGB.AverageRed }, { "Green", averageRGB.AverageGreen }, { "Blue", averageRGB.AverageBlue }
            };

            foreach (var color in rgb)
            {
                var colorValue = Convert.ToDouble(color.Value / 225);
                colorValue = colorValue > 0.04045 ? Math.Pow((colorValue + 0.055) / 1.055, 2.4) : colorValue / 12.92;
                colorValue = colorValue * 100;
            }

            _x = rgb["Red"] * 0.4124 + rgb["Green"] * 0.3576 + rgb["Blue"] * 0.1805;
            _y = rgb["Red"] * 0.2126 + rgb["Green"] * 0.7152 + rgb["Blue"] * 0.0722;
            _z = rgb["Red"] * 0.0193 + rgb["Green"] * 0.1192 + rgb["Blue"] * 0.9505;
        }