【发布时间】:2011-05-23 19:16:45
【问题描述】:
假设我有一张未指定颜色深度和尺寸的图像。
有什么方法可以将其压缩为 n 调色板?
我的 google-fu 在这个方面很弱。
【问题讨论】:
标签: colors palette color-palette
假设我有一张未指定颜色深度和尺寸的图像。
有什么方法可以将其压缩为 n 调色板?
我的 google-fu 在这个方面很弱。
【问题讨论】:
标签: colors palette color-palette
嗯,最简单的方法就是查看图像并创建一个字典,将像素颜色映射到整数。对于每个像素,如果其颜色在字典中,则增加其计数。如果不是,则将其计数为 1。这将为您提供每种颜色在图像中出现的次数。
然后,按数量排序,您将找到图像中最常见的 256 种颜色。这些颜色构成了您的调色板。
然后,再次迭代图像。对于每个像素,找到最接近该像素颜色的调色板颜色,并将该像素的索引设置为该调色板索引。
这将是一个很好的“第一次”,但在具有大量颜色的图像中,它可能无法很好地找到调色板。在字典阶段,您可能希望组合“足够接近”的颜色,以避免许多非常相似的颜色都得分不佳,即使它们在一起很常见。
为了获得更好的结果,您需要查看dithering 技术。
【讨论】:
这个问题被称为颜色量化。例如,请参阅pngquant。
如果您正在寻找算法,请搜索 Median Cut、Octtree、K-Means、Linde–Buzo–Gray、NeuQuant。理想情况下在 Google Scholar 上,因为常规结果会通过隐藏付费墙发送垃圾邮件。
【讨论】: