Jest open-source C# wdrożenie wzoru CIE94 podałeś:
https://github.com/THEjoezack/ColorMine/blob/master/ColorMine/ColorSpaces/Comparisons/Cie94Comparison.cs
To wymaga, aby twoje kolory znajdowały się w przestrzeni kolorów LAB, w razie potrzeby źródło konwersji znajduje się w tej samej bibliotece.
Możesz również check your cIE94 calculations online używać tej samej biblioteki.
Oto odnośny fragment kodu, LABA i labB to wejścia:
var deltaL = labA.L - labB.L;
var deltaA = labA.A - labB.A;
var deltaB = labA.B - labB.B;
var c1 = Math.Sqrt(Math.Pow(labA.A, 2) + Math.Pow(labA.B, 2));
var c2 = Math.Sqrt(Math.Pow(labB.A, 2) + Math.Pow(labB.B, 2));
var deltaC = c1 - c2;
var deltaH = Math.Pow(deltaA,2) + Math.Pow(deltaB,2) - Math.Pow(deltaC,2);
deltaH = deltaH < 0 ? 0 : Math.Sqrt(deltaH);
const double sl = 1.0;
const double kc = 1.0;
const double kh = 1.0;
var sc = 1.0 + Constants.K1*c1;
var sh = 1.0 + Constants.K2*c1;
var i = Math.Pow(deltaL/(Constants.Kl*sl), 2) +
Math.Pow(deltaC/(kc*sc), 2) +
Math.Pow(deltaH/(kh*sh), 2);
var finalResult = i < 0 ? 0 : Math.Sqrt(i);
W „Stałe” są określane na podstawie typu aplikacji:
case Application.GraphicArts:
Kl = 1.0;
K1 = .045;
K2 = .015;
break;
case Application.Textiles:
Kl = 2.0;
K1 = .048;
K2 = .014;
break;
Ciekawe: czy ten algorytm (z określonymi stałymi) jest wolny czy opatentowany? Jak to jest nazywane? – Tim
Uważam, że to otwarty standard. Więcej informacji: http://en.wikipedia.org/wiki/Color_difference and http://en.wikipedia.org/wiki/International_Commission_on_Illumination –
Potrzebujesz implementacji odległości Delta-E lub konwersji z RGB na CIELab? bądź wystarczający? –