5

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

4

3 回答 3

6

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

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

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

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

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

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

于 2011-06-25T17:15:55.540 回答
2

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

于 2014-05-09T11:55:58.770 回答