基于嵌入式Linux的汉字输入法 联系客服

发布时间 : 星期一 文章基于嵌入式Linux的汉字输入法更新完毕开始阅读a37226896529647d27285278

基于嵌入式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.前笔划如果是第一笔,则从树的根结点开始查找,否则,从当前路径的末结点