Ich arbeite an einem Programm, wo ich versuche, den euklidischen Abstand zwischen zwei LaB Farben zu finden. Ich habe mich gefragt, ob ich den Abstand zwischen den beiden richtig berechnen kann. Hier ist, was ich tue:Berechnung der Entfernung zwischen zwei LaB Farben 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);
}
[Wikipedia] (https://en.wikipedia.org/wiki/Lab_color_space) sagt: "... die relative Wahrnehmungsunterschiede zwischen zwei beliebigen Farben in L \ * a * b \ * angenähert werden kann indem wir jede Farbe als einen Punkt in einem dreidimensionalen Raum behandeln (mit drei Komponenten: L \ *, a \ *, b \ *) und den euklidischen Abstand zwischen ihnen nehmen "- also nehme ich an, dass Sie das versuchen . Wenn ja, dann sollte es eine einfache Entfernung zwischen zwei Punkten sein und es gibt viele Beschreibungen darüber, wie diese funktionieren (für Sie zu überprüfen). – Thomas
ah in Ordnung danke @Thomas – ProgrammingCuber