gpt4 book ai didi

java - 计算两种LaB颜色之间的距离Java

转载 作者:行者123 更新时间:2023-12-02 02:38:53 28 4
gpt4 key购买 nike

我正在开发一个程序,试图找到两种 LaB 颜色之间的欧几里德距离。我想知道我计算两者之间距离的方式是否正确。这是我正在做的事情:

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);
}

最佳答案

因此,对于任何想知道两个实验室值之间的欧氏距离是否存在细微差别的人来说,事实并非如此。正如wiki所述

... the relative perceptual differences between any two colors in Lab* can be approximated by treating each color as a point in a three-dimensional space (with three components: L, a, b*) and taking the Euclidean distance between them

这个问题的解决方案是这样的。

private  double euclideanDistance(double[] lab , double []lab1){
double L = lab[0] - lab1[0];
double A = lab[1] - lab1[1];
double B = lab[2] - lab1[2];
return Math.sqrt((L * L) + (A * A) + (B * B));
}

关于java - 计算两种LaB颜色之间的距离Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45821450/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com