我试图找出一种能够将图像(8或32位)转换为3或4种自定义颜色(不是灰度)的有限调色板的算法。
这可能吗?
我正在尝试使用C ++(但我可以从其他语言中获取它)
似乎Qt已经有了一个调色板 - 虽然我不明白它的用法,它似乎强制在其自己的标准调色板上显示,我没有看到任何定制它的方法。
我很感激一些算法示例或建议。
答案 0 :(得分:4)
您可以通过传递convertToFormat
的QRgb值数组,将图片转换为使用固定数量的颜色:
http://qt-project.org/doc/qt-5/qimage.html#convertToFormat-2
在这种情况下没有抖动......它只是选择最接近的颜色来使用。所以它不是强迫你的手调色板,但你必须决定使用什么颜色。互联网上有很多“图像调色板”生成器,如果你想要选择用于图像的N种“最佳”颜色,你可能会看到它们,尽管它将是一种启发式。
如果你想要抖动,你可以从Meego的这个案例开始:
https://github.com/openwebos/qt/blob/master/src/plugins/graphicssystems/meego/dithering.cpp
拥有此类任务的人通常会使用ImageMagick: