Svm应用尝试(C#写的数字ocr软件LTOCR) _掉了后我找回来了!

通过前几天对 svm 的学习,结合最近对 .net 的 winform 的学习 , 昨天在以前的 libsvm 的基础之上写了一个简单的 ocr 数字识别程序。

对于 libsvm 的使用最重要的有两点 :

1 针对不同的使用选取不同核函数 .

2 训练样本的有效性和代表性 , 样本的覆盖面约大越好。

针对数字 ocr 的识别 , 特征向量的选取就非常的重要。由于是对 ocr 和 libsvm 的尝试 , 所以我的训练使用的是手写的图片,拖动鼠标,在 picturbox 控件上画的数字图片 , 既能训练 , 也能用来识别。样本数据保存在数据库中,需要识别的时候载入数据库的样本数据训练该分类识别器。

图片选择 160160 的大小 , 特征向量选择 : 垂直投影 , 暂时没有经过边缘轮廓提取。简单的把该图片分成 1616 网格 , 每个网格的特征向量值 : 黑色的像素点 / 总的像素点 , 每个数字样本垂直投影后总共现只有 16 个特征向量,每个向量也就是垂直网格列的合计。依次顺序为 :1,2,3,4…..16 ,为 0 (也就是空白)的特征向量在训练的时候也没有过滤掉。

1

|

2

|

3

|

4

|

5

|

6

|

|

15

|

16

|

数字

|

value

---|---|---|---|---|---|---|---|---|---|---

0.390625

|

0

|

0.59765625

|

0.625

|

|

|

|

|

|

数字 1

|

1

|

|

|

|

|

|

|

|

|

数字 2

|

2

|

|

|

|

|

|

|

|

|

数字 1

|

1

|

|

|

|

|

|

|

|

|

数字 3

|

3

……

|

|

|

|

|

|

|

|

|

|

效果:还不是特别满意 :

( 1 ): 1 的识别率 100%

( 2 ): 3 和 8 的识别率只有 40% ,经常会 3 识别成 8 , 8 识别成 3 ,看来图像没有处理 , 特征向量的选择有很大的关系。

( 3 ):惩罚因子选择的是 100 。

Ps: 本人不善于表达。可惜,在这个 blog 上面不能贴图,也不能上传 demo 软件。只是由于对编程的爱好,促使我把自己的一些东西拿来和大伙分享 , 希望能够起到抛砖引玉的作用。也希望有更多的大虾来指点 , 交流。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus