Как удалить ребро антиалии в ImageMagick при преобразовании в двоичное растровое изображение?

#imagemagick #alpha #antialiasing #bitmapimage

#imagemagick #альфа #сглаживание #растровое изображение

Вопрос:

Мы проводим когнитивный эксперимент, для которого требуется мигание 480 черно-белых изображений на высокой скорости на нейтрально-сером фоне. Показанное изображение детализировано с увеличением около 300%; полный дисплей составляет 932 x 612; на самом деле на экране есть и другие кластеры, похожие на этот. Крупным планом растрового файла на фоне RGB 192,192,192 Мы должны сгенерировать эти изображения в исходном приложении, а затем отобразить их в экспериментальном приложении. Сначала мы использовали 24-битные PNG со встроенным цветом фона, но, несмотря на размер каждого файла около 10 КБ, общая полезная нагрузка файла 480 слишком велика и требует слишком много времени для предварительной загрузки. Однако мы можем установить цвет фона по умолчанию в приложении и разместить 1-битные изображения. Хотя мы можем изменить цвет фона в исходном приложении, у нас нет контроля над битовой глубиной, поэтому мы застряли при создании снимков экрана, а затем уменьшении дискретизации до двоичного. Мы пробовали это с оригинальными изображениями, которые расположены как на белом, так и на сером фоне. Используя ImageMagick, обе эти команды дают одинаковые результаты:

magick gray.png -transparent "rgb(192,192,192)" -alpha set -depth 1 outgray-out.bmp (или .png )

magick white.png -transparent white -alpha set -depth 1 outwhite-out.bmp (или .png )

PNG выходят на 1,5 — 5 тыс., так что это то, где мы хотим быть. Однако мы сталкиваемся с этой проблемой, независимо от того, начинаем ли мы с изображений на сером или белом фоне. Мы также попробовали -fuzz аргумент (1-99%), но безрезультатно. Результирующий артефакт псевдоалии, который мы видим в этих 1-битных файлах, одинаков в нескольких приложениях, поэтому, по-видимому, он должен быть встроен в выходной файл, созданный попыткой ImageMagick отфильтровать край, а не артефакт какого-либо одного приложения или ОС.

Мы не совсем понимаем, как альфа-канал может быть даже присоединен к 1-битному изображению, если это не строго RGBA: альфа-канал с 1-битным изображением даже не имеет смысла. Но если альфа-канал не включен, то откуда берется карта на небинарном изображении, чтобы отличить этот «белый» край от небелой поверхности? Это не целевые приложения. Выходные файлы либо не должны быть строго двоичными, либо ImageMagick не вычисляет канал точно по краям контура. (Когда мы удаляем -alpha аргумент, ImageMagick создает файл большего размера; псевдоним (e.г., когда мы помещаем в PowerPoint и выбираем Прозрачный цвет до белого) может отображаться в немного разных местах, но по сути эффект один и тот же.

Вопрос в том, как можно удалить этот артефакт в 1-битном изображении с помощью ImageMagick? Мы хотели бы свести размеры файлов к минимуму.

Комментарии:

1. Я пробовал -depth 8 и позже -depth 2 , и -depth 24 все без -alpha set толку . Все это дало файлы PNG размером около 5 КБ, и они отображаются правильно, без артефакта.

2. Альфа-канал кажется ненужным для различных приложений, если в PNG указан прозрачный цвет. Тем не менее, я был бы признателен за уточнение о том, когда необходимы альфа-каналы и когда прозрачность. Наш опыт работы с альфа-каналами касается цветных изображений с разрешением 24 RGB для видео и 32 бит для печати в формате CMYK; нам менее ясно, как они связаны с настройкой прозрачного цвета-похоже, что эти два параметра должны быть взаимоисключающими.

3. Я не могу сказать по вашему вопросу и комментариям, в чем проблема, как создаются изображения или решили ли вы ее… пожалуйста, проясните эти аспекты, если у вас нет решения. Спасибо.