Я хочу ограничить изображение 16 цветами, но ТОЛЬКО цветами из набора цветов c большего размера - PullRequest
1 голос
/ 30 марта 2020

Я пытаюсь преобразовать изображения в очень конкретную c цветовую схему, и у меня есть изображение, которое состоит из 6684 уникальных цветов:

Color Image

Я хочу В частности, ТОЛЬКО используйте цвета из этого изображения, но оно слишком велико для использования в качестве цветовой палитры (ограничено 256).

В дополнение к этому любые изображения, которые я конвертирую, должны иметь МАКС. 16 индексированных цветов. (Например: любое конвертируемое изображение должно иметь только 16 цветов, которые оно может отображать, как будто это 4-битное изображение, и все эти 16 цветов должны быть цветами, которые также присутствуют в изображении, которое я разместил выше.)

Возможно ли сделать это в imagemagick?

1 Ответ

2 голосов
/ 30 марта 2020

Предполагая, что предоставленное вами изображение называется palette.png, я думаю, что вы хотите переназначить все цвета входного изображения в эту палитру, а затем выполнить уменьшение цвета на основе интерполяции ближайшего соседа до 16 цветов, что даст вам команда, подобная этой:

magick +dither input.png -remap palette.png -interpolate nearest -colors 16 result.png

Если это не то, что вы хотите, вы можете отладить вышеперечисленное, разбив его на шаги и посмотрев на частичные результаты:

magick +dither input.png -remap palette.png partial.png

И :

magick partial.png -interpolate nearest -colors 16 result.png

Вы можете поэкспериментировать с заменой +dither на -dither Riemersma или -dither FloydSteinberg.

Обратите внимание, что с помощью "Ближайший сосед" интерполяция позволяет избежать введения каких-либо новых цветов в изображение - она ​​просто использует ближайшего соседа из существующего изображения вместо усреднения или вычисления новых пикселей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...