Преобразование полноцветного изображения в трехцветное изображение для отображения электронных чернил - PullRequest
0 голосов
/ 05 мая 2019

Я бы хотел иметь возможность автоматически преобразовывать полноцветные изображения в трехцветные (черный / красный / белый) для отображения электронных чернил (Waveshare 7.5 "). Сейчас я просто позволяю экрану справиться с этим , но, как и ожидалось, сложные изображения размываются.

Есть ли какие-либо алгоритмы или фильтры, которые я мог бы применить, чтобы сделать вещи немного более заметными?

Сейчас я использую Python, но я не против других языков / сред при необходимости.

Хорошее изображение:

Good image

размытое изображение:

washed out

Ответы [ 3 ]

1 голос
/ 07 мая 2019

Вы можете сделать свою собственную палитру из 3 приемлемых цветов, например так:

magick xc:red xc:white xc:black +append palette.gif

Затем вы можете применить ее к своему изображению так:

magick input.png +dither -remap palette.gif result.png

enter image description here

Если вы хотите отправить его прямо в буфер кадров, и он поддерживает RB888, вы можете попробовать выполнить что-то вроде этого:

magick input.png +dither -remap palette.gif -depth 8 RGB:/dev/fb0
1 голос
/ 12 мая 2019

Просто добавьте немного к ответу Марка Сетчелла.Для печати вам может быть лучше смешать ваши 3 цвета.Итак, вот ваше изображение с и без сглаживания с использованием Imagemagick 7. Если вы используете Imagemagick 6, замените magick на convert.

Ввод:

enter image description here

Создание 3 цветовой палитры:

magick xc:red xc:white xc:black +append palette.gif


С дизерингом (по умолчанию Флойд-Стейнберг):

magick input.png -remap palette.gif result.png


enter image description here

Без дизеринга

magick input.png -dither none -remap palette.gif result2.png


enter image description here

Если вы хотите Python, то вы можетепопробуйте Python Wand.Он основан на Imagemagick.

1 голос
/ 05 мая 2019

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


РЕДАКТИРОВАТЬ: В случае PIL (Библиотека изображений Python), это не кажется тривиальным для произвольного набора из трех цветов, по крайней мере, с 2012 года.

...