0
我正在研究一個程序,我試圖找到兩個LaB顏色之間的歐幾里得距離。我想知道他們的方式,我計算兩者之間的距離是正確的。下面是我在做什麼:計算兩個LaB顏色之間的距離Java
public static void main(String[] args) {
double[] lab = {58.974604845047, 15.037506818771362, -64.0113115310669}; //blue
double[] lab1 = {58.701420307159424, 14.014512300491333, -64.46481943130493};//blue
double distance = euclideanDistance(lab, lab1);
System.out.println("Lab: " + distance);
}
private static double euclideanDistance(double[] lab , double []lab1){
//L = 0 - 100 range
//A = -86.185 - 98.254 range
//B = 107.863 - 94.482 range
double Lmean = (lab[0] + lab1[0])/2;
double L = lab[0] - lab1[0];
double A = lab[1] - lab1[1];
double B = lab[2] - lab1[2];
double weightL = 2 + Lmean /100;
double weightA = 4.0;
double weightB = 2 + (107.863 - Lmean)/100;
return Math.sqrt(weightL * L * L + weightA * A * A + weightB * B * B);
}
[維基百科(https://en.wikipedia.org/wiki/Lab_color_space)表示:「...以L \任何兩種顏色之間的相對感知差異* A * B \ *可以近似通過將每種顏色視爲三維空間中的一個點(具有三個分量:L \ *,a \ *,b \ *)並將它們之間的歐幾里德距離對待「 - 因此我假設您正在嘗試做的是。如果是的話,那麼它應該是兩點之間的簡單距離,並且有很多關於這些工作如何工作的描述(供您檢查)。 – Thomas
啊好的謝謝@Thomas – ProgrammingCuber