ImageMagick/etc.: 从扫描中自动去除不干净的边缘?
ImageMagick/etc.: automated removal of unclean edges from scanning?
有几千张像下面这样的图像,扫描的边缘很复杂(首先是完全规则的白色图像,然后是非常模糊的 gray/black'),是否有一个好的算法可以找出保留区域的坐标?在下面的示例中,从西北角顺时针方向,最佳坐标为:
- 121,18
- 1934,18
- 1934,1312
- 121,1312
因此从这个输入图像...
... 可以裁剪以去除任何红色,如下所示:
澄清一下,我确实知道如何使用 ImageMagick 或其他工具裁剪到该区域。我不确定的是如何弄清楚如何获得上述数字?你只是将图像二值化,然后从左到右直到你第一次点击“白色”,然后从上到下,从右到左,从下到上做同样的事情吗?或者是否有一些库、脚本等已经为您做到了?
我会使用图像的垂直和水平投影。通过简单检测最高跃迁,轻松找到背景和纸张之间的界限。
您的图片有一条白色边框环绕着一条黑色边框。因此,您可以在填充适当的颜色后执行两个模糊 -trim 过程,以确保它遍及整个图像。所以在 ImageMagick 6 中,它将是
输入:
convert book.jpg -bordercolor white -border 1 -fuzz 55% -trim +repage -bordercolor black -border 1 -trim +repage book_trimmed.jpg
结果:
有几千张像下面这样的图像,扫描的边缘很复杂(首先是完全规则的白色图像,然后是非常模糊的 gray/black'),是否有一个好的算法可以找出保留区域的坐标?在下面的示例中,从西北角顺时针方向,最佳坐标为:
- 121,18
- 1934,18
- 1934,1312
- 121,1312
因此从这个输入图像...
... 可以裁剪以去除任何红色,如下所示:
澄清一下,我确实知道如何使用 ImageMagick 或其他工具裁剪到该区域。我不确定的是如何弄清楚如何获得上述数字?你只是将图像二值化,然后从左到右直到你第一次点击“白色”,然后从上到下,从右到左,从下到上做同样的事情吗?或者是否有一些库、脚本等已经为您做到了?
我会使用图像的垂直和水平投影。通过简单检测最高跃迁,轻松找到背景和纸张之间的界限。
您的图片有一条白色边框环绕着一条黑色边框。因此,您可以在填充适当的颜色后执行两个模糊 -trim 过程,以确保它遍及整个图像。所以在 ImageMagick 6 中,它将是
输入:
convert book.jpg -bordercolor white -border 1 -fuzz 55% -trim +repage -bordercolor black -border 1 -trim +repage book_trimmed.jpg
结果: