识别图像中的boggle / scrabble字母

时间:2011-06-24 10:36:36

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

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

3 个答案:

答案 0 :(得分:6)

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

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

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

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

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

答案 1 :(得分:4)

您可以使用像Tesseract这样的简单OCR。它使用简单,速度非常快。你必须做4轮旋转(如@jilles de wit的答案中所述)。

答案 2 :(得分:2)

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