0

我有一个调色板,要么是 32 要么是 256。然后我有一个输入颜色流(在 RGB 中)。我想找出传入颜色与调色板中的哪种颜色最匹配。我相信这种算法被用于许多图像编辑软件中。

到目前为止,我想出了以下内容:

  1. distance对于每种传入的颜色,通过找出与调色板中每种颜色的距离,找到调色板中最小的颜色。
  2. 为了找到距离,以下方法之一:
    1. R、G 和 B 值差的平方和 ( (R1-R2)² + (G1-G2)² + (B1-B2)²)
    2. 将颜色转换为 HSV,使用 H、S 和 V 值的加权平均值作为距离指标。就像是3 ✕ (H1-H2)² + 2 ✕ (S1-S2)² + (V1-V2)²
    3. YCbCr 距离

我特别在寻找两件事。

  1. 有没有比检查调色板中每种颜色的距离更好的方法?我正在寻找某种分箱算法来从调色板中找到正确的颜色。
  2. 如果坚持检查调色板中每个项目的距离,是否有标准公式被认为是标准的?
4

1 回答 1

0

通常,答案取决于您为什么要这样做。

如果目标是最小化数值近似误差,则可以使用平方差之和(或绝对差的最大值)。

我会弃权和任意公式,例如某些色度空间中差异的加权和,它没有精确的理由并且难以解释。

如果您想让图像尽可能地与人眼的原始图像相似,您可以使用“感知一致”度量,例如 CIELAB ΔE*。无论如何,在我个人看来,这样的指标过于复杂,并没有带来什么好处。如果有的话,您只会看到与调色板中的颜色相距甚远的颜色差异。

于 2020-08-04T13:52:20.780 回答