我是第一次玩计算机图形程序。我想将RGB(24位)图像转换为索引调色板(8位)图像(如GIF)。我最初的想法是使用k-均值(k = 256)。
如何为给定图像选择最佳调色板?对我来说,这是一次学习的经历,因此我希望对源代码使用概述型答案。
编辑: 抖动当前是题外话。我仅指的是“简单”的颜色转换,除了心理视觉/感知模型以外;颜色空间目前也离题,尽管我首先想到的是在颜色空间之间移动:)
编辑: 更新以支持256色调色板
如果您需要最简单的方法,那么我建议基于直方图的方法:
计算R / G / B通道的直方图 定义4个强度范围 对于强度范围内的每个通道 将直方图分成4个相等的部分 对于每个直方图部分 提取该部分最频繁的值
现在您将拥有4 * 4 ^ 3 = 256个调色板。将像素分配给调色板颜色时,只需计算像素的平均强度即可查看必须使用的强度区域。之后,只需将强度区域的这64种颜色之一映射到像素值即可。
祝好运。