2013-02-09 33 views
1

我部分实施the Stroke Width Transform algorithm。 我的实现是丑陋的,但有些作品从角色候选人使用什么功能

我的实现给了我很多候选人(我使用一些规则来过滤它们)。但我仍然有很多非角色的候选人。 我想用神经网络(或其他ML算法)来过滤它们。

我应该为我的分类器使用什么功能?

我可以提取mean/std(组件的SW值)和宽度/高度。

实施例:

enter image description here

红色矩形是字符候选 (实施不检测光上暗的字符,坏检测“路虎”是正常的)分量滤波后 SWT图像这是一个在实践中

enter image description here

+0

如果你可以包含你得到的输出,这将有很大帮助,所以我们可以看到哪些描述符可能有用。例如,我不知道什么构成你的(非)角色候选人,特别是因为你提到“我的实现很丑,但有些作品可行”。这意味着它可以产生任何类型的输出。 – mmgp 2013-02-09 14:37:20

+0

我添加了一个样本。我将在稍后添加更多示例和关于组件的一些信息 – 2013-02-09 14:46:17

+0

这没有多大帮助。您将根据SWT变换的结果提取特征,对吧?所以你需要在SWT之后包含结果图像,而不是包含所选矩形的原始图像。 – mmgp 2013-02-09 14:53:40

回答

1

神经网络和其他技术如SVM不用于过滤输入,而是用于分类输入。不同之处在于,过滤将基于它们是否匹配强加的规则而丢弃输入,因此它实际上不需要任何培训(更可能是几个良好的阈值)。另一方面,A /训练/分类器为给定输入分配一个类,这意味着您需要充分训练具有预期类别和负样本的分类器。所以如果你想要做前者或后者,这些方法会有所不同,但是你在前者中使用的特征对于后面的功能可能也是有用的。

对于你采取的任何路径,一些基本的预处理包括首先得到一个更清晰的组件,我的意思是去除组件中存在的无关白点。之后,有很多选项可用。基本的宽度和高度测量可用于过滤那些确定与您的期望不符的组件,因此无需对它进行分类。通过考虑连接组件的骨架,您可以获得形成两个特征的端点和分支点。欧拉编号是另一个,事实上,在这里列出所有可能的特征将被提取出来。这些特征的特点是它们都是规模,旋转和平移不变的。这也意味着你需要另一个特征来区分96,骨架中的孔的质心将是一个这样的例子(只要注意它,因为直接提取这个特征并不是不变的任何东西)。

请注意,即使简单的功能可以帮助分离整个字符集。例如,对于欧拉数= 0,只会得到'A','D','O','P','Q','R','0','4','6',或'9',假设ascii alphanum,表现良好的字体以及对输入的良好预处理。

最后,除了SWT以外,还有相当多的论文寻找更多的信息和不同的方法。例如,T-HOG是最近的一个,根据公布的结果,它比SWT略好。

编辑:恢复和扩大:

如果你想使用机器学习,你需要从中你可以单独进行训练和测试标记数据的良好屈指可数。如果你的目的只是将“这是一个角色”与“这不是一个角色”区分开来,而后一类没有充分描述(即你没有什么不是一个角色的例子,或者你不能把它描述为您可以接收任何类型的输入),One-Class SVM是一种选择。

如前所述,要从单个字符中提取要素,其中有太多的方法和方法。文章“字符识别的特征提取方法 - 一项调查”(1995年,根本不是最近)讨论了其中的一些(它也提到了预期的最小规模的培训数据,一定要阅读它),所以我包括部分内容在这里。

大概好等特点,从字符提取(包括灰度和二进制图像):

  • 胡赖斯,Flusser,苏克,Bamieh,菲格雷多矩(基于改进所有几何矩不变量Hu在“矩不变式视觉模式识别”中的初步工作);
  • Zernike矩

好特征以从骨架字符提取:

  • T型接头的数量;
  • X型接头的数量;
  • 弯曲点数量;
  • 终点数量;
  • 通过将原点放置在形状的质心中与轴的交点数;
  • 编号半圆

傅立叶描述符也可以在任一骨架,二进制表示,或作为在所提到的本文所讨论的字符的图形表示施加。

1

一种方法是只缩放所有考生一样尺寸(宽度x高度),然后将每个像素输入到神经网络中。

然后,您将为每个字符输出一个值(在0和1之间返回,表示匹配有多接近)(可能还有最后一个输出表示不匹配,尽管这可能是由于没有明确的候选项字符)。

对于神经网络,您将需要相当多的训练数据,这只是它的方式。选项以避免手动获取所需的训练数据:

  • 查找训练数据在线
  • 算法生成的训练数据(创建一个算法来绘制人物和背景,并将其送入NN)上
  • 执行转换已经获得了训练数据(旋转,调整大小,更改颜色)。这可以使一个相当小的训练集相当大一点。请确保不要尝试以这种方式产生太大比例的数据,否则您的网络可能无法正常运行。
+0

谢谢你的回答!但是如果我使用这些方法,那么我需要非常大量的样本来有效地训练安?也许有更有效的方法? – 2013-02-09 14:41:09

+0

@Dark_Daiver请参阅编辑。 – Dukeling 2013-02-09 14:49:32

+0

正负样本的比例是多少? – 2013-02-09 15:03:16