这是二进制图像的示例,即作为输入,我们有一个具有 2 个可能值的 imageByteArray:0
和255
。
示例 1:
示例 2:
图像在背景上包含一些文档边缘。
任务是在对边缘像素的影响最小的情况下去除、减少背景像素的数量。
问题是有哪些现代算法和技术可以做到这一点?
我不期望的答案是:使用高斯模糊来消除背景噪声,使用双色调算法(Canny、Sobel 等)阈值或使用霍夫(无论设置什么选项,霍夫线性化都会对这种噪声发疯)
最简单的解决方案是检测所有轮廓并过滤掉长度最短的轮廓。这很好用,但有时取决于图像,它也会几乎消除有用的边缘像素。
更新:作为输入,我在某些背景上有带有文档(驾驶执照 ID、支票、账单、信用卡...)的标准 RGB 图像。主要任务是检测文档边缘。接下来的步骤是众所周知的:灰度、模糊、Sobel 二值化、霍夫概率、找到矩形或梯形(如果找到梯形,则进行透视变换)。在简单的对比背景上一切正常。我询问降噪的原因是我必须处理数千个背景,并且无论使用什么选项,其中一些都会产生噪音。无论 Hough 如何配置,噪声都会导致额外的线路,并且额外的线路可能会欺骗后续逻辑并严重影响性能。(它在 java 脚本中实现,不支持 OpenCV 或 GPU)。