假设我有一个未指定颜色深度和尺寸的图像 有什么方法可以将它压缩成n色调色板? 我的google-fu在这方面很弱。
答案 0 :(得分:1)
最简单的方法就是查看图像并创建一个将像素颜色映射到整数的字典。对于每个像素,如果其颜色在字典中,则递增其计数。如果不是,请将其添加为1.这将为您提供每种颜色在图像中显示的次数。
然后,按计数排序,您将在图像中找到256种最常见的颜色。这些颜色构成了你的调色板。
然后,再次迭代图像。对于每个像素,找到最接近该像素颜色的调色板颜色,并将该像素的索引设置为该调色板索引。
这将是一个很好的“先行”,但在具有大量颜色的图像中,它可能无法很好地找到调色板。在字典阶段,你可能想要结合“足够接近”的颜色,以避免很多非常相似的颜色得分都很差,即使它们在一起它们也很常见。
为了获得更好的效果,您需要查看dithering技术。
答案 1 :(得分:1)
这个问题叫做颜色量化。例如,请参阅pngquant。
如果您正在寻找算法,那么搜索Median Cut,Octtree,K-Means,Linde-Buzo-Gray,NeuQuant。理想情况下,在谷歌学术搜索中,因为常规结果会被隐藏的付费墙垃圾邮件。