Пример #1
0
        public double Process(ImageLabColorMatrix colorMatrix1, ImageLabColorMatrix colorMatrix2)
        {
            if (colorMatrix1.Width != colorMatrix2.Width || colorMatrix1.Height != colorMatrix2.Height)
            {
                return(100.0);
            }

            double counter = 0d;
            double sum     = 0.0d;

            for (int x = 0; x < colorMatrix1.Width; x++)
            {
                for (int y = 0; y < colorMatrix1.Height; y++)
                {
                    var color1 = colorMatrix1[x, y];
                    var color2 = colorMatrix2[x, y];

                    var result = ColorDifferenceAnalyzer.ComputeColorDifference(color1, color2);

                    if (result > 0.0d)
                    {
                        counter++;
                    }

                    sum += result;
                }
            }

            if (Math.Abs(counter) < 0.00001)
            {
                return(0.0d);
            }
            return((sum / counter) * (counter / (colorMatrix1.Width * colorMatrix1.Height)));
        }
Пример #2
0
        public void TheSameColorTest()
        {
            var color1 = RGBColor.FromRGB8bit(100, 150, 105);
            var color2 = RGBColor.FromRGB8bit(100, 150, 105);

            var result =
                ColorDifferenceAnalyzer.ComputeColorDifference(ColorConverter.ToLab(color1),
                                                               ColorConverter.ToLab(color2));

            Assert.AreEqual(0.0d, result);
        }
Пример #3
0
        public void OneHundredPointsDifferenceInColor()
        {
            var color1 = RGBColor.FromRGB8bit(100, 150, 105);
            var color2 = RGBColor.FromRGB8bit(100, 250, 105);

            var result =
                ColorDifferenceAnalyzer.ComputeColorDifference(ColorConverter.ToLab(color1),
                                                               ColorConverter.ToLab(color2));

            Assert.AreEqual(27.275115148843373d, result);
        }
Пример #4
0
        public void MaxDifferenceInColor()
        {
            var color1 = RGBColor.FromRGB8bit(0, 0, 0);
            var color2 = RGBColor.FromRGB8bit(255, 255, 255);

            var result =
                ColorDifferenceAnalyzer.ComputeColorDifference(ColorConverter.ToLab(color1),
                                                               ColorConverter.ToLab(color2));

            Assert.AreEqual(100.0d, result);
        }
Пример #5
0
        public void OnePointDifferenceInColor()
        {
            var color1 = RGBColor.FromRGB8bit(100, 150, 105);
            var color2 = RGBColor.FromRGB8bit(101, 150, 105);

            var result =
                ColorDifferenceAnalyzer.ComputeColorDifference(ColorConverter.ToLab(color1),
                                                               ColorConverter.ToLab(color2));

            Assert.AreEqual(0.20453188911597528d, result);
        }