我试图找出一种算法,可以将图像(8位或32位)转换为3或4种自定义颜色(不是灰度)的有限调色板。

这可能吗 ?

我正在尝试使用C++(但是我可以从其他语言获得它)

Qt似乎已经有了一个调色板-尽管我不了解它的用法,但似乎迫使它在其自己的标准调色板上显示,我看不到任何自定义它的方法。

我将不胜感激一些算法示例或建议。

最佳答案

您可以通过传递带有convertToFormat的QRgb值数组来将图像转换为使用固定数量的颜色:

http://qt-project.org/doc/qt-5/qimage.html#convertToFormat-2

在这种情况下没有抖动...它只是选择最接近的颜色来使用。因此,这并不是强制您使用调色板,而是必须确定要使用的颜色。如果要选择N种“最佳”颜色来用于图像,Internet上有很多“图像的调色板”生成器,尽管这将是一种启发式方法,但您可能会想一想。

而且,如果您希望抖动,则可以从Meego的这种情况开始:

https://github.com/openwebos/qt/blob/master/src/plugins/graphicssystems/meego/dithering.cpp

通常具有以下任务的人会使用ImageMagick:

http://www.imagemagick.org/Usage/quantize/

关于c++ - 什么是将图像转换为有限尺寸调色板的好算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25333903/

10-12 12:19