我正在创建一个基于Java的OCR。我的目标是从视频文件中提取文本(后处理)。
这是一个困难的搜索,试图找到免费的,完全在Java上工作的开源OCR。我发现Tess4J是唯一流行的选择,但考虑到对本机接口的需求,我不知何故倾向于从头开始开发算法。
我需要创建一个可靠的OCR,正确地识别英文字母表(计算机化的字体,而不是手写文本)以合理的准确性,给定的文本位于视频帧中的区域是预先定义的。我们也可以假设文本的颜色是给定的。
我到目前为止所做的事情:
(所有图像处理都是使用openCV的Java绑定完成的)
A.像素强度,在将字符图像下采样到12 x 12分辨率后。(144个特征向量)
B. Gabor小波变换跨越8个不同的角度(0,11.25,22.5 ...etc),并使用所有这些角度的信号的均方值计算能量。(8个特征向量)
A+B给了我图像的特征向量。(共152个特征向量)
我有62个分类类,也就是。0,1,2...9 | a,b,c,d...y,z| A,B,C,D...Y,Z
我使用20x62个样本(每个类20个)来训练分类器。
A.具有1个隐藏层( 120个节点)的ANN。输入层有152个节点,输出有62个节点。隐藏层和输出层具有sigmoid激活函数,网络使用弹性反向传播进行训练。
B.整个152个维度的kNN分类。
我所站的地方::
到目前为止,K-近邻搜索被证明是一种比神经网络更好的分类器。然而,即使使用kNN,我也发现很难对字母进行分类,比如:
或
。
此外,它是分类的
作为Z..。举几个反常的例子。
我要找的东西:
我想知道以下几点:
欢迎对性能优化提出任何其他建议。
发布于 2015-06-11 21:02:36
对于特征向量:你对强度进行了标准化吗?也许可以使用直方图均衡化。
对于分类:看看t-SNE。它是一种随机方法,可以将高维特征简化为更容易使用的2D平面。
https://stackoverflow.com/questions/23871459
复制相似问题