使用框架自动提取子图像

时间:2015-10-30 13:01:57

标签: python imagemagick computer-vision python-imaging-library pillow

我正试图从扫描的纸张中提取子图像,如下所示:

https://cloud.kopa.ch/index.php/s/gGZm5xeMYlPfU81

提取的图像应该进行地理配准并添加到网页地图服务中,但这不是问题。

如何获取帧/其像素坐标以裁剪图像? 我也可以自由创建“布局”(类似于示例),这意味着我可以添加标记,以便在再次扫描后更好地获得帧。

工作流程是: 生成布局 - 打印地图 - 在地图上绘制 - 扫描它 - 裁剪“地图框架” - 地理配准此框架 - 在网页地图上显示

预处理“地图框架”,我知道它们的位置/范围 有人知道如何自动裁剪(扫描)图像到这个“地图框架”吗?

我必须使用python并使用PIL,pillow和imagemagick包进行图像处理

谢谢你的帮助! 如果您需要更多信息,请不要犹豫,

1 个答案:

答案 0 :(得分:2)

以下是我根据Pillow docs进行调整的一个示例,请检查一下您可能需要执行的任何进一步处理:

from Pillow import Image

Image.open("/path/to/image.jpg")
box = (100, 100, 400, 400)
region = im.crop(box)

此外,search Stack Overflow对于此类操作可能有价值,我确信之前已经讨论过。

至于找到要裁剪的实际矩形,你必须做某种形式的图像分析。在它最简单的形式中,概念上可能是这些方面的东西:

  1. 将S曲线滤镜应用于图像的黑白表示
  2. 迭代图像中的所有像素
  3. 跟踪具有足够黑色像素值的水平线和垂直线。
  4. 使用此数据确定您感兴趣的图像部分的边界框。
  5. 根据您的需要,您可能需要查看一些计算机视觉库,这些库已针对此类似任务进行了优化。想到的是OpenCV,我猜这个问题已得到很好的优化和记录,并且还有一个python module