今天按照计划原本是要做做网站,和学习数据挖掘算法的“混沌时间序列”的,但由于毕业设计周六要交一些周报之类的,所以今天就整天在忙这个特征提取算法的实现。其中取得有一些比较好的进展。
对了,注意下先:下面的文字版权所有,请不要转贴。
好了,先介绍下我这个手写汉字识别的该书吧。
算法原理:通过手写汉字的骨架来确定汉字的基本特征。其实这很符合人类识别手写汉字的基本原理的。当然人还要参照上下文,这点我们就做不到了^_^。目前通过骨架大都是利用汉字的笔形,我们是通过取汉字的顶点(包含交叉点),以及顶点的方向向量(8维)的,来确定汉字的骨架。
前提条件:必须预先经过细化,二值化等等处理后才能使用改程序。
实现语言:matlab7.0
目前实现了汉字顶点提取的部分,但还存在一个问题,需要改经。
实现的主要过程是:
1、从上得到下从左到右扫描汉字(细化后是01矩阵来的,注意0是前景点)。
2、遇到前景点,进行深度范围搜索来确定改点的向量矩阵。注意,搜索截至条件是算法的关键! 具体在后面会谈到。
3、扫描完毕(注意访问过的前景点无需扫描),将得到一个最初的顶点坐标(n*2维的)和对应的方向矩阵(n*8维的)。
4、部分顶点合并,或者删除。比如在一定范围内的顶点必须何必,合并设计到方向向量矩阵的合并。至于为什么要合并,主要是因为微观上细化的数据可能会存在一些支末等等。
5,拆分。顶点的拆分,这个主要是为了让一个手写汉字的顶点书目能够统一。应该说这是整个算法思想的关键,也是特真提取效果好坏的关键。
具体代码在后续再说吧。我还改经下。