【问题标题】:OCR detection with openCV使用 openCV 进行 OCR 检测
【发布时间】:2013-03-19 13:36:02
【问题描述】:

我正在尝试使用 openCV 创建一个更简单的 OCR 引擎。我有这张图片:https://dl.dropbox.com/u/63179/opencv/test-image.png

我已将所有可能的字符保存为图像并尝试在输入图像中检测这些图像。

从这里我需要识别代码。我一直在尝试 matchTemplate 和 FAST 检测。两者似乎都失败了(或者更有可能:我做错了什么)。

当我使用 matchTemplate 方法时,我使用 Sobel 找到了输入图像和参考图像的边缘。这提供了一个工作结果,但准确性不够好。

当使用 FAST 方法时,我似乎无法从 cvExtractSURF 方法中得到任何有趣的描述。

关于能够阅读此类代码的最佳方式的任何建议?

更新 1 (2012-03-20)

我已经取得了一些进展。我正在尝试找到字符的边界矩形,但矩阵字体正在杀死我。请参阅以下示例:

我的字体:https://dl.dropbox.com/u/63179/opencv/IMG_0873.PNG

我填写的字体:https://dl.dropbox.com/u/63179/opencv/IMG_0875.PNG

其他字体:https://dl.dropbox.com/u/63179/opencv/IMG_0874.PNG

从示例中可以看出,我发现边界矩形用于不太复杂的字体,如果我可以填充字体中点之间的空间,它也可以工作。有没有办法用opencv实现这一点?如果我能找到每个字符的边界框,识别字符会简单得多。

有什么想法吗?

更新 2 (2013-03-21)

好的,我很幸运找到了边界框。见图片: https://dl.dropbox.com/u/63179/opencv/IMG_0891.PNG

我不知道从这里去哪里。我尝试使用 matchTemplate 模板,但我想在这种情况下这不是一个好的选择?我想在更大的图片中搜索完全匹配时会更好?

我尝试使用 surf,但是当我尝试使用 cvExtractSURF 为每个边界框提取描述符时,我得到 0 个描述符...有什么想法吗?

哪种方法最适合用于将边界框与参考图像进行匹配?

【问题讨论】:

    标签: opencv surf matchtemplate


    【解决方案1】:

    您在使用 FASt+SURF 时会遇到困难,因为它们不是为这项任务而设计的。 特别是,FAST 可以检测出在运动结构中普遍存在但在 OCR 中却很少出现的角状特征。

    两个建议:

    1. 也许可以从 FAST 关键点的数量和位置构建一个特征向量,我认为 oyu 可以快速检查这些特征是否足够区分,如果是则从中训练分类器
    2. (我自己会选择的那个)将您的图像样本分割成更小的方块。仅计算每个正方形的 SURF 描述符,并将它们全部连接起来以形成给定样本的特征向量。然后使用这些特征向量训练分类器。

    请注意,选项 2 适用于您可以在 OpenCV 中找到的任何描述符(SIFT、SURF、FREAK...)。

    回答更新1

    这是我开始时前辈教我的一个小技巧。 在带有点的图像上,您可以将二值化数据投影到水平轴和垂直轴。 通过在投影模式中搜索漏洞(断开),您可能会恢复示例中几乎所有的边界框。

    回答更新2

    此时,您又回到了我最初的答案:SURF 在这里没有用。 相反,一种标准方法是对每个边界框进行二值化(根据背景/字母将边界框归一化为 0 - 1),将边界框标准化为标准尺寸,然后从这里训练分类器。

    网上有很多关于如何使用神经网络或 SVM 进行数字识别的教程和博客文章,您只需将数字替换为字母即可。

    你的工作快完成了!训练和使用分类器既繁琐又简单。

    【讨论】:

    • 好的,我会找到更小、更多的矩形,这样我会在每个点周围得到一个矩形。然后我将测量点之间的距离,如果距离足够小,我将合并矩形。这样我应该能够找到几乎整个角色的周围矩形。当我有一个足够接近的矩形时,我将使用它来训练应用程序,并且我可能能够匹配字母。听起来不错?
    • 如果你模糊了你的图像,我在更新中描述的小技巧应该可以直接工作,而不必考虑点距离。此外,对边界框大小进行先验可能比您建议的更强大(谷歌“单链接”以查看考虑点距离的优势和风险)。
    猜你喜欢
    • 2021-12-07
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 2012-02-28
    • 2012-12-08
    相关资源
    最近更新 更多