我正在尝试从扫描的图像中提取对象。白色背景上可能有一些文档,我需要自动裁剪和旋转它们。这似乎是一项相当简单的任务,但我在某些时候遇到了困难并且一直得到不好的结果。
我试图:
通过执行形态学操作对图像进行二值化并获得连通分量。
通过使用膨胀和侵蚀的二进制图像作为掩码组件执行分水岭分割。
应用 Canny 检测器并填充轮廓。
这些都没有给我带来好的结果。如果对象没有对比边缘(即白色背景上的一张纸),它会分裂成许多单独的组件。如果我通过过度膨胀来连接这些组件,背景噪音也会扩大,一切都会变得一团糟。
例如,我有一个图像:
应用 Canny 检测器并填充轮廓后,我得到如下结果:
如您所见,组件未连接。它们彼此相距太远,无法通过合理的膨胀量连接起来。当我将分水岭与一些背景点结合使用时,会产生非常糟糕的结果。
有些图像很嘈杂:
在这种特殊情况下,我能够通过 Canny 检测器获得整个护照的轮廓,因为它具有对比边缘。但是阈值方法在这里不起作用。