首页 文章

从浅色背景自动裁剪对象的正确方法是什么?

提问于
浏览
2

我正在尝试从扫描图像中提取对象 . 在白色背景上可能会有一些文档,我需要自动裁剪和旋转它们 . 这似乎是一个相当简单的任务,但我在某些时候陷入困境并且总是得到糟糕的结果 .

我试过:

  • 通过执行形态学操作来对图像进行二值化并获得连接的组件 .

  • 使用扩张和侵蚀的二进制图像作为掩模组件执行分水岭分割 .

  • 应用Canny探测器并填充轮廓 .

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

例如,我有一个图像:

应用Canny探测器并填充轮廓后,我得到这样的结果:

如您所见,组件未连接 . 他们彼此相距太远,无法通过合理的扩张来连接 . 当我将分水岭应用于这个面具并加上一些背景点时,会产生非常糟糕的结果 .

有些图像很吵:

在这个特殊情况下,由于它的对比边缘,我能够通过Canny探测器获得整个护照的轮廓 . 但是阈值方法在这里不起作用 .

2 回答

  • 1

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

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

    enter image description here

    enter image description here

  • 1

    这可能看起来有些多么荒谬,但请耐心等待:

    对于仅涉及边缘检测,形态学操作和分割的图像处理配方而言,这看起来非常具有挑战性 .

    你在这里没有利用的是你(我相信)知道你的文件应该是什么样子 . 您目前正在研究完全一般的解决方案,这些解决方案不考虑此先前知识 . 如果您可以获得一些训练数据,那么您可以从简单的模板/基于补丁的匹配(SSD,规范化互相关)到more sophisticated对象detection技术,以查找文档的位置和旋转 .

    我的猜测是,如果你的物体总是或多或少相同且规模相同(例如以固定分辨率/类似机器扫描的护照),那么你可以采用相当粗略的方法 . 没有任何一种正确的方法 . 在您完成大量参数调整之后,您最终使用的技术也可能不起作用,所以不要太快放弃任何事情 .

相关问题