【问题标题】:How to Segment text image to its Basic Components like line and curves?如何将文本图像分割为其基本组件,如直线和曲线?
【发布时间】:2015-09-11 03:30:50
【问题描述】:

我正在使用 C# 进行 OCR 项目。我正在考虑将文本图像分割为其基本组成部分,如线条、曲线、循环并找到它们的方向,以便我可以将它们用于特征提取和识别。

谁能帮我实现这个目标?

例如:如果我有字母'A'的文本图像,那么它必须被分割成三个基本组件'/','-'和'\'。

【问题讨论】:

  • 您可以手动创建一个包含所有可能的组件模板,然后,对于给定的图像,您可以使用template matching(或者只是简单的相关性,因为您的图像看起来很简单)匹配所有可能的模板,然后过滤具有最高概率/相关性的组合。

标签: c# image-processing computer-vision ocr


【解决方案1】:

解决这类问题(数字或字符识别)有不同的方法,例如各种尺度的模板匹配(主要是递减尺度),基于特征的方法,例如广泛用于数字和字符识别的 HOG 特征。

现在回答您的问题,有一些方法可以检测图像中的线条和曲线。

最简单的方法:

如果您有一个阈值图像(即二值图像),只需使用具有不同方向的 Line 结构元素应用图像打开操作,例如水平线分割的水平线、垂直线分割的垂直线或对角线检测的对角线,如果您熟悉 MATLAB,您可以使用“strel()”函数创建具有不同方向和长度的不同线结构,并使用合适长度的线应用“imopen”操作(根据您的人物)。 你必须做一些打击并尝试线的长度和方向。

有点困难的方法

但是非常有用的方法是应用 Hough 变换,您可以检测任何类型的线和定义的曲线,但为此您几乎不需要做任何艰苦的工作。 以下是遵循相同方法的论文的一些链接: http://www.cse.unr.edu/~bebis/CS474/Handouts/HoughTransformPaper.pdf http://homepages.inf.ed.ac.uk/rbf/BOOKS/BANDB/LIB/bandb4_3.pdf

更艰难的道路

尝试使用一些基于特征的技术(例如 HOG)的监督方法,这些技术基于梯度的方向阅读有关它的内容,它可能会对您有所帮助。

一切顺利

【讨论】:

  • 我的工作是开发omnifont(字体无关)光学字符识别系统。字符集本身很大(天城字符集包括连词)。 link 是我看过的论文。而且我不熟悉 MATLAB。 C# 中的 MATLAB 库是否有任何替代方案?
  • 嗨 Niranjan,我刚刚浏览了您提到的链接,论文中提出的方法对于基本级别的字符识别非常有说服力,但是由于您拥有大量数据集,所以我认为它会也有很多可变性对应于结构,尝试这类问题的更稳健的方法是基于特征的方法,正如我之前讨论过的,我已经使用 HOG 特征制作了一个数字分类器,这是一次成功的尝试,在 OpenCV 中你可以找到一个 HOG 特性库 搜索那个,或者如果你知道它的理论或原理,你可以实现它。
  • 另一种方式就像我讨论过的图像打开操作,它不是MATLAB依赖的操作,基本上是腐蚀操作后的膨胀。我也将这种方法用于字符集的垂直和水平线检测。只需使用例如 3X3 的掩码应用图像打开,例如中心列有 1,所有其他元素为 0,然后首先腐蚀二进制图像,然后再膨胀它;这将为您提供字符的所有垂直线,同样您可以尝试水平和对角线元素,根据字符大小选择蒙版大小,我认为您可以尝试一下。
猜你喜欢
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
  • 2015-01-27
  • 2013-11-09
  • 2014-01-30
  • 2021-05-19
  • 1970-01-01
  • 2015-10-20
相关资源
最近更新 更多