检测图像上文本存在的算法

时间:2011-01-05 16:08:47

标签: image image-processing opencv computer-vision image-recognition

通过我的新作业,我正在寻找一种方法来检测图像上是否存在文本。图像是地图 - 例如可以是谷歌地图。任务是检测街道/城市标签的放置位置。

我知道opencv库具有可以检测特征的算法(例如人脸) - haar分类器或hog(定向梯度的直方图),但我听说这种算法的学习过程非常困难。

您是否知道可以执行此操作的任何算法,方法或库(检测图像上是否存在文本)?

谢谢, 约翰

3 个答案:

答案 0 :(得分:21)

在视觉中存在标准问题,称为图像中的文本检测。它与OCR完全不同。 OCR用它所说的来表达自己,而文本检测则是关于确定图像中是否有文本。 Adi Shavit的第三个链接是解决这个问题的方法。你可以在text detection上查看google scholar引用文章。

答案 1 :(得分:16)

您可以采取几种可能的方法。

  1. 使用OCR。在Stackoverflow上搜索OCR将显示许多选项。其中包括TesseractOcropus
  2. 如果您的文字使用非常具体的固定字体,则可能会使用simple template matching
  3. 在更一般的情况下,您可能需要查看“Detecting Text in Natural Scenes with Stroke Width Transform
  4. 2017年1月更新
    OpenCV 3.2 contrib模块现在有一个text detection module 它还includes a sample如何使用它。

答案 2 :(得分:0)

您需要将其调整为特定类型的地图图像,否则问题将非常困难(请参阅上一篇文章链接到文章)。

OCR是要走的路,你应该使用现有的库。但是,OCR主要是在白色背景上的文本上完成的。要将问题减少到常规OCR问题,您应该尝试处理地图的颜色空间。可能地图文本具有非常特定的颜色,这可能足以找到这些像素。然后,您可以根据连接区域的大小过滤检测到的像素。

如果您真的只想找到文本标签的位置,您可以执行上述操作,并且几乎只是跳过OCR步骤。如果标签不是太近,可以使用简单的聚类算法来找到它们各自的位置。