ImageMagick/etc.: 从扫描中自动去除不干净的边缘?

ImageMagick/etc.: automated removal of unclean edges from scanning?

有几千张像下面这样的图像,扫描的边缘很复杂(首先是完全规则的白色图像,然后是非常模糊的 gray/black'),是否有一个好的算法可以找出保留区域的坐标?在下面的示例中,从西北角顺时针方向,最佳坐标为:

因此从这个输入图像...

... 可以裁剪以去除任何红色,如下所示:

澄清一下,我确实知道如何使用 ImageMagick 或其他工具裁剪到该区域。我不确定的是如何弄清楚如何获得上述数字?你只是将图像二值化,然后从左到右直到你第一次点击“白色”,然后从上到下,从右到左,从下到上做同样的事情吗?或者是否有一些库、脚本等已经为您做到了?

我会使用图像的垂直和水平投影。通过简单检测最高跃迁,轻松找到背景和纸张之间的界限。

您的图片有一条白色边框环绕着一条黑色边框。因此,您可以在填充适当的颜色后执行两个模糊 -trim 过程,以确保它遍及整个图像。所以在 ImageMagick 6 中,它将是

输入:

convert book.jpg -bordercolor white -border 1 -fuzz 55% -trim +repage -bordercolor black -border 1 -trim +repage book_trimmed.jpg

结果: