public static Double CompareCieLAB(Image img1, Image img2, IlluminantItem _userIlluminant) { CieLAB CieLABItem1 = TranFormImageToCieLAB(img1, _userIlluminant), CieLABItem2 = TranFormImageToCieLAB(img2, _userIlluminant); return(CompareCieLAB(CieLABItem1, CieLABItem2)); }
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); }
private static Double CompareCieLAB(CieLAB cieLAB1, CieLAB cieLAB2) { #region Reference /* * http://www.easyrgb.com/en/math.php - Delta E* CIE * Delta E* = sqrt( ( ( CIE-L*1 - CIE-L*2 ) ^ 2 ) + ( ( CIE-a*1 - CIE-a*2 ) ^ 2 ) + ( ( CIE-b*1 - CIE-b*2 ) ^ 2 ) ) */ #endregion return(Math.Sqrt(Math.Pow((cieLAB1.CieL - cieLAB2.CieL), 2) + Math.Pow((cieLAB1.CieA - cieLAB2.CieA), 2) + Math.Pow((cieLAB1.CieB - cieLAB2.CieB), 2))); }