使用 ImageMagick 修剪外部空白空间不适用于扫描文档

caw*_*caw 5 scanner scanning documents imagemagick image-manipulation

给定一个图像,里面有一些实际的内容,通常有一些不需要的白色或黑色或透明度,我想使用 ImageMagick 修剪或裁剪外部部分。

以下图像是在计算机上以数字方式绘制的(在 HTML 上<canvas>):

画布.png

以下 ImageMagick 命令是我尝试过的:

$ convert canvas.png -trim +repage canvas_trimmed.png
Run Code Online (Sandbox Code Playgroud)

它工作得很好:

canvas_trimmed.png

所以这正是我想要的。但现在我希望它也适用于扫描文档,这些文档不像计算机生成的图像那样“完美”,即它们具有更多的“白色”和“黑色”阴影,并且没有更容易检测的透明度。有时,他们甚至会在纸张的白色背景周围出现一些黑条,因为扫描仪的区域比纸张大:

扫描.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
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?如何修改能够可靠地修剪计算机生成图像的 ImageMagick 命令,使其能够同样可靠地修剪上述样式的扫描文档?

Vom*_*yle 5

您可以使用-shave并简单地刮掉边缘,然后使用之后使用的逻辑进行相应处理。

注意: 剃掉的数量(例如“-shave”40x4010x10等之后的参数)很重要,因此请务必进行彻底测试以确保此设置在您的图像环境中普遍适用。

示例逻辑

@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>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在此处输入图片说明


更多资源

  • 剃须,从图像中去除边缘

    -border ”或“-frame”运算符的反面是“ -shave ”,如果给定相同的参数,将删除这些命令添加的空格。

    关于这三个运算符要记住的主要事情是它们在图像的相对侧添加和删除空间,而不仅仅是一侧或相邻侧。

    如果您只想删除图像的一个边缘,则需要改用“-chop”运算符。(请参阅下面的印章示例)。

    和之前所有的操作符“ -border ”、“- frame ”和“ -shave ”一样,只影响虚拟画布上的真实图像,而不影响虚拟画布本身。

    来源