例如用户输入friend,则可以下面两种方式输入:
1、在虚拟键盘中,按照如下顺序滑动f-r-i-e-n-d. 如下图所示,‘f’为滑动的起始点,‘d’为滑动的结束点(滑动的位置不需要非常精确,只需要大致走向正确就可以):(图1)
2、依次点击f-r-i-e-n-d,在点击输入各个字母的时候可以不用非常准确的输入,只要能在想输入的字母周围击中就可以,从而不必再担心全键盘按钮太小不容易点中的问题啦。
简单介绍完滑动输入的操作方法后,大家一定想知道滑动输入技术上是如何实现的呢?下面就详细介绍下滑动输入的实现算法。
滑动输入的核心算法思想就是把用户输入的滑动轨迹提取一定特征,然后跟词库中的单词轨迹进行比对识别,最后输出候选识别结果。下面我们看看滑动输入滑动算法框架流程图 (如图2所示),大致分为三个处理模块:(图2)
第一,生成特征和模板;
第二:计算相似度;
第三:融合词频和相似度结果,返回最优列表。
接下来,我们从上面的算法流程来逐一介绍滑动输入实现技术。
1. 滑动轨迹的数据表示
滑动轨迹数据是一个等时间间隔的数据流,其具体采样频率随手机触摸屏的参数差异而不同,一般来说都在50-200Hz之间。每一个时间点上包含三维数据:(x,y,sw)。其中x, y分别是当前轨迹点的横坐标和纵坐标,而sw则为一个反映压力的二值信号,用来标识当前手指(手写笔)处在落下或是抬起的状态。
2. 滑动轨迹数据的预处理
采集得到的原始滑动轨迹数据要进行预处理,使得数据更适于提取特征并具有可比性。QQ手写输入法中主要的预处理环节包括:重采样、大小归一化、点距均一化、平滑滤波(表1),得到预处理后的轨迹序列:。N为预处理后的轨迹点数:
3. 特征和匹配模版生成
1) 对词库中的单词生成词库特征和匹配模板。为一个二维坐标点,具体做法如下:(图3)
例如红线为单词“dog”在软键盘全键盘上的滑动轨迹,灰线为用户的实际滑动轨迹。根据我们红线所示的轨迹,我们采样生成词库中单词的特征,即为图3中绿点的集合,中特征点的距离间隔相同,建立模板。
为字符所处的位置是=1,i=1,…,N (1) 2)建立模板。滑动输入的过程中,一般来说,用户对于滑动输入开始段和结尾段较容易按准确,而对于中间部分则较差,因此构建模板为二次曲线,如图4 所示:
本文来源:驱动中国 作者:佚名