Учитывая изображение, которое имеет некоторое реальное содержание внутри и обычно немного нежелательного белого или черного цвета или прозрачность вокруг него, я хотел бы обрезать или обрезать внешние части, используя ImageMagick.
Следующее изображение было нарисовано в цифровом виде на компьютере (в HTML <canvas>
):
Следующая команда ImageMagick - это то, что я пробовал:
$ convert canvas.png -trim +repage canvas_trimmed.png
И это сработало отлично:
Так что это именно то, что я хочу. Но теперь я хочу, чтобы это работало и с отсканированными документами, которые не настолько "идеальны", как изображения, сгенерированные компьютером, то есть имеют больше оттенков "белого" и "черного" и не имеют прозрачности, которую было бы легче обнаружить. Иногда у них даже есть черные полосы вокруг белого фона бумаги, потому что область сканера больше, чем бумага:
С этим изображением я попробовал следующие команды в указанном порядке, каждая из которых пыталась быть более агрессивной, но ни одна не дала никаких результатов - вы не видите никакой разницы между исходным изображением и "обрезанными" изображениями, т.е. обрезкой или обрезкой не работает вообще:
$ 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, которая надежно обрезает сгенерированные компьютером изображения, чтобы с такой же надежностью обрезать отсканированные документы вышеописанного стиля?