gpt4 book ai didi

image-processing - 在空白的扫描申请表中查找数据输入点

转载 作者:太空宇宙 更新时间:2023-11-03 21:12:30 26 4
gpt4 key购买 nike

我是图像处理的新手,这就是我面临的问题 - 假设我有一张申请表的图像,如下所示:enter image description here

现在我想检测所有要输入数据的位置。在这种情况下,它将是将矩形分成许多框,如下所示(并非所有字段均已标记):

enter image description here

我可以忍受照片框也被检测到。我试过在 OpenCV 源代码中运行 squares.cpp 示例,这并不能完全满足我的需求。我也尝试了修改版本 here - 结果更糟(我的用例与那个问题中的 OP 绝对不同)。

此外,霍夫变换以获得线条在有/没有模糊阈值的情况下并没有真正起作用,因为扫描图像中的噪声会导致无关的线条,而且,阈值处理会带走部分梳子(小方 block ),因此线检测不合格。

请注意,此表单不是打印表单的扫描副本,但实际输入很可能是打印表单的嘈杂扫描图像。

虽然我确信这是可能的(至少在允许一定的容忍度的情况下)并且我正在尝试找到解决方案,但如果我从其他可能尝试过的人那里获得见解和想法,那将非常有帮助像这样的东西/享受对 CV 问题的黑客攻击。此外,如果答案能解释为什么要进行特定操作(例如,膨胀以尝试填补阈值留下的任何空洞等),那就太好了

最佳答案

表格是否一致?所有表格上的“此类框”大小都一样吗?如果您可以依赖一致的大小,如上表中的字符框,则可以使用模板匹配。

否则,问题似乎是:找到图像上的任何/所有矩形(通过后处理步骤过滤掉任何内部有大量标记的矩形,或合并相邻的矩形)。

越能利用表格之间的一致性,问题就越容易解决。使用您可以获得的任何上下文。

编辑

使用梯度(通过在 x 和 y 方向上使用 Sobel 内核计算)可以消除大量噪声。

同时使用两者,您可以找到梯度的方向(可以在此处找到方程式:en.wikipedia.org/wiki/Sobel_operator)。假设我们将框的区分特征定义为垂直或水平渐变。如果像素的渐变方向是水平直线或垂直直线,则保留它,将其他所有设置为白色。

为了使其对噪声更加稳健,您可以使用一个滑动窗口 (3x3),在其中计算中值方向。如果窗口的中值(或平均)方向是垂直或水平,则保留当前(窗口中间)像素,否则将其设置为白色。

您可以使用 OpenCV 进行梯度计算,也可以使用方向/相位计算,但您可能需要编写代码来执行实际的滑动窗口代码。我对 OpenCV 不是很熟悉

关于image-processing - 在空白的扫描申请表中查找数据输入点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13322719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com