如MageMagick 论坛中所述,如果欧几里得距离低于 R ,则颜色在颜色B
的模糊范围内:R
A
sqrt((B.r - A.r)^2 + (B.g - A.g)^2 + (B.b - A.b)^2) < R
r
,g
并b
代表颜色各自的红色、蓝色和绿色值。
如果你没有透明度,就是这样。如果确实需要考虑透明度,则必须先将颜色乘以它们各自的 Alpha 通道值,然后才能在公式中使用它们。
在 3 维 RGB 颜色空间中,某种颜色的模糊范围内的颜色确实形成了一个(半径为R
)的球体。
要再次检查数据库中的点,您只需使用公式检查它们是否在球体内。
关于颜色范围:由于一个维度的“模糊”(=在模糊范围内:-))颜色的范围取决于其他二维中的位置,因此您唯一可以生成的是围绕模糊球体的封闭立方体。这不会为您提供正确的颜色,但您可以使用它来拒绝位于立方体之外的所有颜色。这个立方体的范围是:
(A.r - R) <= B.r <= (A.r + R)
(A.g - R) <= B.g <= (A.g + R)
(A.b - R) <= B.b <= (A.b + R)
更新:
这是计算的代码参考。它看起来有点复杂,但那是因为它还必须处理 CMYK 颜色。对于 RGB,它减少到上述情况。