3

我正在尝试从扫描的图像中提取对象。白色背景上可能有一些文档,我需要自动裁剪和旋转它们。这似乎是一项相当简单的任务,但我在某些时候遇到了困难并且一直得到不好的结果。

我试图:

  1. 通过执行形态学操作对图像进行二值化并获得连通分量。

  2. 通过使用膨胀和侵蚀的二进制图像作为掩码组件执行分水岭分割。

  3. 应用 Canny 检测器并填充轮廓。

这些都没有给我带来好的结果。如果对象没有对比边缘(即白色背景上的一张纸),它会分裂成许多单独的组件。如果我通过过度膨胀来连接这些组件,背景噪音也会扩大,一切都会变得一团糟。

例如,我有一个图像:

应用 Canny 检测器并填充轮廓后,我得到如下结果:

如您所见,组件未连接。它们彼此相距太远,无法通过合理的膨胀量连接起来。当我将分水岭与一些背景点结合使用时,会产生非常糟糕的结果。

有些图像很嘈杂:

在这种特殊情况下,我能够通过 Canny 检测器获得整个护照的轮廓,因为它具有对比边缘。但是阈值方法在这里不起作用。

4

2 回答 2

1

这可能看起来有点空想,但请耐心等待:

对于仅涉及边缘检测、形态学操作和分割的图像处理方案,这看起来是一个相当具有挑战性的案例。

您在这里没有利用的是您(我相信)知道您的文档应该是什么样子。您目前正在寻找不考虑这些先验知识的完全通用的解决方案。如果您可以获得一些训练数据,那么您可以从简单的基于模板/补丁的匹配(SSD,归一化互相关)到更复杂的对象检测技术来查找文档的位置和旋转。

我的猜测是,如果您的对象总是或多或少相同且具有相同的比例(例如以固定分辨率/类似机器扫描的护照),那么您可以采用相当粗略的方法。不会有任何一种正确的方法。在您完成大量参数调整之前,您最终使用的技术也可能无法工作,因此不要太快放弃任何东西。

于 2013-02-01T18:11:10.593 回答
1

如果图像始终位于非常浅的背景上,则可以使用接近最大可能值的阈值进行二值化。之后就是校正二值图像以获取对象的问题,但此步骤将根据您的其他图像的外观而有所不同。

例如,左下图是我们在对输入进行高斯滤波后,阈值为最大值的 99% 时得到的结果。去除连接到边框的组件和其他小组件后,再结合一些基本的形态学工具,我们得到了右图。

在此处输入图像描述 在此处输入图像描述

于 2013-02-01T13:13:31.453 回答