Edited at

JavaScriptでCIE76色差計算

More than 1 year has passed since last update.

Color difference(wikipedia)で公開されているCIE76の色差計算式をJavaScriptで書いてみました

wikipediaで公開されている計算式は以下のとおりです。


CIE76

(「Color difference」(5 Feb 2017, at 02:30. UTC)『ウィキペディア』より引用)


計算式そのものはシンプルなのでJavaScriptで色差計算(ユークリッド)のプログラムとほとんど差はありません。


cie76

function cie76(L1,a1,b1, L2,a2,b2) {

return Math.sqrt(
Math.pow(L2 - L1, 2) +
Math.pow(a2 - a1, 2) +
Math.pow(b2 - b1, 2)
);
}

しかし実行するにはRGBではなくLab色空間での値が必要となるため、実際に使う際はRGBからLabへ変換してから呼び出す必要があります。

JavaScriptでRGBからLab色空間へ変換するプログラムはJavaScriptでRGBからLab色空間への変換で公開していますので、それを使って以下のような感じでRGBをLabに変換してから呼び出す必要があります。

var [L1, a1, b1] = rgbToLab(r1, g1, b1);

var [L2, a2, b2] = rgbToLab(r2, g2, b2);
distance = cie76(L1,a1,b1, L2,a2,b2);

または

distance = cie76.apply(this, 

rgbToLab(r1,g1,b1).concat(rgbToLab(r2,g2,b2))
)

です。


関連リンク