Có một mã nguồn mở C# thực hiện công thức CIE94 bạn cung cấp:
https://github.com/THEjoezack/ColorMine/blob/master/ColorMine/ColorSpaces/Comparisons/Cie94Comparison.cs
Nó yêu cầu màu sắc của bạn ở trong không gian màu LAB, nguồn chuyển đổi trong cùng một thư viện nếu cần.
Bạn cũng có thể check your cIE94 calculations online sử dụng cùng một thư viện.
Sau đây là đoạn có liên quan của mã, LABA và labB là đầu vào:
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);
Các "hằng" được định nghĩa dựa trên loại ứng dụng của bạn:
case Application.GraphicArts:
Kl = 1.0;
K1 = .045;
K2 = .015;
break;
case Application.Textiles:
Kl = 2.0;
K1 = .048;
K2 = .014;
break;
Nguồn
2013-08-24 02:43:36
Không quan tâm: Thuật toán này (với các hằng số được chỉ định) miễn phí hoặc được cấp bằng sáng chế? Đó là những gì được gọi là? – Tim
Tôi tin rằng đó là một tiêu chuẩn mở. Thông tin thêm: http://en.wikipedia.org/wiki/Color_difference và http://en.wikipedia.org/wiki/International_Commission_on_Illumination –
Bạn có cần triển khai khoảng cách Delta-E hay chuyển đổi từ RGB sang CIELab đầy đủ? –