所以我开始研究应用于图像的“简单”色彩还原。我花了最后一天研究它是如何工作的,并设法找到了似乎是一个不错的算法来进行试验:Median cut algorithm
这里的输出是一个包含 n 种颜色的调色板。我还没有确保这个算法真的有效,但我假设它确实有效。我想做的是获取该输出并将其应用于生成调色板的图像。
我不能说我精通颜色压缩格式和所有涉及图像的深入知识,但我想知道如何应用调色板而不必从带有索引调色板的图像格式开始(即GIF)。
我在想,对于每个像素,我计算当前像素的颜色与调色板中每种颜色之间的差异,并用差异最小的调色板颜色替换该像素。这是一种可行的方法吗?
注意 - 我已经研究了各种库(ImageMagick),但这些似乎有点过头了;我将在图像处理方面做的最多的事情是减少调色板 - 没有比这更复杂的了。这就是为什么我认为实现这个算法将是满足我需求的最简单的方法。
最佳答案
我认为这是一个可行的方法。您计算的差异应该是欧几里得差异,如 here 所示
但是你可以做一些优化。您不需要每次都计算新的差异。例如,如果您已经计算过,您可以填充一个查找表,以便直接使用正确的颜色
关于c++ - 将 Median Cut 颜色减少算法输出调色板应用于源图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10373917/