Какой был бы хороший алгоритм для преобразования изображения в цветовую палитру ограниченного размера

Я пытаюсь найти алгоритм, который преобразует изображение — 8 или 32-битное — в ограниченную палитру из 3 или 4 пользовательских цветов (не в оттенках серого).

Это возможно ?

Я пытаюсь использовать C ++ (но я мог бы получить его из других языков)

Кажется, что у Qt уже есть палитра — хотя я не понимаю ее использования, кажется, что она заставляет отображение на одной из ее собственных стандартных палитр, я не видел никакого способа ее настройки.

Буду признателен за некоторые примеры алгоритмов или предложения.

1

Решение

Вы можете преобразовать изображение в фиксированное количество цветов, передав массив значений 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:

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

4

Другие решения


По вопросам рекламы [email protected]