字符候选的特征使用

我部分实现了笔画宽度变换算法。我的实现虽然不够优雅,但确实有效

我的实现生成了许多候选(我使用了一些规则来过滤它们)。但我仍然有很多非字符候选。我想使用神经网络(或其他机器学习算法)来过滤它们。

我应该为我的分类器使用哪些特征?

我可以提取均值/标准差(组件的SW值)和宽度/高度。

示例:

enter image description here

红色矩形是字符候选(实现未检测到亮色背景上的暗色字符,“Land Rover”的检测不佳是正常的)组件过滤后的SWT图像

enter image description here


回答:

神经网络和其他技术如SVM不是用来过滤输入的,而是用来对输入进行分类。区别在于,过滤会根据输入是否符合设定的规则来丢弃输入,因此不需要任何训练(更可能是设置一些好的阈值)。而训练过的分类器则会为给定的输入分配一个类别,这意味着你需要用预期的类别以及负样本来充分训练分类器。因此,如果你想做前者或后者,方法会有所不同,但你在前者中使用的特征可能对后者也有用。

无论你选择哪条路径,首先需要进行一些基本的预处理,这意味着要清除示例中组件内部的多余白点。之后,有很多选项可用。基本的宽度和高度测量可以用来过滤那些你确定不符合预期的组件,因此也无需对其进行分类。通过考虑连接组件的骨架,你可以得到端点和分支点,这形成了两个特征。欧拉数是另一个特征,实际上,有太多可能的特征可以提取,这里无法一一列出。这些提到的特征的特点是它们都是尺度、旋转和平移不变的。这也意味着你需要其他特征来区分,例如区分96,骨架中孔的质心就是这样一个例子(但要注意,因为直接提取这个特征对任何变换都不具有不变性)。

请注意,即使是简单的特征也可以帮助区分整个字符集。例如,对于欧拉数=0,你将只得到’A’、’D’、’O’、’P’、’Q’、’R’、’0’、’4’、’6’或’9’,假设是ascii字母数字,字体表现良好,并且输入经过良好的预处理。

最后,有相当数量的论文可以查找更多信息和超越SWT的不同方法。例如,T-HOG是其中一个较新的方法,根据发表的结果,它比SWT略胜一筹。

编辑:总结并扩展:

如果你想使用机器学习,你将需要大量标记好的数据,以便从中分离出用于训练和测试的数据。如果你的目标只是区分“这是字符”和“這不是字符”,并且后一类别没有得到充分描述(即,你只有很少的非字符示例,或者你无法为可能接收到的任何类型的输入对其进行描述),单类SVM是一个选项。

对于从单个字符中提取的特征,如前所述,有太多特征和许多方法。论文“特征提取方法用于字符识别——一项调查”(1995年,相当古老)讨论了一些方法(它还提到了预期的最小训练数据量,请务必阅读),所以我在这里包含了其部分内容。

可能从字符中提取的良好特征(适用于灰度和二值图像):

  • Hu、Reiss、Flusser、Suk、Bamieh、de Figueiredo矩(所有基于Hu在“通过矩不变量进行视觉模式识别”中的初始工作改进的几何矩不变量);
  • 泽尼克矩

从骨架化字符中提取的良好特征:

  • T形接点的数量;
  • X形接点的数量;
  • 弯曲点的数量;
  • 端点的数量;
  • 通过将原点放置在形状的质心处,与轴的交叉次数;
  • 半圆的数量

傅里叶描述符也可以应用于骨架、二值表示或如所述论文中讨论的字符的图形表示。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注