Обрезка внешнего пустого пространства с помощью ImageMagick не работает на отсканированных документах

учитывая изображение, которое имеет некоторое фактическое содержание внутри и, как правило, некоторые нежелательные белый или черный или прозрачность вокруг этого, я хотел бы обрезать или обрезать внешние части с помощью ImageMagick.

следующее изображение было нарисовано в цифровом виде на компьютере (на HTML <canvas>):

canvas.png

следующая команда ImageMagick, что я пытался:

$ convert canvas.png -trim +repage canvas_trimmed.png

и это сработало прекрасно:

canvas_trimmed.png

Так это именно то, что я хочу. Но теперь я хочу, чтобы это работало и со сканированными документами, которые не так "идеальны", как компьютерные изображения, т. е. у них больше оттенков "белого" и "черного" и нет прозрачности, которую было бы легче обнаружить. Иногда они даже имеют некоторые черные полосы по белому фону бумаги, потому что зона сканера больше, чем бумага:

scan.jpg

С этим изображением я попробовал следующие команды в заданном порядке, каждая из которых пытается быть более агрессивной, но ни одна не дает никаких результатов - вы не видите разницы между исходным изображением и "обрезанными" изображениями, т. е. обрезка или обрезка не работает вообще:

$ convert scan.jpg -trim +repage scan_trimmed.jpg
$ convert scan.jpg -fuzz 10% -trim +repage scan_trimmed.jpg
$ convert scan.jpg -fuzz 60% -trim +repage scan_trimmed.jpg
$ convert scan.jpg -fuzz 60% -bordercolor white -border 1x1 -trim +repage scan_trimmed.jpg
$ convert scan.jpg -fuzz 60% -bordercolor black -border 1x1 -trim +repage scan_trimmed.jpg

что я здесь делаю неправильно? Как можно изменить команду ImageMagick, которая надежно обрезает созданные компьютером изображения обрезает отсканированные документы стиля выше так же надежно?

18
задан caw
31.01.2023 17:47 Количество просмотров материала 2461
Распечатать страницу

3 ответа

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

Примечание: сумму брить off (например, аргумент после "бритья" 40x40 или 10x10, etc. ) важно так быть обязательно тщательно протестируйте, чтобы убедиться, что эта настройка работает повсеместно ваше окружение для ваших изображений.

пример Логика

@ECHO ON

SET Convert="C:\Program Files\ImageMagick\Convert.exe"
%convert% C:\Folder\Circle.jpg -shave 40x40 C:\Folder\ShavedCircle.jpg
<The rest of your logic against C:\Folder\ShavedCircle.jpg now>

до

enter image description here

после

enter image description here


Дополнительные Ресурсы

  • Бритье, удаление краев изображения

    реверс "границы" или "рамки" операторов, "б", который, если заданы те же аргументы, удалит пространство, добавленное эта команда.

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

    Если вы хотите удалить только один край изображения, то вам нужно вместо этого используйте оператор "- chop". (См. примеры Chop ниже).

    как и все операторы "- border", "- frame", и "б", только произведите эффект реальное изображение на виртуальном холст, а не виртуальный сам холст.

    source

3
отвечен Pimp Juice IT 2023-02-02 01:35

удалить пятна грязи или шум от изображений с ImageMagick

ниже то, что я использовал, чтобы избавиться от пятен грязи в файле изображения из изображения в вашем вопросе, но я пошел вперед и использовал брить С 90x90 во-первых, что вы подтвердили, помогло решить проблему из другого решения, которое я предоставил для награжденной награды.

пример Логика

@ECHO ON

SET Convert="C:\Program Files\ImageMagick\Convert.exe"
%convert% C:\Folder\Circle.jpg -shave 90x90 C:\Folder\ShavedCircle.jpg
%convert% C:\Folder\ShavedCircle.jpg -write MPR:source ^
  -morphology close rectangle:3x4 ^
  -morphology erode square    MPR:source -compose Lighten -composite ^
  -morphology erode square    MPR:source -composite ^
  -morphology erode square    MPR:source -composite ^
  -morphology erode square    MPR:source -composite ^
  -morphology erode square    MPR:source -composite ^
  -morphology erode square    MPR:source -composite ^
  -morphology erode square    MPR:source -composite ^
  -morphology erode square    MPR:source -composite ^
  -morphology erode square    MPR:source -composite ^
C:\Folder\cleaned.jpg

до

enter image description here

после

enter image description here


должный к природе звеня шума, все черные пятнышки шума отделенный по крайней мере 1 пикселом от писем.

один хороший подход для того чтобы извлечь этот шум был бы растянуть изображение так что хотя бы одна "семенная" часть каждой буквы остается, затем стереть эти семена при использовании исходного изображения в качестве маски; фактически заливка для каждой буквы.

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

самый большой растянуть, что до сих пор оставляет часть каждой буквы формы кажется чтобы быть прямоугольником 3x4 для данных примера; возможно, используйте что-то меньше, чтобы быть на безопасной стороне.

эта команда сначала расширяет прямоугольник 3x4, затем выветривается до буквы снова целые

код

convert cleanup.tif -write MPR:source ^
  -morphology close rectangle:3x4 ^
  -morphology erode square    MPR:source -compose Lighten -composite ^
  -morphology erode square    MPR:source -composite ^
  -morphology erode square    MPR:source -composite ^
  -morphology erode square    MPR:source -composite ^
  -morphology erode square    MPR:source -composite ^
  -morphology erode square    MPR:source -composite ^
  -morphology erode square    MPR:source -composite ^
  -morphology erode square    MPR:source -composite ^
  -morphology erode square    MPR:source -composite ^
  cleaned.png

источник


Дополнительные Ресурсы

1
отвечен Pimp Juice IT 2023-02-02 03:52

что в конечном итоге обеспечило идеальные результаты, по крайней мере, для моего конкретного примера, показанного в исходном вопросе (scan.jpg), было следующее двухэтапное решение:

convert \
    scan.jpg \
    -write MPR:source \
    -morphology close rectangle:3x4 \
    -clip-mask MPR:source \
    -morphology erode:8 square \
    +clip-mask \
    scan_intermediate.jpg

convert scan_intermediate.jpg -shave 40x40 -fuzz 10% -trim +repage scan_final.jpg

такое решение состоит из трех частей:

  1. команда из моего первоначального вопроса
  2. удаление шума показано в ответ
  3. The -shave оператор предложил в ответ
1
отвечен caw 2023-02-02 06:09

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

documents
image-manipulation
imagemagick
scanner
scanning
Вверх