Color difference(wikipedia)で公開されているCIE76の色差計算式をJavaScriptで書いてみました
wikipediaで公開されている計算式は以下のとおりです。
(「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))
)
です。