or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

advanced-features.mdchromatic-adaptation.mdcolorimetry.mdcolour-appearance.mdcolour-difference.mdcolour-models.mdconstants.mdgeometry.mdindex.mdinput-output.mdmath-utilities.mdnotation.mdplotting.mdquality-assessment.mdtemperature.md

colour-difference.mddocs/

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.