sou*_*php 11 php mysql algorithm math euclidean-distance
我有一个MySQL表,其中有数千个数据点存储在3列R,G,B中.如何使用欧几里德距离找到哪个数据点最接近给定点(a,b,c)?
我在表格中单独保存RGB颜色值,因此每列中的值限制为0-255.我想要做的是通过找到欧氏距离最小的颜色找到最接近的颜色匹配.
我显然可以通过表格中的每个点来计算距离,但这不足以扩展.有任何想法吗?
这是我在 SQL 方面的想法。r0、g0、b0代表目标颜色。该表Vector将保存上面#2 中提到的平方值。此解决方案将访问所有记录,但可以通过排序并仅选择第一行将结果集设置为 1。
select
c.r, c.g, c.b,
mR.dist + mG.dist + mB.dist as squared_dist
from
colors c,
vector mR,
vector mG,
vector mB
where
c.r-r0 = mR.point and
c.g-g0 = mG.point and
c.b-b0 = mB.point
group by
c.r, c.g, c.b
Run Code Online (Sandbox Code Playgroud)