CIEDE2000 implementation in Microsoft Excel
| Number of visits | 1 081 |
|---|---|
| Number of files viewed | 161 + 606 |
Here we present an Excel spreadsheet that implements the CIEDE2000 color difference using a native single-line formula, without the need for macros or VBA. The implementation is scientifically validated and includes test pairs for formulations by Gaurav Sharma and Bruce Lindbloom. A total of 18 ΞE00 values are calculated on separate lines in two tables (9 for Sharma and 9 for Lindbloom). The formula takes special cases into account, e.g. "atan2(0, 0)" is managed in the S and T columns, to ensure consistent mathematical behavior. The algorithm is robustly transcribed and the final CIEDE2000 result is accurate to at least 10 decimal places, as confirmed behind the scenes by implementations in MATLAB (Sharma) and JavaScript (Lindbloom) on 10,000 color pairs. The parametric factors kL, kC and kH (columns G, H and I) have been carefully tested and can be adjusted row by row. The complete formula is stored in hidden columns (L to AM), while the result ΞE2000 appears in column J. The K column contains a static test that must be deleted after being read. Column AN (rightmost) is grayed out to make it easier for you to expand the formula. Each line can be copied, pasted or moved down to extend calculations, while retaining its autonomy.
The file is supplied in simple XLS format (Excel 97-2003), and uses only ASCII characters for maximum compatibility. You can take advantage of it wherever classic Excel files are accepted, such as on Google Sheets. This colorimetric solution is aimed at professionals such as Fogra and X-Rite, and of course anyone who wants to evaluate ΞE00s accurately and portably.
Source code accuracy and reliability
The difference between Sharmaβs academic formulation and Lindbloomβs simplified formulation does not exceed Β±0.0003 on the final ΞE2000. The implementation presented here is 64-bit and guarantees more than 10 decimal places of precision; the choice of one formulation over another is, therefore, a technical detail.
How to determine if a given implementation of CIEDE2000 is academic or simplified?
- Evaluate
ciede_2000(56.6, 43.6, 41.1, 68.4, 9.4, -8.6) - If the result is
30.0001, then it is the academic type (such as Sharma, OpenJDK, etc.) - If the result is
29.9999, then it is the simplified type (such as Lindbloom, Netflix VMAF, etc.)
CIELAB value ranges and interpretation of the ΞE2000
In the CIELAB color space, the L* component represents lightness and typically ranges from 0 (black) to 100 (white). The a* and b* components represent color axes: a* goes from green to red, while b* goes from blue to yellow. In practice, the values of a* and b* are almost always limited to a range between -128 and +127, although the standard does not specify an official limit for these two components.
| Color 1 | Color 2 | Value of ΞE2000 |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 |
| Color 1 | Color 2 | Value of ΞE2000 |
|---|---|---|
| 5 | ||
| 10 | ||
| 15 |
ΞE2000 (CIEDE2000) measures the perceived difference between two colors: 0 means the colors are identical, and higher values (up to 185 and more) indicate a larger difference. For example, a ΔE2000 value around 5 means the colors are close, while a value around 15 means they are clearly different. When the ΔE2000 value exceeds 40, the colors being compared have virtually nothing in common, and we can no longer derive any precise information from them.
Files to download
Feel free to use these files provided by Michel, even for commercial purposes.
| File | Size | Number of clicks |
|---|---|---|
| ciede-2000.xls | 35 KB | 161 |
| reference-dataset.txt | 4 KB | 606 |
| Click on xls.zip to receive all these files in an archive. | ||
Community
What do you think of this source code or CIEDE2000? Your opinion is important to us! The guestbook already contains 9 messages - including 1 in English. Take a look and share your opinion.