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