基于嵌入式Linux的汉字输入法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于嵌入式Linux的汉字输入法
An Approach to Chinese Input based on Embedded Linux
Abstract: The Chinese input problem is essential to an embedded system. An approach to on-line recognition of handwritten Chinese stroke is proposed., including its realization in embedded system.
Keywords: handwritten Chinese character recognition; on-line recognition; dynamic recognition; embedded system
摘要:汉字输入法是嵌入式系统输入的一项重要技术,它的功能与性能直接影响到嵌入式系统在中国的推广与应用。

主要研究了联机汉字手写体输入法,以及在嵌入式系统中实现汉字手写体输入法。

关键词:手写体识别;联机识别;动态识别;嵌入式系统;
.1 引言
在信息时代,嵌入式系统如个人数字助理(PDA)、JAVA手机、人工智能电器等已广泛渗入人们的日常工作和生活中。

由于受到键盘大小和按键数目的限制,汉字输入是影响嵌入式系统使用的重要因素。

具有强烈人性化的手写汉字输入是解决嵌入式系统汉字输入问题的最佳方法之一。

随着硬件成本的降低和汉字手写体识别技术的提高,汉字手写识别在嵌入式系统的应用将会日益广泛。

嵌入式系统是硬件资源受限系统,所以汉字手写体识别应考虑到嵌入式系统这个特点。

其中比较重要的是,嵌入式系统的硬件配置低,除了考虑汉字识别的识别率外,还必须考虑输入的速度。

手写汉字的输入时间包括书写时间和识别时间两部分,一般以前者所耗时间较多。

当前市面上融合嵌入式手写汉字输入法的产品如PDA、智能手机、智能数码相机等几乎都在整个汉字书写完毕后才出现识别结果,所以即使系统的识别速度很快,也需要把整个汉字写完,因此整体的输入速度始终没有质的提高。

针对上述问题,本文提出了一种基于汉字笔顺的联机动态手写汉字识别方法,在人们书写汉字的过程中,对其已经书写的部分汉字笔划进行动态识别,预测其想要书写的汉字并输出给用户选择,并且集成弹性网格特征法,以达到在保证识别率的前提下提高整体输入速度目的。

本文主要进行以下几项工作:
1.联机手写笔划的分类与识别。

文中依据笔划特点把笔划分成五类,并且把笔划轨迹与函数曲线联系起来,通过数学分析,提出识别笔划的关键特征为笔划轨迹上各点有向切线的角度。

2.提出采用五叉树的数据结构存储汉字笔画顺序信息,使得识别过程中能动态地和快速地查找候选字,及时输出识别结果。

通过实验比较不同的候选字筛选方案对识别结果的影响。

3.把基于笔顺的联机动态识别方法移植到嵌入式系统中实现,证明联机动态识别方法可行且高效。

2 联机手写汉字笔划识别
由于汉字是由笔划组成的,我们学习汉字也是由笔划开始的,所以基于笔划来识别汉字一直是手写体汉字识别研究的主要研究方法之一。

联机手写汉字输入的一个优点是采样点带有时间标值,可以确定书写者书写每个笔划的顺序,而书写一个笔划的起始和收笔,笔尖对写字板的压力不相同,因此汉字的笔划相对容易提取。

本文采用以下步骤进行笔划识别:
(1)笔划抽样数据预处理
人们握笔书写时使用的力度是因人而异的,在书写过程中因书写速度以及书写不同的笔划,笔尖对写字板的压强也会有所不同,这样一来,抽样获得的坐标点就会出现不均匀。

特别是,本文提出的联机手写汉字动态识别方法是面向嵌入式系统的,书写区域很小,抽样获得的坐标点不均匀对识别的影响很大,另外嵌入式系统所附带的触摸屏驱动程序提供的原始数据通常比较粗糙,含有写字板的量化噪声、感应噪声以及人手抖动产生的干扰,不能达到手写体识别对数据准确性的要求。

因此需要对抽样得到的原始数据经过处理后才能提交给识别模块。

本文对笔划的预处理的基本思想是采用“二步法”进行数据处理,第一步使用滤波法,对坐标点序列采用距离门限值进行滤波,能把远距离漂移点滤除掉;第二步使用点平均平滑法,使得抖动的线条轨迹趋于平滑。

原始数据滤波后数据平滑后数据
(2)笔划提取
一个笔划从开始到结束,写字板感应到的压力经历了三种状态:①从无到有;
②压力持续;③从有到无。

因此,本文从写字板感应到的压力状态来提取笔划。

压力进入状态①,笔划开始,开始抽样记录坐标;压力进入状态②,笔划继续,抽样继续;压力进入状态③,笔划结束,抽样停止。

相应于操作系统,这个过程可以用三个消息事件来描述,称之为DOWN,MOVE,UP。

本文的实验分别在PC机Windows操作系统和ARM板的嵌入式Linux系统中进行,这三个状态分别对应了操作系统中鼠标的三个消息:BUTTONDOWN,BUTTONMOVE,BUTTONUP。

收到BUTTONUP消息后把抽样得到的坐标点数据经过上文所述的去噪平滑处理后,提交给下文将要叙述的笔划识别模块。

(3)笔划识别
本文将笔划分为基本笔划和复合笔划两种,基本笔划是只有单一方向的“一、丨、丿、丶”,复合笔划如“折”、“钩”等,由两个或两个以上的基本笔划复合而成。

具体分为以下5类
根据笔划的斜率有无突变判断笔划是否属于复合笔划,在单一笔划范围内,根据笔划的斜率范围确定笔划属于横、竖、撇、捺中的哪一种。

这个过程称为笔划
特征提取。

笔划识别流程图
3 联机手写体动态识别的实现
本文对联机手写体动态识别的实现主要分以下两个个步骤完成
(1)建立汉字汉字笔顺库
根据第二节对笔划的分类和编码,一个汉字的笔顺码就由各笔画的编码顺序排列构成。

如“李”字的笔顺为:横、竖、撇、捺、横折、左竖钩、横,其笔顺编码为“1234521”。

多数的汉字输入法,无论是计算机的输入或手机的输入,无论是拼音输入法或根据字形结构编码的输入法,都会采用“汉字常用频率”作为候选字权重的特征因素之一。

本文也不例外,因此笔顺库不仅包括汉字的笔顺编码,还应该包括该字的常用频率。

把汉字常用频率加入到前面的汉字笔顺表“Strokes-order of Word”,并且按照笔顺编码升序排列,就建立了笔顺动态识别所需的笔顺库
Strokes-order_Base,库中每个记录包含的内容如表1-1所示:
表1-1
(2)建立笔顺五叉树
由于本文把汉字笔划分为5类,因此在内存中根据汉字笔顺库建立一个笔顺五叉树,树的节点结构与表1-1相同。

对用户输入的笔划进行识别后在笔顺五叉树中的查找思想如下:
a.前笔划如果是第一笔,则从树的根结点开始查找,否则,从当前路径的末结点
继续查找下一层;
b.据笔划方向码在当前结点“孩子分支”域中确定孩子结点,如果相应的孩子结点存在,则把对应孩子结点添加到查找路径的末尾,并且获取该孩子结点的候选字输出给用户,查找成功;
c.如果孩子结点不存在,则查找失败,输出为空。

4 汉字手写输入法在嵌入式系统中的实现
嵌入式系统集系统的应用软件与硬件于一体,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。

4.1 输入法的实现环境
汉字后写输入法的实现环境如下:硬件是现在比较流行的ARM9开发板,开发板连有液晶屏,操作系统是嵌入式Linux。

程序在PC机上进行交叉编译后,通过网络文件系统放到ARM开发板上运行。

实物如下图所示:
ARM9与液晶屏、触摸屏的连接图
4.2汉字手写体输入法在PIXIL中的实现
ARM-Linux操作系统不直接提供图形界面,但可以运行图形系统的应用软件。

Century Software公司推出的Pixil使用的图形系统为microwindows,中间层使用了FLNX作为图形工具集,是一种适合PDA应用的操作环境,在该运行环境中可以运行ViewML浏览器、文本编辑器和其他一些多媒体应用软件。

Pixil还提供了数字和英文字母的手写输入界面和识别系统,我们在其手写输入界面中增加一个中文输入的框架,再把动态识别程序嵌入到其手写输入模块中。

最后对整个
Pixil软件进行交叉编译得到适合的二进制文件,然后下载到目标机上运行。

经过调试无误后,使用特定的笔在触摸屏上的指定方框内书写汉字,可看到程序输出了相应的候选字显示在液晶屏上,如图6-2所示。

5 结论
本文作者创新点:提出了一种基于笔划顺序的汉字动态识别输入法,并在嵌入式系统中实现,经过反复测试,识别率高,运行稳定。

参考文献
[1] 邹思铁.嵌入式Linux设计与应用.北京:清华大学出版社,2002.
[2] 魏永明.实时嵌入式Linux系统上GUI的发展与展望.微型电脑世界,2000;(49)
[3] 王同洋, 熊伟.嵌入式Linux中图形用户界面的研究与设计.微计算机信
息,2006年3-2期,90-92页
[4] 朱巧明.汉字信息处理基础[M].北京:清华大学出版社,1997
[5]
作者介绍:
周佳淳(1981-),男,硕士,研究方向嵌入式软件开发。

通讯地址:广东省广州市天河区五山华南理工大学电子与信息学院2004级硕(1)班邮编:510641
Email:eezhoujc@。

相关文档
最新文档