【问题标题】:recognition of boggle/scrabble letters from an image [closed]从图像中识别拼字游戏/拼字游戏字母[关闭]
【发布时间】:2011-06-24 10:36:36
【问题描述】:

我对识别 Boggle 板上的字母很感兴趣,可能使用的是 openCV。字母都是相同的字体但可以旋转,所以使用标准的文本识别库有点问题。此外,M 和 W 有下划线来区分它们,而 Q 实际上是一个 Qu。 我相当有信心我可以隔离图像中的单独字母,我只是想知道如何进行识别部分。

【问题讨论】:

    标签: opencv image-processing computer-vision ocr boggle


    【解决方案1】:

    这取决于您需要多快。 如果您可以隔离字母的正方形并旋转它,使包含字母的正方形的边水平和垂直,那么我建议您:

    • 将图像转换为黑/白(字母为一种颜色,其余部分为另一种颜色
    • 制作所有四个可能方向(即直立和旋转 90、180 和 270 度)的所有字母的参考图像数据集
    • 使用模板匹配函数(例如cvMatchTemplate)为每个新图像从您的数据集中找到最佳匹配图像。

    这需要一些时间,因此可以进行优化,但我认为它会给您带来合理的结果。 如果很难让它们处于正确的方向,您还可以动态生成新输入的旋转版本,并将它们与您的参考数据集匹配。

    如果字母的比例不同,那么我可以想到两种选择:

    • 如果方向不是问题(即您的拼块检测也可以将块置于正确的方向),那么您可以使用具有字母颜色的区域的边界框作为传入图片比例的粗略指标,并将其缩放为与参考图像上的边界框相同的大小(每个参考图像可能不同)
    • 如果方向是一个问题,那么只需添加缩放作为搜索空间的参数。因此,您搜索所有旋转(0-360 度)和所有合理尺寸(您应该能够从您拥有的图像中猜出一个合理的范围)。

    【讨论】:

    • 这适用于不同尺寸/缩放的图像吗?即,如果相机离瓷砖更近或更远?
    • 我更新了我对你问题的回答。
    【解决方案2】:

    您可以使用简单的 OCR,例如 Tesseract。它使用简单,速度非常快。不过,您必须进行 4 次旋转(如@jilles de wit 的回答中所述)。

    【讨论】:

      【解决方案3】:

      我基于 OpenCV 制作了一个执行此操作的 iOS 应用程序。它被称为SnapSolve。我写了一个blog 来介绍检测的工作原理。 基本上,我在每个形状上覆盖所有 26x4 可能的字母 + 旋转,并查看哪个字母重叠最多。对此稍作调整是平滑叠加图像,以消除字母几乎重叠但不完全重叠的伪影。

      【讨论】:

      • 我已经有几年没有看我的项目了,但是非常有趣的文章,谢谢。关于在 javacsript 中进行操作的博客链接也很有趣。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      相关资源
      最近更新 更多