知覚を考慮した色差 CIEDE2000 とその実装
色差の指標 CIEDE2000
色差、つまり2つの色の距離を計算する方法はいくつかあるが、人間の知覚を考慮した指標である CIEDE2000 を用いるのが良いことが多い。
知覚を考慮しているとは、例えば人間にとって見分けのつきにくい色同士は (たとえ RGB の値が遠くても) 距離が近く、人間にとって見分けのつきやすい色同士は距離が遠くなるように設計されていることを意味している。
CIEDE2000 の数式
具体的な数式は複雑だが、下記文献を参照すると実装はそれほど難しくない。計算は CIELAB 色空間に基づいている。詳細は割愛する。
- Sharma, G., Wu, W., & Dalal, E. N. (2005). The CIEDE2000 color‐difference formula: Implementation notes, supplementary test data, and mathematical observations. Color Research & Application, 30(1), 21-30. https://onlinelibrary.wiley.com/doi/full/10.1002/col.20070
CIEDE2000 の実装
下記の GitHub レポジトリに CIEDE2000 の実装を公開した。なお、CIEDE2000 の計算に必要な色空間の変換(RGB から CIELAB へ)も実装に含まれている。C++11 で記述している。Header-only ライブラリとして利用可能になっている。ライセンスは MIT License とした。
他の色差計算手法との比較
RGB 色空間におけるユークリッド距離
これは色の距離を測る際の最も単純な方法の一つであり、しばしば用いられる。冒頭の図でも CIEDE2000 の結果との比較のために用いた。次の式で色差が計算される。
しかし、この指標は人間の知覚特性を考慮していない。
CIELAB 色空間におけるユークリッド距離
人間の知覚を考慮するために、RGB 色空間ではなく CIELAB 色空間におけるユークリッド距離を用いる方法があり、これもしばしば用いられる。なお、CIELAB 色空間とはここではCIE 1976 (L*, a*, b*) 色空間を指す。単に Lab 色空間とも呼ばれる。次の式で色差が計算される。
なお、この色差の指標は CIE76 とも呼ばれる。
設計された当時、CIE76 は人間の知覚をよく反映した指標だとということになっていたようだが、それでもやはり人間の知覚特性を完全に再現できているわけではない。後により精度が高いとされる指標が提案されることになり、現在では CIEDE2000 が人間の知覚をよく反映した指標だということになっている。