0
# Colour Difference Calculations
1
2
Comprehensive colour difference calculation functions implementing various industry-standard metrics for quantifying perceptual differences between colours. These functions support CIE standard formulas, CAM-based uniform colour spaces, and advanced perceptual models.
3
4
## Capabilities
5
6
### Main Delta E Function
7
8
The primary entry point for colour difference calculations with automatic method selection and validation.
9
10
```python { .api }
11
def delta_E(a: ArrayLike, b: ArrayLike, method: str = "CIE 2000", **kwargs) -> NDArray:
12
"""
13
Calculate colour difference ΔE between two colour arrays using specified method.
14
15
Parameters:
16
- a: first colour array in appropriate colour space (L*a*b*, J'a'b', or ICtCp)
17
- b: second colour array in appropriate colour space
18
- method: calculation method, supports:
19
* "CIE 1976": CIE76 ΔE*ab (Euclidean distance in L*a*b*)
20
* "CIE 1994": CIE94 ΔE*94 with perceptual weighting
21
* "CIE 2000": CIEDE2000 ΔE*00 (default, most accurate)
22
* "CMC": CMC l:c colour difference
23
* "ITP": ITU-R BT.2124 ΔE_ITP for HDR/WCG
24
* "CAM02-LCD", "CAM02-SCD", "CAM02-UCS": CIECAM02-based
25
* "CAM16-LCD", "CAM16-SCD", "CAM16-UCS": CAM16-based
26
* "DIN99": DIN99 colour difference formula
27
- **kwargs: method-specific parameters (textiles, l, c, etc.)
28
29
Returns:
30
Colour difference values as NDArray
31
32
Notes:
33
- Input colour spaces depend on method:
34
* CIE methods: L*a*b* colour space
35
* CAM methods: J'a'b' colour space from respective appearance models
36
* ITP method: ICtCp colour encoding
37
- Values typically range 0-100+, with ~1-3 being just noticeable
38
- CIEDE2000 is recommended for most applications
39
"""
40
41
# Available calculation methods
42
DELTA_E_METHODS = {
43
"CIE 1976": delta_E_CIE1976,
44
"CIE 1994": delta_E_CIE1994,
45
"CIE 2000": delta_E_CIE2000,
46
"CMC": delta_E_CMC,
47
"ITP": delta_E_ITP,
48
"CAM02-LCD": delta_E_CAM02LCD,
49
"CAM02-SCD": delta_E_CAM02SCD,
50
"CAM02-UCS": delta_E_CAM02UCS,
51
"CAM16-LCD": delta_E_CAM16LCD,
52
"CAM16-SCD": delta_E_CAM16SCD,
53
"CAM16-UCS": delta_E_CAM16UCS,
54
"DIN99": delta_E_DIN99
55
}
56
57
# Just Noticeable Difference threshold
58
JND_CIE1976 = 2.3 # Standard JND threshold for CIE 1976
59
```
60
61
### CIE Standard Delta E Functions
62
63
Industry-standard colour difference formulas based on CIE recommendations.
64
65
```python { .api }
66
def delta_E_CIE1976(Lab_1: ArrayLike, Lab_2: ArrayLike) -> NDArray:
67
"""
68
Calculate CIE 1976 colour difference ΔE*ab (Euclidean distance in L*a*b*).
69
70
Parameters:
71
- Lab_1: first L*a*b* colour array, shape (..., 3)
72
- Lab_2: second L*a*b* colour array, shape (..., 3)
73
74
Returns:
75
CIE76 ΔE*ab values
76
77
Notes:
78
- Simple Euclidean distance: √[(ΔL*)² + (Δa*)² + (Δb*)²]
79
- Fast computation but less perceptually uniform
80
- L*: [0, 100], a*,b*: [-100, 100] in reference scale
81
- JND threshold: ~2.3 (see JND_CIE1976)
82
"""
83
84
def delta_E_CIE1994(Lab_1: ArrayLike, Lab_2: ArrayLike, textiles: bool = False) -> NDArray:
85
"""
86
Calculate CIE 1994 colour difference ΔE*94 with perceptual weighting factors.
87
88
Parameters:
89
- Lab_1: reference L*a*b* colour array, shape (..., 3)
90
- Lab_2: sample L*a*b* colour array, shape (..., 3)
91
- textiles: use textile industry parameters if True
92
93
Returns:
94
CIE94 ΔE*94 values
95
96
Notes:
97
- Improved perceptual uniformity over CIE76
98
- Non-symmetric: delta_E_CIE1994(a,b) ≠ delta_E_CIE1994(b,a)
99
- Textile parameters: kL=2, kC=kH=1, k1=0.048, k2=0.014
100
- Graphic arts parameters: kL=kC=kH=1, k1=0.045, k2=0.015 (default)
101
"""
102
103
def delta_E_CIE2000(Lab_1: ArrayLike, Lab_2: ArrayLike, textiles: bool = False) -> NDArray:
104
"""
105
Calculate CIEDE2000 colour difference ΔE*00, the most accurate CIE standard.
106
107
Parameters:
108
- Lab_1: first L*a*b* colour array, shape (..., 3)
109
- Lab_2: second L*a*b* colour array, shape (..., 3)
110
- textiles: use textile industry weighting (kL=2) if True
111
112
Returns:
113
CIEDE2000 ΔE*00 values
114
115
Notes:
116
- Most perceptually uniform CIE formula (recommended default)
117
- Accounts for perceptual non-uniformities in L*a*b* space
118
- Reference conditions: D65, 1000 lx, uniform gray background L*=50
119
- Includes rotation term for interaction between chroma and hue
120
- Sample size >4°, direct edge contact, ΔE < 5.0
121
"""
122
123
def delta_E_CMC(Lab_1: ArrayLike, Lab_2: ArrayLike, l: float = 2, c: float = 1) -> NDArray:
124
"""
125
Calculate CMC l:c colour difference with configurable lightness/chroma weighting.
126
127
Parameters:
128
- Lab_1: reference L*a*b* colour array, shape (..., 3)
129
- Lab_2: sample L*a*b* colour array, shape (..., 3)
130
- l: lightness weighting factor (2 for acceptability, 1 for perceptibility)
131
- c: chroma weighting factor (typically 1)
132
133
Returns:
134
CMC ΔE values
135
136
Notes:
137
- Common ratios: 2:1 (acceptability), 1:1 (threshold of imperceptibility)
138
- Developed by Colour Measurement Committee
139
- Good correlation with visual assessments
140
- Non-symmetric like CIE94
141
"""
142
```
143
144
### Advanced Colour Difference Functions
145
146
Modern colour difference metrics for HDR, wide gamut, and specialized applications.
147
148
```python { .api }
149
def delta_E_ITP(ICtCp_1: ArrayLike, ICtCp_2: ArrayLike) -> NDArray:
150
"""
151
Calculate ITU-R BT.2124 ΔE_ITP for HDR and wide colour gamut applications.
152
153
Parameters:
154
- ICtCp_1: first ICtCp colour encoding array, shape (..., 3)
155
- ICtCp_2: second ICtCp colour encoding array, shape (..., 3)
156
157
Returns:
158
ΔE_ITP values (1.0 ≈ just noticeable difference)
159
160
Notes:
161
- Designed for HDR/WCG content (Rec.2020, HDR10, Dolby Vision)
162
- Value of 1.0 equals just noticeable difference in critical adaptation
163
- Uses ICtCp encoding: I (intensity), Ct (chroma-red), Cp (chroma-yellow)
164
- Optimized for high dynamic range and wide color gamut displays
165
"""
166
167
def delta_E_DIN99(Lab_1: ArrayLike, Lab_2: ArrayLike, textiles: bool = False) -> NDArray:
168
"""
169
Calculate DIN99 colour difference using DIN99 colour space transformation.
170
171
Parameters:
172
- Lab_1: first L*a*b* colour array, shape (..., 3)
173
- Lab_2: second L*a*b* colour array, shape (..., 3)
174
- textiles: use textile parameters (kE=2, kCH=0.5) if True
175
176
Returns:
177
DIN99 ΔE values
178
179
Notes:
180
- Based on DIN99 colour space with improved perceptual uniformity
181
- Standard parameters: kE=1, kCH=1
182
- Textile parameters: kE=2, kCH=0.5
183
- Often shows better correlation than CIELAB-based formulas
184
"""
185
```
186
187
### CAM02-Based Colour Difference Functions
188
189
Colour difference calculations in uniform colour spaces derived from CIECAM02 appearance model.
190
191
```python { .api }
192
def delta_E_CAM02LCD(Jpapbp_1: ArrayLike, Jpapbp_2: ArrayLike) -> NDArray:
193
"""
194
Calculate colour difference in CAM02-LCD uniform colour space.
195
196
Parameters:
197
- Jpapbp_1: first J'a'b' array from CAM02-LCD space, shape (..., 3)
198
- Jpapbp_2: second J'a'b' array from CAM02-LCD space, shape (..., 3)
199
200
Returns:
201
CAM02-LCD ΔE' values
202
203
Notes:
204
- LCD: Large Colour Differences - optimized for large colour differences
205
- Input must be CAM02-LCD J'a'b', not CIE L*a*b*
206
- Based on CIECAM02 appearance model for better perceptual uniformity
207
- Lightness scaling factor KL accounts for perceptual non-linearities
208
"""
209
210
def delta_E_CAM02SCD(Jpapbp_1: ArrayLike, Jpapbp_2: ArrayLike) -> NDArray:
211
"""
212
Calculate colour difference in CAM02-SCD uniform colour space.
213
214
Parameters:
215
- Jpapbp_1: first J'a'b' array from CAM02-SCD space, shape (..., 3)
216
- Jpapbp_2: second J'a'b' array from CAM02-SCD space, shape (..., 3)
217
218
Returns:
219
CAM02-SCD ΔE' values
220
221
Notes:
222
- SCD: Small Colour Differences - optimized for small colour differences
223
- Input must be CAM02-SCD J'a'b', not CIE L*a*b*
224
- Different coefficients than CAM02-LCD for improved small difference detection
225
- Useful for quality control and fine colour matching
226
"""
227
228
def delta_E_CAM02UCS(Jpapbp_1: ArrayLike, Jpapbp_2: ArrayLike) -> NDArray:
229
"""
230
Calculate colour difference in CAM02-UCS uniform colour space.
231
232
Parameters:
233
- Jpapbp_1: first J'a'b' array from CAM02-UCS space, shape (..., 3)
234
- Jpapbp_2: second J'a'b' array from CAM02-UCS space, shape (..., 3)
235
236
Returns:
237
CAM02-UCS ΔE' values
238
239
Notes:
240
- UCS: Uniform Colour Space - balanced for various difference magnitudes
241
- Input must be CAM02-UCS J'a'b', not CIE L*a*b*
242
- Compromise between LCD and SCD optimization
243
- General purpose CAM02-based colour difference metric
244
"""
245
```
246
247
### CAM16-Based Colour Difference Functions
248
249
Next-generation colour difference calculations based on the improved CAM16 appearance model.
250
251
```python { .api }
252
def delta_E_CAM16LCD(Jpapbp_1: ArrayLike, Jpapbp_2: ArrayLike) -> NDArray:
253
"""
254
Calculate colour difference in CAM16-LCD uniform colour space.
255
256
Parameters:
257
- Jpapbp_1: first J'a'b' array from CAM16-LCD space, shape (..., 3)
258
- Jpapbp_2: second J'a'b' array from CAM16-LCD space, shape (..., 3)
259
260
Returns:
261
CAM16-LCD ΔE' values
262
263
Notes:
264
- Based on improved CAM16 appearance model
265
- LCD: Large Colour Differences optimization
266
- Input must be CAM16-LCD J'a'b', not CIE L*a*b*
267
- Successor to CAM02-LCD with improved predictions
268
"""
269
270
def delta_E_CAM16SCD(Jpapbp_1: ArrayLike, Jpapbp_2: ArrayLike) -> NDArray:
271
"""
272
Calculate colour difference in CAM16-SCD uniform colour space.
273
274
Parameters:
275
- Jpapbp_1: first J'a'b' array from CAM16-SCD space, shape (..., 3)
276
- Jpapbp_2: second J'a'b' array from CAM16-SCD space, shape (..., 3)
277
278
Returns:
279
CAM16-SCD ΔE' values
280
281
Notes:
282
- Based on improved CAM16 appearance model
283
- SCD: Small Colour Differences optimization
284
- Input must be CAM16-SCD J'a'b', not CIE L*a*b*
285
- Better small difference detection than CAM02-SCD
286
"""
287
288
def delta_E_CAM16UCS(Jpapbp_1: ArrayLike, Jpapbp_2: ArrayLike) -> NDArray:
289
"""
290
Calculate colour difference in CAM16-UCS uniform colour space.
291
292
Parameters:
293
- Jpapbp_1: first J'a'b' array from CAM16-UCS space, shape (..., 3)
294
- Jpapbp_2: second J'a'b' array from CAM16-UCS space, shape (..., 3)
295
296
Returns:
297
CAM16-UCS ΔE' values
298
299
Notes:
300
- Based on improved CAM16 appearance model
301
- UCS: Uniform Colour Space - general purpose optimization
302
- Input must be CAM16-UCS J'a'b', not CIE L*a*b*
303
- State-of-the-art appearance-based colour difference metric
304
"""
305
```
306
307
### Performance Enhancement Functions
308
309
Advanced functions for improving colour difference formula performance and correlation with visual assessment.
310
311
```python { .api }
312
def power_function_Huang2015(d_E: ArrayLike, coefficients: str = "CIE 2000") -> NDArray:
313
"""
314
Apply Huang et al. (2015) power function to improve ΔE formula performance.
315
316
Parameters:
317
- d_E: computed colour difference array
318
- coefficients: power function coefficients for specific method:
319
* "CIE 1976": [1.26, 0.55]
320
* "CIE 1994": [1.41, 0.70]
321
* "CIE 2000": [1.43, 0.70] (default)
322
* "CMC": [1.34, 0.66]
323
* "CAM02-LCD": [1.00, 0.85]
324
* "CAM02-SCD": [1.45, 0.75]
325
* "CAM02-UCS": [1.30, 0.75]
326
* "CAM16-UCS": [1.41, 0.63]
327
* "DIN99d": [1.28, 0.74]
328
* "OSA": [3.32, 0.62]
329
* "OSA-GP-Euclidean": [1.52, 0.76]
330
* "ULAB": [1.17, 0.69]
331
332
Returns:
333
Improved ΔE values with better correlation to visual assessment
334
335
Notes:
336
- Formula: ΔE' = a × ΔE^b where [a,b] are method-specific coefficients
337
- Significantly improves correlation with visual datasets
338
- Apply after computing base ΔE with standard formulas
339
- Coefficients derived from extensive psychophysical experiments
340
"""
341
342
# Available power function coefficients
343
COEFFICIENTS_HUANG2015 = {
344
"CIE 1976": [1.26, 0.55],
345
"CIE 1994": [1.41, 0.70],
346
"CIE 2000": [1.43, 0.70],
347
"CMC": [1.34, 0.66],
348
"CAM02-LCD": [1.00, 0.85],
349
"CAM02-SCD": [1.45, 0.75],
350
"CAM02-UCS": [1.30, 0.75],
351
"CAM16-UCS": [1.41, 0.63],
352
"DIN99d": [1.28, 0.74],
353
"OSA": [3.32, 0.62],
354
"OSA-GP-Euclidean": [1.52, 0.76],
355
"ULAB": [1.17, 0.69]
356
}
357
```
358
359
### Stress Index Functions
360
361
Statistical measures for evaluating colour difference formula performance against visual datasets.
362
363
```python { .api }
364
def index_stress(d_E: ArrayLike, d_V: ArrayLike, method: str = "Garcia 2007") -> NDArray:
365
"""
366
Calculate Kruskal's Standardized Residual Sum of Squares (STRESS) index.
367
368
Parameters:
369
- d_E: computed colour difference array ΔE
370
- d_V: visual colour difference array ΔV from psychophysical experiments
371
- method: computation method ("Garcia 2007")
372
373
Returns:
374
STRESS index values (lower = better correlation)
375
376
Notes:
377
- Measures goodness-of-fit between computed and visual differences
378
- Values closer to 0 indicate better correlation with human vision
379
- Used to evaluate and compare colour difference formulas
380
- Essential for psychophysical validation of new metrics
381
"""
382
383
def index_stress_Garcia2007(d_E: ArrayLike, d_V: ArrayLike) -> NDArray:
384
"""
385
Calculate STRESS index using Garcia et al. (2007) method.
386
387
Parameters:
388
- d_E: computed colour difference array ΔE
389
- d_V: visual colour difference array ΔV
390
391
Returns:
392
STRESS index value
393
394
Notes:
395
- Standard implementation for colour difference evaluation
396
- Used in research for validating new colour difference formulas
397
- Lower values indicate better correlation with visual assessment
398
"""
399
400
# Available stress index methods
401
INDEX_STRESS_METHODS = {
402
"Garcia 2007": index_stress_Garcia2007
403
}
404
```
405
406
## Usage Examples
407
408
### Basic Colour Difference Calculation
409
410
```python
411
import numpy as np
412
from colour import delta_E
413
414
# CIE L*a*b* colour arrays
415
lab1 = np.array([50.0, 20.0, -30.0]) # Reference colour
416
lab2 = np.array([55.0, 18.0, -25.0]) # Sample colour
417
418
# Calculate CIEDE2000 (recommended)
419
de2000 = delta_E(lab1, lab2, method="CIE 2000")
420
print(f"CIEDE2000 ΔE: {de2000:.2f}")
421
422
# Compare different methods
423
de76 = delta_E(lab1, lab2, method="CIE 1976")
424
de94 = delta_E(lab1, lab2, method="CIE 1994")
425
decmc = delta_E(lab1, lab2, method="CMC")
426
427
print(f"CIE76 ΔE: {de76:.2f}")
428
print(f"CIE94 ΔE: {de94:.2f}")
429
print(f"CMC ΔE: {decmc:.2f}")
430
```
431
432
### Textile Industry Application
433
434
```python
435
# Textile-specific parameters for closer tolerances
436
de2000_textiles = delta_E(lab1, lab2, method="CIE 2000", textiles=True)
437
de94_textiles = delta_E(lab1, lab2, method="CIE 1994", textiles=True)
438
din99_textiles = delta_E(lab1, lab2, method="DIN99", textiles=True)
439
440
print(f"CIEDE2000 (textiles): {de2000_textiles:.2f}")
441
print(f"CIE94 (textiles): {de94_textiles:.2f}")
442
print(f"DIN99 (textiles): {din99_textiles:.2f}")
443
```
444
445
### HDR/WCG Content
446
447
```python
448
# ICtCp colour encoding for HDR content
449
ictcp1 = np.array([0.4885, -0.0474, 0.0748]) # HDR colour 1
450
ictcp2 = np.array([0.4899, -0.0457, 0.0736]) # HDR colour 2
451
452
# Calculate ΔE_ITP for HDR applications
453
de_itp = delta_E(ictcp1, ictcp2, method="ITP")
454
print(f"ΔE_ITP: {de_itp:.3f}") # ~1.0 = just noticeable
455
```
456
457
### CAM-Based Advanced Metrics
458
459
```python
460
from colour import XYZ_to_CAM16UCS
461
462
# Convert XYZ to CAM16-UCS J'a'b' space first
463
xyz1 = np.array([0.20654008, 0.12197225, 0.05136952])
464
xyz2 = np.array([0.14222010, 0.06157513, 0.06157513])
465
466
# Convert to CAM16-UCS space
467
jpapbp1 = XYZ_to_CAM16UCS(xyz1)
468
jpapbp2 = XYZ_to_CAM16UCS(xyz2)
469
470
# Calculate CAM16-based differences
471
de_cam16_ucs = delta_E(jpapbp1, jpapbp2, method="CAM16-UCS")
472
de_cam16_lcd = delta_E(jpapbp1, jpapbp2, method="CAM16-LCD")
473
de_cam16_scd = delta_E(jpapbp1, jpapbp2, method="CAM16-SCD")
474
475
print(f"CAM16-UCS ΔE': {de_cam16_ucs:.3f}")
476
print(f"CAM16-LCD ΔE': {de_cam16_lcd:.3f}")
477
print(f"CAM16-SCD ΔE': {de_cam16_scd:.3f}")
478
```
479
480
### Performance Enhancement
481
482
```python
483
from colour import power_function_Huang2015
484
485
# Calculate base ΔE and apply Huang2015 enhancement
486
base_de = delta_E(lab1, lab2, method="CIE 2000")
487
enhanced_de = power_function_Huang2015(base_de, coefficients="CIE 2000")
488
489
print(f"Base CIEDE2000: {base_de:.3f}")
490
print(f"Enhanced: {enhanced_de:.3f}")
491
492
# Enhancement for other methods
493
de_cmc_base = delta_E(lab1, lab2, method="CMC")
494
de_cmc_enhanced = power_function_Huang2015(de_cmc_base, coefficients="CMC")
495
496
print(f"Base CMC: {de_cmc_base:.3f}")
497
print(f"Enhanced CMC: {de_cmc_enhanced:.3f}")
498
```
499
500
### Quality Assessment
501
502
```python
503
from colour import index_stress
504
505
# Simulated data for evaluation
506
computed_de = np.array([2.04, 2.86, 3.44, 1.75, 4.12]) # Calculated ΔE
507
visual_de = np.array([1.26, 1.26, 1.87, 1.15, 2.34]) # Visual assessment
508
509
# Calculate STRESS index
510
stress = index_stress(computed_de, visual_de)
511
print(f"STRESS index: {stress:.4f}") # Lower = better correlation
512
```
513
514
### Batch Processing
515
516
```python
517
# Multiple colour pairs
518
lab_refs = np.array([[50, 20, -30], [60, -15, 25], [40, 10, -20]])
519
lab_samples = np.array([[52, 18, -28], [58, -12, 28], [42, 12, -18]])
520
521
# Calculate all differences at once
522
de_batch = delta_E(lab_refs, lab_samples, method="CIE 2000")
523
print("Batch CIEDE2000 results:", de_batch)
524
525
# Apply enhancement to batch
526
enhanced_batch = power_function_Huang2015(de_batch, coefficients="CIE 2000")
527
print("Enhanced results:", enhanced_batch)
528
```
529
530
## Method Selection Guidelines
531
532
### Recommended Methods by Application
533
534
**General Purpose (Recommended)**
535
- **CIEDE2000**: Best overall perceptual uniformity, CIE standard
536
- **Enhanced CIEDE2000**: Apply `power_function_Huang2015` for improved correlation
537
538
**Industry-Specific**
539
- **Textiles**: CIE 1994, CIEDE2000, or DIN99 with `textiles=True`
540
- **Printing/Graphics**: CIEDE2000, CMC 2:1, enhanced with Huang2015
541
- **HDR/Broadcasting**: ΔE_ITP for HDR content, CIEDE2000 for SDR
542
- **Research**: CAM16-UCS for appearance-based studies
543
544
**Performance vs. Accuracy Trade-offs**
545
- **Fastest**: CIE 1976 (simple Euclidean distance)
546
- **Balanced**: CIE 1994, CMC
547
- **Most Accurate**: CIEDE2000, CAM16-UCS
548
- **HDR/WCG**: ΔE_ITP
549
550
### Perceptual Significance
551
552
**ΔE Value Interpretation (approximate guidelines)**
553
- **0-1**: Imperceptible difference
554
- **1-2**: Perceptible by expert observers
555
- **2-3.5**: Perceptible by untrained observers
556
- **3.5-5**: Clear difference
557
- **5+**: Very different colours
558
559
**Important Notes**
560
- Thresholds vary by viewing conditions, colour region, and application
561
- Textile/printing industries often use tighter tolerances
562
- HDR content may have different perceptual thresholds
563
- Always validate with visual assessment for critical applications
564
565
## Constants and Datasets
566
567
```python { .api }
568
# Just Noticeable Difference threshold
569
JND_CIE1976 = 2.3 # Standard JND for CIE 1976 ΔE*ab
570
571
# Available calculation methods
572
DELTA_E_METHODS = {
573
"CIE 1976", "CIE 1994", "CIE 2000", "CMC", "ITP",
574
"CAM02-LCD", "CAM02-SCD", "CAM02-UCS",
575
"CAM16-LCD", "CAM16-SCD", "CAM16-UCS", "DIN99"
576
}
577
578
# Power function enhancement coefficients
579
COEFFICIENTS_HUANG2015 = {
580
"CIE 1976": [1.26, 0.55], "CIE 1994": [1.41, 0.70],
581
"CIE 2000": [1.43, 0.70], "CMC": [1.34, 0.66],
582
"CAM02-LCD": [1.00, 0.85], "CAM02-SCD": [1.45, 0.75],
583
"CAM02-UCS": [1.30, 0.75], "CAM16-UCS": [1.41, 0.63],
584
"DIN99d": [1.28, 0.74], "OSA": [3.32, 0.62],
585
"OSA-GP-Euclidean": [1.52, 0.76], "ULAB": [1.17, 0.69]
586
}
587
588
# Stress index evaluation methods
589
INDEX_STRESS_METHODS = {"Garcia 2007": index_stress_Garcia2007}
590
```
591
592
The colour difference module provides comprehensive tools for quantifying perceptual colour differences across various applications, from quality control to psychophysical research, with state-of-the-art formulas and performance enhancements.