Как автоматически обрезать отсканированные изображения с помощью imagemagick или graphicsmagick?

10

У меня есть отсканированные изображения в формате * .jpg. Они сканируются с использованием сканера А4, в оттенках серого или в цвете. Отсканированные страницы имеют очень разные размеры - некоторые A5, некоторые A6, некоторые визитные карточки и т. Д. Крышка сканера белая.

Я хочу обрезать все белые границы, используя imagemagick или graphicsmagick (эти инструменты, потому что я хочу для дальнейшей пакетной обработки). Я понимаю, что граница отсканирована, поэтому не идеально белая, и это иногда может привести к обрезке слишком много или слишком мало изображения. Однако, используя параметр обрезки с fuzz, я всегда получаю слишком большое изображение. Например, используя изображение визитной карточки ниже:

gm.exe convert -crop -fuzz 50% 01-pixelated.jpg 01-pixelated-gm.jpg

производит изображение, которое все еще не вырезано справа и снизу. Результат один и тот же, независимо от того, какое число я добавлю в параметр -fuzz

Не могли бы вы проверить это и посоветовать командную строку, которая будет делать эту работу?

enter image description here

Arek
источник
Хотите обрезать по краям текста / содержимого или по краям листа бумаги, какого бы размера он не был (A4, A5, A6)? В вашем примере нижняя граница карты вообще не видна - я не знаю, как вы ожидаете ее обнаружить.
willus
Я хочу, чтобы он был обрезан по краям контента.
Arek
1
askubuntu.com/questions/97695/... || stackoverflow.com/questions/14098965/...
Ciro Santilli 新疆改造中心 六四事件 法轮功

Ответы:

8

В ImageMagick попробуйте эту команду:

convert input.jpg -fuzz 80% -trim +repage output.jpg

Я протестировал его с помощью ImageMagick 6.4.4 Q16 и, исходя из изображения, которое вы связали, я получил следующее изображение:

output

Andrea
источник
настолько очевидно, что я не соответствовал -trim с -crop. Спасибо!
Arek