php - 使用mysql在3d中找到欧几里德距离的最有效方法是什么?

标签 php mysql algorithm math euclidean-distance

我有一个 MySQL 表,其中在 R、G、B 的 3 列中存储了数千个数据点。如何使用欧氏距离找到哪个数据点最接近给定点 (a、b、c)?

我将颜色的 RGB 值分别保存在一个表中,因此每列中的值限制为 0-255。我正在尝试做的是通过找到具有最小欧氏距离的颜色来找到最接近的颜色匹配。

显然,我可以遍历表格中的每个点来计算距离,但这样的效率不足以进行缩放。有什么想法吗?

最佳答案

我认为以上评论都是正确的,但在我看来,它们并没有回答最初的问题。 (如我错了请纠正我)。那么,让我在这里加上我的 50 美分:

您要求的是一个选择语句,假设您的表名为“颜色”,并且您的列名为 r、g 和 b,它们是范围为 0..255 的整数,并且您正在寻找值,在你的表中,最接近给定值,假设:rr,gg,bb,那么我敢尝试以下操作:

select min(sqrt((rr-r)*(rr-r)+(gg-g)*(gg-g)+(bb-b)*(bb-b))) from colors;

现在,这个答案有很多注意事项,因为我不确定我是否答对了你的问题,所以请确认它是否正确,或者纠正我以便我可以提供帮助。

关于php - 使用mysql在3d中找到欧几里德距离的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10943205/

相关文章:

注册脚本代码中的 PHP "else"和 "if"

algorithm - 轮盘赌选择算法

multithreading - 添加回调而不是使用默认实现

javascript - 使用 Javascript 中的按钮执行 PHP 脚本

php - 表单提交后从数据库中获取最后一条记录的id

mysql - 修复查询 codeigniter 模型语法错误中的错误

mysql - 如何在 MySQL 中进行递归 SELECT 查询?

java - java中hibernate查询的类名约束

c++ - 在什么情况下您应该更喜欢使用 std::copy 写入 cout?

php - PDO 成功,但什么都不返回?