汉王嵌入式手写识别核心原理及合作开发经验.doc

上传人:s9****2 文档编号:559394006 上传时间:2023-12-19 格式:DOC 页数:4 大小:927.50KB
返回 下载 相关 举报
汉王嵌入式手写识别核心原理及合作开发经验.doc_第1页
第1页 / 共4页
汉王嵌入式手写识别核心原理及合作开发经验.doc_第2页
第2页 / 共4页
汉王嵌入式手写识别核心原理及合作开发经验.doc_第3页
第3页 / 共4页
汉王嵌入式手写识别核心原理及合作开发经验.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《汉王嵌入式手写识别核心原理及合作开发经验.doc》由会员分享,可在线阅读,更多相关《汉王嵌入式手写识别核心原理及合作开发经验.doc(4页珍藏版)》请在金锄头文库上搜索。

1、汉王嵌入式手写识别原理及合作开发经验密级:保密版本:V1.0完成日期:2002-11-15修改记录:内容简介本文介绍了手写识别的原理,以及几年来汉王和合作伙伴的开发经验。预期读者是嵌入式手写软件开发人员和相关人员。手写识别原理1手写识别软件手写识别软件包括两部分:识别程序和识别字典。(1) 识别程序是指可执行代码,通常都是用C语言生成。由于每识别一个字都做大量的运算和内存访问,因此CPU的运算速度和内存访问的方式和速度对识别来讲是至关重要的。如果CPU运算速度比较低,那么就需要将C语言全部移植成汇编语言,工作量和调试难度都很巨大。识别程序通常根据开发工具的情况可以有2种提供方式:.OBJ文件或

2、由.OBJ文件构成的(函数)库文件。(2)识别字典是在识别程序运行过程中必须要用到的特殊的数据库,它包含可识别字符集中全部字符的手写特征描述(即模板)。识别字典是由字典生成程序对大量的训练样本进行复杂的运算生成的。识别字典的提供方式也有两种:.BIN(二进制数据文件)或和代码一起编译成库文件。2识别过程描述联机手写文字的识别过程即是将通过手写设备采样得到的笔迹数据,经过识别程序的处理,最后转化为计算机所使用的文字代码的过程。通常分为四个阶段:预处理、归一化、特征抽取、特征匹配。见下图3识别性能指标通常评价一个识别软件的好坏,主要依据以下几个性能指标:(1) 识别率:指对特定的某个大规模的测试样

3、本集的识别正确率,通常细分为首选正确率和十选正确率。测试样本集通常分为:工整字、连笔字、自由书写字(即倒插笔字)。(见国家八六三评测)因此,识别能力(如能否识别连笔字?能否识别倒插笔?)也是识别性能评价的一个重要指标。(2) 识别速度:每识别一个待测样本(字)所耗费的CPU运行时间。(3) 可识别字符集的范围大小:通常包括标准汉字(GB2312规定的6763个汉字)、异体字(繁体字和非标准的简化字)、英文字母、阿拉伯数字、标点、符号等。(4) 识别字典的大小(5) 对内存(RAM)的需求:即在识别过程中所需要的内存(RAM)的多少。如果一个识别软件的识别率很高、识别速度很快、可识别字符集范围很

4、全面、识别字典很小、内存需求也很少,那么它就是一个非常好的识别软件了。识别性能取决于识别程序和识别字典的构造。合作开发的经验1 通常汉王会关心合作厂商的以下技术信息:MCU/CPU:主要是其运算能力,其指标是MIPS或时钟频率MHz;这关系到是否有必要对识别程序做汇编级的优化。通常RISC的MCU并且时钟频率在30MHz以上,就不必做,如ARM7系列;其它的MCU如68000系列和16位机、8位机等,都必须全部用汇编语言实现。目前汉王已经支持的MCU,请参阅“汉王嵌入式手写识别技术现状”。内存访问方式:连续线性地址空间还是分段访问。数据流顺序:LittleEndian还是BigEndian。通

5、常X86系列都是LittleEndian,68000系列都是BigEndian,而ARM系列则两者兼而有之。开发工具: 编译器:由合作伙伴向汉王提供。 调试器:如果可以在PC机上使用集成的调试工具,如SDS7.4、SDT2.51,那么将大大提高手写核心的开发速度;如果只能在目标机上使用“printf”的手段,那么开发速度会大受影响。必要的调试工具如开发板等由合作伙伴提供。软件提交方式:代码和识别字典编译成一个库;或代码和识别字典分开。2 合作厂商会关注识别性能指标请参阅“汉王嵌入式手写识别技术现状”。3 汉王的开发接口请参阅“汉王嵌入式手写识别接口.DOC”。解释:这个接口方式是我们在合作中总

6、结出来的,主要的优点是简单、可靠。因为不同的嵌入式OS中类似内存申请/释放和文件读取之类的操作机制都不尽相同,而手写核心属于比较低层的外部模块,它和目标系统的关联性或耦合性越低,模块本身的可靠性就只和汉王有关,而不受目标系统的复杂度影响,易于双方调试和维护各自的程序。4 如何调试手写识别程序(1) 汉王内部调试通常,汉王都会在目标测试平台上经过完备的测试之后,才向合作伙伴发放程序;除非我们手头没有适当的调试工具。这种测试平台根据目标系统的不同,有时需要依靠合作伙伴的帮助才能建立起来。(2) 测试样机在测试样机中,合作伙伴的程序员按照我们的识别接口,来连接程序。这时由于测试样机的软硬件的复杂和不

7、稳定:触摸屏硬件及驱动程序、FLASH或ROM、手写窗口程序、系统中断、屏幕显示、进程调度等等,有时很难判断问题是出在汉王的识别模块内部还是系统本身的问题。关键:如果连入识别模块后发生问题,首先要确定问题的来源:在识别模块的内部还是外部。我们的建议是:为了降低复杂度,采用排除法。即,使用固定的笔迹数据来测试识别接口和模块的正确性,例如:最简单的中文“一”的笔迹数据 0x10,0x10,x020,0x10,0xff,0x00,x0ff,0xff 。如果识别结果是正确的,通常就可以断定问题是在识别模块的外部;合作方的程序员就至少不用再为识别模块操心了。开发中的常见问题和解决办法1. 调用识别函数时

8、死机。可能的原因:(1) 待识别的笔迹数据格式不符合识别接口中的规定。(2) 识别字典没有按照4字节对齐的方式放置。(3) 识别字典在传输到FLASH或ROM后,部分数据丢失或被破坏。(4) 给识别模块分配的内存没有4字节对齐。(5) 识别模块程序错误造成内存越界。(6) 全局变量问题。识别模块中有2个全局变量,有的系统中需要声明这两个变量的数据段名,以便和系统缺省的名字相同。(7) 函数调用方式问题。由于有的系统中汉王的部分模块是用汇编语言写的,因此和C语言连接时,有两种方式:Call和Calling方式。Call方式要求函数在返回前,在函数内部自己恢复堆栈指针;而Calling方式则不需要做这种动作。解决:上面的问题中,14属于使用者方面,解决的办法就是仔细对照接口规范编写程序;57和识别模块自身相关,但是在汉王自己的测试平台上一般难以发现。2. 识别效果差可能的原因:(1) Touch Panel的驱动程序中,采样频率的设定:通常3090点/秒对手写识别来讲,就基本足够了;太低或太高都不合适。(2) 可以明显看出笔迹变形比较大,呈锯齿状。这需要修改Touch Panel驱动程序,去除噪声点。(3) 书写格子太小。通常80*80是合适的;格子太小造成书写者不习惯,笔迹结构变形。参考文件“汉王嵌入式手写识别技术现状”“汉王嵌入式手写识别接口.DOC”

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号