36

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

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

您是否知道可以做到这一点的任何算法、方法或库(检测图像上是否存在文本)?

谢谢,约翰

4

3 回答 3

21

视觉中有一个标准问题,称为图像中的文本检测。它与 OCR 完全不同。OCR 关注它所说的内容,而文本检测是关于确定图像中是否有文本。Adi Shavit 的第三个链接是解决这个问题的方法。您可以查看关于文本检测的 google 学者被广泛引用的文章。

于 2011-01-05T22:12:53.223 回答
16

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

  1. 使用 OCR。在 Stackoverflow 上搜索 OCR 将显示许多选项。这些包括TesseractOcropus
  2. 如果您的文本使用非常特定的固定字体,您可能会使用简单的模板匹配
  3. 在更一般的情况下,您可能需要查看“使用笔画宽度变换检测自然场景中的文本

2017 年 1 月更新
OpenCV 3.2 contrib 模块现在有一个文本检测模块
它还包括如何使用它的示例( C++Python )。

于 2011-01-05T18:52:25.477 回答
0

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

OCR 是可行的方法,您应该使用现有的库。然而,OCR 主要是对白色背景上的文本进行的。要将您的问题简化为常规的 OCR 问题,您应该尝试处理地图的颜色空间。地图文本可能具有非常特定的颜色,这可能足以找到这些像素。然后,您可以根据连接区域的大小过滤检测到的像素。

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

于 2013-09-21T08:05:10.423 回答