Я пытаюсь найти алгоритм, который преобразует изображение — 8 или 32-битное — в ограниченную палитру из 3 или 4 пользовательских цветов (не в оттенках серого).
Это возможно ?
Я пытаюсь использовать C ++ (но я мог бы получить его из других языков)
Кажется, что у Qt уже есть палитра — хотя я не понимаю ее использования, кажется, что она заставляет отображение на одной из ее собственных стандартных палитр, я не видел никакого способа ее настройки.
Буду признателен за некоторые примеры алгоритмов или предложения.
Вы можете преобразовать изображение в фиксированное количество цветов, передав массив значений QRgb с convertToFormat
:
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: