Как вы преобразуете в цветное изображение?

14

У моего друга есть цветное изображение с китайским почерком (в основном, фотографируя или сканируя то, что он написал на листе белой бумаги), и он хотел бы, чтобы я преобразовал его в черно-белое двоичное изображение. Есть ли приложения под Ubuntu, которые могут это сделать?

Вот пример изображения:

введите описание изображения здесь

Тим
источник

Ответы:

27

То, что вы хотите, называется «порогом» в обработке изображений. По сути, он принимает изображение в качестве входных данных и выводит изображение, которое имеет все пиксели со значением ниже заданного порогового значения, установленного на черный, и все пиксели, значение которого выше порогового значения, установлено на белый. В результате получается черно-белое изображение из произвольного входного изображения.

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

Вы можете использовать графический инструмент, такой как GIMP, чтобы сделать это в интерактивном режиме (вы найдете инструмент через главное меню -> Цвета -> Порог), или вы можете использовать ImageMagick что-то вроде этого:

convert colored.png -threshold 75% thres_colored.png

Выполнение вышеупомянутой команды на примере изображения приводит к результату, показанному ниже.

Черно-белая версия изображения ОП

Поскольку пороговая обработка часто является своего рода методом проб и ошибок, чтобы получить результат, которым вы довольны, особенно если исходное изображение уже не очень близко к черно-белому, я рекомендую подход с графическим интерфейсом, если это возможно, но если это не вариант по какой-либо причине, вы можете сделать это через командную строку. Для более точного управления выводом можно использовать такие инструменты, как цветовые кривые, уровни и контрастность, чтобы лучше изолировать светлые и темные участки изображения перед установкой порога. (На самом деле, порог можно рассматривать как крайний случай использования инструмента цветовых кривых.)

CVn
источник
2
Благодарность! Поскольку цветное изображение имеет три канала RBG, к чему может / может применяться пороговое значение в целом?
Тим
@Tim Это, вероятно, зависит от программного обеспечения, но я ожидаю, что пороговое значение (если вы не укажете для каждого канала или для конкретного канала, см., Например, -channelопцию преобразования ImageMagick ) будет применено к некоторому «значению» пикселя, которое вычисляется со всех каналов. Вот почему я сказал, что вы можете сначала преобразовать в оттенки серого для более предсказуемых результатов. (Также см. Мое редактирование.)
CVN
Благодарность! Существует ли какая-либо документация для того, к чему относится пороговое значение в команде, показанной в вашем посте?
Тим
@ Не правда. Я ожидал, что преобразование займет либо процент от максимального значения (которое должно было быть 256 на канал), либо конкретное значение, но я мог получить полезный результат только при указании процента. Когда вы делаете это с помощью графического инструмента, включая GIMP, у вас обычно будет гистограмма, которая показывает тональное распределение изображения; это будет большим подспорьем в выборе правильной стоимости. Использование только командной строки, если у вас нет конкретной причины для этого, вероятно, больше проблем, чем оно того стоит.
CVn
2
Отметим, что существуют другие методы определения пороговых значений, которым не нужно полагаться на жестко заданный пороговый уровень. Например, ImageMagick включает в себя то, -latчто выполняет локальный адаптивный порог с учетом окружающих пикселей.
voithos
7

Вы можете использовать Imagemagick:

convert test.png -colorspace Gray gray_colorspace.png

От сюда .

Вот что я получил после применения к вашему изображению:

введите описание изображения здесь

MKC
источник
10
«Binary» происходит от «bi», что означает «два», поэтому я предполагаю, что OP хочет преобразовать изображение в чисто черно-белое. Преобразование в оттенки серого дает намного больше, чем два уровня.
CVN
Согласовано! имеет смысл +1.
MKC
2

-monochrome из ImageMagick - это опция, которая использует умное сглаживание и делает вывод намного более заметным, чем-thresholdесли бы вы предназначали его для потребления человеком:

convert -monochrome signature.png out.png

введите описание изображения здесь

Не имеет большого значения для такого простого изображения, но для больших, это поразительно.

Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件
источник
1

Вы также можете легко сделать это с помощью netpbmинструментария:

anytopnm inputfile | ppmtopgm | pgmtopbm > outputfile

ppmtopgmпреобразуется в изображение в градациях серого, pgmtopbmпреобразуется в черно-белое изображение, а затем мы перенаправляем вывод в файл. Это будет в формате pbm; если вы хотите что-то более общее, вам нужно будет добавить конвертер вывода (например, pnmtopngили что-то подобное)

Воутер Верхелст
источник