【问题标题】:Color Remapping - Matching target palette using a 3D grid?颜色重新映射 - 使用 3D 网格匹配目标调色板?
【发布时间】:2011-03-09 18:15:34
【问题描述】:

假设我有颜色“FOO”,它以 RGB 格式存储。我需要重新着色“FOO”,使其与颜色列表中最接近的颜色匹配。即时执行此操作,我不能将每种颜色的 RGB 值视为 3D 网格(r=x、g=y、b=z)上的点并计算点“FOO”与每个点之间的距离吗?列表中的颜色?

最接近“FOO”的点是替换颜色?

【问题讨论】:

  • 这是一个有趣的想法(欧几里得距离作为颜色“距离”),但判断是否将颜色解释为几何形状的唯一方法是尝试它。我以前没听说过这个,但我想听听结果如何。如果你有两个与源点等距的点,你会怎么做?这两种等距的颜色可能彼此非常不同。你如何选择重新映射到哪个?
  • 我希望我能尝试一下,我在工作,我的计算设备是笔记本和纸、我的手机、计算器和收银机。我记下理论并尝试在家里实施。
  • @Jeffrey Kern:嘿,我去过那里。我猜你是在手机上上网吗?好吧,我看到这个理论的主要问题是等距点问题。如果我对色彩理论有更多了解,我可能会有更多话要说,但我只会看... ;)
  • 如果多个点之间存在平局,我会选择第一个。但我想这是程序员需要做出的判断,或者是询问最终用户要做什么的提示。
  • @frustrased 是的。在手机上为 SO 输入问题是一件很痛苦的事情,哈哈 :)

标签: 3d colors theory distance remap


【解决方案1】:

理论上,是的。实际上,如果您想做得好,计算最接近的颜色并非易事。举个例子,人们的眼睛对亮度变化比对颜色变化更敏感,尤其是在颜色范围的末端(即极端红色或蓝色)。

至少如果您不介意在计算中做一些额外的工作,您会想要使用标准的"delta E" 计算之一(在您的情况下,您会想要最小化 delta E)。请注意,所有这些(无论如何我都使用过)在 CIE Lab* 颜色空间中工作。在典型情况下,您将从 RGB 开始,首先需要 convert to Lab*。

【讨论】:

  • 如果我的目标是自定义调色板,这会起作用吗?例如,原始图像包含 8 种不同的颜色(红色、绿色、黄色、桃色等),而目标调色板包含黑色、白色和 4 种蓝色?
  • @Jeffrey:是的,附带条件是,在这种情况下,任何事情都不能很好地工作是值得怀疑的——以至于这可能有点浪费时间。 OTOH,只有 8 种颜色的调色板,您可以预先计算 8 个可能输入中的每一个的输出,并将每个像素转换为简单的表格查找。
  • @Jeffrey:另外,您可能希望跟踪累积的错误,而不是只选择您在评论中提到的 first 相等匹配,然后选择一个最小化整体误差(参见 Floyd-Steinberg 抖动:en.wikipedia.org/wiki/Floyd%E2%80%93Steinberg_dithering)。
  • 源图像中的颜色会随着图像加载而改变,但大多数情况下目标调色板不会。我只是在寻找一种解决方案,它可以让我在使用 GDI+ 渲染图像时动态重新着色图像。当您可以重新着色时,为 1 个对象制作 6 个图像是一种浪费哈哈。如果我有 100 个对象,我宁愿不处理 600 个图像(6 个不同的目标调色板,包括原始颜色)
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 2012-09-01
  • 2018-10-16
  • 1970-01-01
  • 2016-09-29
  • 2014-10-04
  • 2015-12-21
  • 1970-01-01
相关资源
最近更新 更多