2015-09-11 84 views
1

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

任何人都可以帮助我如何实现这一目标?例如:如果我的文字图像的字母'A',那么它必须分成三个基本组件'/',' - '和'\'。

+0

您可以手动创建的所有可能的*成分* A *模板*,那么,对于一个给定的图像,你可以使用[模板匹配(http://docs.opencv.org /doc/tutorials/imgproc/histograms/template_matching/template_matching.html)(或者只是简单的相关性,因为你的图像看起来很简单)匹配所有可能的模板,然后以最高的概率/相关性过滤组合。 –

回答

0

处理这种问题(数字或字符识别)有多种方法,如各种尺度上的模板匹配(主要是递减尺度),基于特征的方法(如HOG特征),这些特征被广泛用于数字和字符识别。

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

最简单的计算策略:

如果你有阈值的图像(即,二值图像),只进行图像打开操作具有不同取向像水平线分割水平线,垂直垂直线线路结构元件如果您熟悉MATLAB,您可以使用“strel()”函数创建具有不同方向和长度的不同线结构,只需在适当长度的线上应用“imopen”操作(根据你的角色大小)。 你必须做一些命中并尝试线的长度和方向。

稍用力方式

但非常有用的方法是应用霍夫变换比你可以检测到任何类型的线路和自定义曲线但对于这个你必须做小小的努力。 下面是其遵循了同样的做法试卷一些链接: http://www.cse.unr.edu/~bebis/CS474/Handouts/HoughTransformPaper.pdf http://homepages.inf.ed.ac.uk/rbf/BOOKS/BANDB/LIB/bandb4_3.pdf

哈德路

使用一些基于特征的技术,如HOG,这是基于梯度阅读取向试试监督方法有关它的东西,它可能会帮助你。

所有最优秀的

+0

我的努力是针对omnifont(独立于字体的)光学字符识别系统。字符集本身很大(梵文字符集包括连词)。这里[链接](http://arxiv.org/pdf/1202.3884.pdf)是我经历的论文。我不熟悉** MATLAB **。在C#中有没有替代**的MATLAB **库? –

+0

嗨Niranjan,我刚刚通过你提到的链接,文中提出的方法是非常有说服力的基本水平的字符识别,但是因为你有大量数据集,那么我认为它也会有很多变化对应于结构,更强大的方法来尝试这些类型的问题是基于特征的方法,正如我前面讨论过的,我已经使用HOG特征做了一个数字分类器,并且它是一次成功的尝试,在OpenCV中您可以找到一个用于HOG特征搜索的库为此,或者如果你知道它的理论或原则,你可以实施它。 –

+0

另一种方式就像我已经讨论过的图像打开操作一样,它不是MATLAB的依赖操作,基本上它是在侵蚀操作之后膨胀的。我也使用这种方法进行字符集的垂直和水平线检测。只是应用图像打开与例如3X3的面具如中心列有1和所有其他元素为0和第一侵蚀二进制图像,并扩大它;这会给你所有的字符垂直线,同样你可以尝试水平和对角线元素,根据字符大小选择掩码大小,我想你可以试试这个。 –