private (Bitmap, ColorDifference) ImagesDifference(Image firstImage, Image secondImage, IColorDifferences colorDifferences, int multiplier = 25) { int width = Math.Min(firstImage.Width, secondImage.Width); int height = Math.Min(firstImage.Height, secondImage.Height); Bitmap first = (Bitmap)firstImage; Bitmap second = (Bitmap)secondImage; Bitmap diff = new Bitmap(width, height); ColorDifference totalDifference = new ColorDifference(); for (int i = 0; i < width; ++i) { for (int j = 0; j < height; ++j) { Color firstImagePx = first.GetPixel(i, j); Color secondImagePx = second.GetPixel(i, j); Color differencePx = colorDifferences.GetDifference(firstImagePx, secondImagePx, multiplier); totalDifference.Accumulate(differencePx); diff.SetPixel(i, j, differencePx); } } totalDifference.Reduce(multiplier); return(diff, totalDifference); }