1.本申请涉及信息处理与人机交互技术领域,尤其涉及一种字符矫正方法、装置、终端设备及存储介质。
背景技术:
2.人工智能技术在各行各业中逐渐应用。人工智能与人机交互的结合,近年来吸引了大量研究,其中一个热点方面为:利用惯性传感器进行空中手写。
3.空中手写是指挥动手部和手臂,将手部运动轨迹转换并识别为对应信息的技术,可通过佩戴或手持搭载惯性传感器的设备实现。与日常在纸张、电子设备触摸屏上面的书写方式不同,手部挥舞的动作幅度远大于笔尖书写,因此在进行动作时一般带有不同程度的抖动,且不同用户的行为方式存在差异,因此书写的字符笔划和整体都可能出现倾斜。这两种类型的书写干扰会影响字符识别结果,同时不标准的字形也会影响交互体验。
4.相关技术对空中手写的字符进行矫正时,通常对字符进行整体倾斜或抖动矫正,导致字符识别结果不佳,而且需要预先获取大量数据进行统计或建模学习,线下计算量大,导致矫正方案工作开销大。
技术实现要素:
5.本申请的主要目的在于提供一种字符矫正方法、装置、终端设备及存储介质,旨在提升书写字符的识别结果,降低矫正处理工作开销。
6.为实现上述目的,本申请实施例提供一种字符矫正方法,所述方法包括以下步骤:
7.获取书写数据,将所述书写数据转换为与输入字符对应的笔划序列;
8.对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列;
9.基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列;
10.拼接所述矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列。
11.此外,本申请实施例还提出一种字符矫正装置,所述字符矫正装置包括:
12.转换模块,用于获取书写数据,将所述书写数据转换为与输入字符对应的笔划序列;
13.切分模块,用于对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列;
14.矫正模块,用于基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列;
15.拼接模块,用于拼接所述矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列。
16.此外,本申请实施例还提出一种终端设备,所述终端设备包括存储器、处理器及存
储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的字符矫正方法。
17.此外,本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被所述处理器执行时实现如上所述的字符矫正方法。
18.本申请实施例提出的字符矫正方法、装置、终端设备及存储介质,通过获取书写数据,将所述书写数据转换为与输入字符对应的笔划序列;对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列;基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列;拼接所述矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列。该方案可以对书写数据(比如空中手写数据)实时进行矫正处理,在矫正时,通过对书写数据的笔划依据拐点进行切分,基于切分得到的子笔划对书写字符进行矫正,不仅提升了最终字符识别结果,增强交互体验,而且无需预先获取大量数据进行统计或建模学习,无线下计算量,可极大减少矫正方案的工作开销。相对现有方案一般只能对字符进行整体倾斜或抖动矫正,不仅方案单一,而且矫正效果不佳,本方案从笔划切分这种更细粒度的级别进行矫正,可以依次对笔划进行逐一处理,通过有效拐点搜索将笔划切分为更细粒度的子笔划级别,对子笔划进行矫正,再组合成为笔划和字符,由此,基于更细粒度的子笔划级别矫正,可以从字符整体和笔划细节上同时提升矫正效果,能够克服倾斜和抖动等多种干扰因素影响字符识别效果的问题。
附图说明
19.图1为本申请字符矫正装置所属终端设备的功能模块示意图;
20.图2为本申请字符矫正方法一示例性实施例的流程示意图;
21.图3为本申请实施例中将笔划依据有效笔划拐点拆分为子笔划的效果示意图;
22.图4为本申请实施例中在轨迹点的左右寻找与其构成夹角的点的轨迹示意图;
23.图5为本申请实施例中筛选有效笔划拐点的轨迹示意图;
24.图6为本申请实施例中对笔划进行倾斜矫正的效果示意图;
25.图7为本申请实施例中对笔划进行抖动矫正的效果示意图;
26.图8为本申请实施例中对笔划进行倾斜和抖动矫正两种处理均包含的效果示意图;
27.图9为本申请字符矫正方法另一示例性实施例的流程示意图;
28.图10为本申请字符矫正方法实施例的细化流程示意图。
29.本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
30.应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
31.本申请实施例的主要解决方案是:获取书写数据,将所述书写数据转换为与输入字符对应的笔划序列;对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列;基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列;拼接所述矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列。
该方案可以对书写数据(比如空中手写数据)实时进行矫正处理,在矫正时,通过对书写数据的笔划依据拐点进行切分,基于切分得到的子笔划对书写字符进行矫正,不仅提升了最终字符识别结果,增强交互体验,而且无需预先获取大量数据进行统计或建模学习,无线下计算量,可极大减少矫正方案的工作开销。相对现有方案一般只能解决某一种干扰,本方案从笔划切分这种更细粒度的级别进行矫正,可以依次对笔划进行逐一处理,通过有效拐点搜索将笔划切分为更细粒度的子笔划级别,对子笔划进行矫正,再组合成为笔划和字符,由此,基于更细粒度的子笔划级别矫正,可以从字符整体和笔划细节上同时提升矫正效果,能够克服倾斜和抖动等多种干扰因素影响字符识别效果的问题。
32.本申请实施例考虑到,空中书写或手写输入过程中,对字形结果的主要干扰包括手部无意识旋转带来的倾斜和手部抖动带来的笔划轨迹抖动。现有相关方案主要针对手写,且一般只能解决某一种干扰,在对手写字符进行矫正时,通常对字符进行整体倾斜或抖动矫正,导致字符识别结果不佳,而且通常采用神经网络模型,需要预先获取大量数据进行统计或建模学习,线下计算量大,导致矫正方案工作开销大。
33.因此,本申请实施例提出解决方案,从笔划切分这种更细粒度的级别进行矫正,可以依次对笔划进行逐一处理,通过有效拐点搜索将笔划切分为更细粒度的子笔划级别,对子笔划进行矫正,再组合成为笔划和字符,基于更细粒度的子笔划级别矫正,可以从字符整体和笔划细节上同时提升矫正效果,能够克服倾斜和抖动等多种干扰因素影响字符识别效果的问题。区别于现有的单一解决方案,能够同时解决笔划倾斜与抖动等干扰问题,提升书写字符的识别结果。进一步,还可以通过最近邻聚类(最近邻准则)和平滑滤波,在矫正流程中同时完成倾斜和抖动矫正,进一步提升矫正效果。
34.具体地,参照图1,图1为本申请字符矫正装置所属终端设备的功能模块示意图。该字符矫正装置可以为独立于终端设备的、能够进行数据处理和人机交互的装置,其可以通过硬件或软件的形式承载于终端设备上。该终端设备可以为搭载惯性传感器的智能穿戴设备,或搭载惯性传感器的手机、平板电脑等智能移动终端,或者是搭载惯性传感器的其他手持设备,该手持设备可以与终端、服务器等设备通讯。
35.本申请实施例方案主要采用字符处理算法对书写数据进行矫正处理,其中,书写场景可以是空中书写,也可以是常规的平面书写,对于空中书写一般要配置惯性传感器,对惯性传感器采集的书写数据进行处理,本实施例以配置惯性传感器的空中书写场景进行举例,因此该方案可以适用于所有搭载惯性传感器的设备,如手机、智能手表、手环等,用户可以佩戴或手持搭载惯性传感器的设备进行空中书写。
36.在本实施例中,该字符矫正装置所属终端设备至少包括输出模块110、处理器120、存储器130、以及通信模块140,还可以包括惯性传感器等。
37.存储器130中存储有操作系统以及字符矫正程序,字符矫正装置可以将获取的书写数据、对应的笔划序列、子笔划序列、矫正后的子笔划、笔划、字符等信息存储于该存储器130中;输出模块110可为显示屏、扬声器等。通信模块140可以包括wifi模块、移动通信模块以及蓝牙模块等,通过通信模块140与外部设备或服务器进行通信。
38.其中,作为一种实施例方式,存储器130中的字符矫正程序被处理器执行时实现以下步骤:
39.获取书写数据,将所述书写数据转换为与输入字符对应的笔划序列;
40.对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列;
41.基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列;
42.拼接所述矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列。
43.进一步地,存储器130中的字符矫正程序被处理器执行时还实现以下步骤:
44.将所述书写数据中的每一输入字符转换为对应的笔划序列,所述笔划序列的数据结构包括数组或列表。
45.进一步地,存储器130中的字符矫正程序被处理器执行时还实现以下步骤:
46.基于所述若干个轨迹点搜索预选笔划拐点;
47.从所述预选笔划拐点中筛选出有效笔划拐点;
48.将所述笔划序列依据所述有效笔划拐点拆分为子笔划,得到与所述输入字符的子笔划对应的子笔划序列。
49.进一步地,存储器130中的字符矫正程序被处理器执行时还实现以下步骤:
50.依次将所述笔划序列中的轨迹点确定为当前轨迹点,对各所述当前轨迹点分别执行以下操作:
51.当在所述当前轨迹点的相邻两侧方向确定到与所述当前轨迹点对应的第一轨迹点以及第二轨迹点时,获取所述当前轨迹点与所述第一轨迹点和第二轨迹点的夹角;其中,所述第一轨迹点与所述当前轨迹点的距离在预设距离阈值范围内,所述第二轨迹点与所述当前轨迹点的距离在预设距离阈值范围内;
52.当所述夹角在预设夹角区间内,将所述当前轨迹点确定为预选笔划拐点。
53.进一步地,存储器130中的字符矫正程序被处理器执行时还实现以下步骤:
54.获取所述当前轨迹点、所述第一轨迹点和第二轨迹点的轨迹坐标;
55.基于所述当前轨迹点、第一轨迹点和第二轨迹点的轨迹坐标,计算得到所述当前轨迹点与所述第一轨迹点和第二轨迹点的夹角。
56.进一步地,存储器130中的字符矫正程序被处理器执行时还实现以下步骤:
57.判断所述预选笔划拐点中是否出现连续的笔划拐点;
58.若所述预选笔划拐点中出现连续的笔划拐点,则将夹角最小的预选笔划拐点确定为有效笔划拐点。
59.进一步地,存储器130中的字符矫正程序被处理器执行时还实现以下步骤:
60.根据最近邻准则对所述子笔划序列对应的子笔划进行倾斜校正,和/或对所述子笔划序列对应的子笔划进行平滑滤波处理,得到矫正后的子笔划序列。
61.进一步地,存储器130中的字符矫正程序被处理器执行时还实现以下步骤:
62.对于所述子笔划序列中的每个子笔划,计算每个子笔划中每个轨迹点与该子笔划中其他所有轨迹点的距离,得到当前轨迹点与该子笔划中其他所有轨迹点的多个距离;
63.获取当前轨迹点与该子笔划中其他所有轨迹点的多个距离中距离最小的若干个轨迹点;
64.计算所述当前轨迹点与所述若干个轨迹点的平均坐标;
65.将所述当前轨迹点与所述若干个轨迹点的平均坐标作为所述当前轨迹点矫正后
的坐标,以此对每个轨迹点进行倾斜矫正。
66.进一步地,存储器130中的字符矫正程序被处理器执行时还实现以下步骤:
67.对所述笔划序列进行滤波处理,得到滤波后的笔划序列;
68.对所述滤波后的笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列。
69.本实施例通过上述方案,获取书写数据,将所述书写数据转换为与输入字符对应的笔划序列;对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列;基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列;拼接所述矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列。该方案可以对书写数据(比如空中手写数据)实时进行矫正处理,在矫正时,通过对书写数据的笔划依据拐点进行切分,基于切分得到的子笔划对书写字符进行矫正,不仅提升了最终字符识别结果,增强交互体验,而且无需预先获取大量数据进行统计或建模学习,无线下计算量,可极大减少矫正方案的工作开销。相对现有方案一般只能解决某一种干扰,本方案从笔划切分这种更细粒度的级别进行矫正,可以依次对笔划进行逐一处理,通过有效拐点搜索将笔划切分为更细粒度的子笔划级别,对子笔划进行矫正,再组合成为笔划和字符,由此,基于更细粒度的子笔划级别矫正,可以从字符整体和笔划细节上同时提升矫正效果,能够克服倾斜和抖动等多种干扰因素影响字符识别效果的问题。
70.基于上述终端设备架构但不限于上述架构,提出本申请方法实施例。
71.本申请实施例方案适用于所有搭载惯性传感器的设备。该方案主要采用字符处理算法对书写数据进行矫正处理,其中,书写场景可以是空中书写,也可以是常规的平面书写,对于空中书写一般要配置惯性传感器,对惯性传感器采集的书写数据进行处理,本实施例以配置惯性传感器的空中书写场景进行举例,因此该方案可以适用于所有搭载惯性传感器的设备,如手机、智能手表、手环等。用户可以佩戴或手持搭载惯性传感器的设备进行空中书写。
72.本实施例方法的执行主体可以是字符矫正装置,该字符矫正装置可以为独立于终端设备的、能够进行数据处理和人机交互的装置,其可以通过硬件或软件的形式承载于终端设备上。该终端设备可以为搭载惯性传感器的智能穿戴设备,或搭载惯性传感器的手机、平板电脑等智能移动终端,或者是搭载惯性传感器的其他手持设备,该手持设备可以与终端、服务器等设备通讯。
73.参照图2,图2为本申请字符矫正方法一示例性实施例的流程示意图。
74.所述字符矫正方法主要应用于具有笔划的方块字符(比如汉字)的矫正,所述方法包括以下步骤:
75.步骤s101,获取书写数据,将所述书写数据转换为与输入字符对应的笔划序列;
76.其中,书写数据是指用户书写字符时终端设备所采集到的数据信息,包括但不限于空中书写或平面手写数据,具体可以是用户手持或佩戴搭载惯性传感器的设备进行空中书写的操作过程中,终端设备通过惯性传感器采集的书写数据,也可以是用户在终端的有形平面(例如触摸屏)进行书写操作的过程中,终端设备通过该有形平面所采集到的书写数据。本实施例以空中书写进行举例,用户可以佩戴或手持搭载惯性传感器的装置或设备进行空中书写。
77.其中,手持或佩戴搭载惯性传感器的设备进行空中书写的操作过程,与基于介质在有形平面进行书写的操作体验有显著不同。本实施例方案针对空中书写过程中最为影响书写过程和识别结果的问题,提出针对性方法以提高书写设备使用效果。
78.本实施例方案主要采用字符处理算法对惯性传感器采集的书写数据进行处理,该字符处理算法主要包括:依次对字符笔划进行逐一处理,通过有效拐点搜索将笔划切分至子笔划级别,对子笔划进行矫正,再组合成为笔划和字符。
79.现有相关方案主要对字符整体进行旋转以改进字符倾斜,而实际情况下,字符书写一般具有部分笔划标准、部分笔划倾斜的特点,整体旋转可能将无须矫正的笔划也进行了旋转,引起“矫枉过正”的问题。不同于现有方法,本实施例方案,从更细粒度的级别进行矫正:依次对汉字笔划进行逐一处理,通过有效拐点搜索将笔划切分至子笔划级别,对子笔划进行矫正,再组合成为笔划和字符,从而可以提高字符矫正效果。
80.具体地,首先,获取惯性传感器采集的书写数据,将所述书写数据转换为笔划序列。
81.具体操作可以包括:
82.当用户手持或佩戴搭载惯性传感器的设备开始进行空中书写后,矫正装置获取惯性传感器采集的书写数据,将所述书写数据中的每一字符转换为对应的笔划序列,所述笔划序列的数据结构可以为数组或列表等。以数组为例进行描述,每个数组对应一个字符,该数组中每个元素表示一个笔划序列,即该数组中每个元素对应该字符中的一个笔划的数据,例如,当前输入的字符的总笔划数为m,则字符数据结构可表示为c=[c1,c2,
…
,c
i
,
…
,c
m
],其中c
i
(i∈[1,2,
…
,m])表示对应该字符中的一个笔划的数据,即单个笔划中各轨迹点的序列;其中,每个笔划序列,即每个笔划的轨迹点序列c
i
=[c
i1
,c
i2
,
…
,c
ij
,
…
,c
in
],即每个笔划序列包括对应笔划的若干个轨迹点c
ij
,每个轨迹点c
ij
的坐标为(x
i,j
,y
i,j
),i∈[1,2,
…
,m],j∈[1,2,
…
,n],n为当前笔划序列的轨迹点点数。如:汉字“中”共包含4笔,则一共形成一个长度为4的数据结构c=[c1,c2,c3,c4]。
[0083]
步骤s102,对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列;
[0084]
如前所述,每一个笔划序列包括若干个轨迹点,在对所述笔划序列依据拐点进行切分时,可以采用如下方案:
[0085]
对于每一个笔划序列的若干个轨迹点,依次搜索预选笔划拐点;从所述预选笔划拐点中筛选出有效笔划拐点;将所述笔划序列依据所述有效笔划拐点拆分为子笔划,得到与所述输入字符的子笔划对应的子笔划序列。可以理解的是,当笔划序列中包含有拐点时,对该笔划序列对应的笔划进行切分,以获取对应的子笔划以及该子笔划对应的子笔划序列;例如,汉字“中”共包含4笔,其中第二笔“横折”这一笔划包含有拐点,则对这一笔划划分为“横”和“竖”两个子笔划,得到“横”和“竖”两个子笔划对应的子笔划序列;当笔划序列中未包含有拐点时,无需对该笔划序列对应的笔划进行切分。
[0086]
其中,将笔划依据有效笔划拐点拆分为子笔划,其效果如图3所示,图3中,通过四个有效笔划拐点将笔划拆分为四个子比划,形成子比划序列。
[0087]
其中,在从若干个轨迹点中依次搜索预选笔划拐点时,可以采用如下方案:
[0088]
作为一种具体实施方式,依次将所述笔划序列中的轨迹点确定为当前轨迹点,对
各所述当前轨迹点分别执行以下操作:
[0089]
当在所述当前轨迹点的相邻两侧方向确定到与所述当前轨迹点对应的第一轨迹点以及第二轨迹点时,获取所述当前轨迹点与所述第一轨迹点和第二轨迹点的夹角;其中,所述第一轨迹点与所述当前轨迹点的距离在预设距离阈值范围内,所述第二轨迹点与所述当前轨迹点的距离在预设距离阈值范围内;
[0090]
当所述夹角在预设夹角区间内,将所述当前轨迹点确定为预选笔划拐点。
[0091]
其中,获取所述当前轨迹点与所述第一轨迹点和第二轨迹点的夹角的步骤包括:
[0092]
获取所述当前轨迹点、所述第一轨迹点和第二轨迹点的轨迹坐标;
[0093]
基于所述当前轨迹点、第一轨迹点和第二轨迹点的轨迹坐标,计算得到所述当前轨迹点与所述第一轨迹点和第二轨迹点的夹角。
[0094]
具体地,如图4所示,对于图4中的笔划轨迹,在每个轨迹点o的左右寻找与其构成夹角的第一轨迹点a、以及第二轨迹点b。
[0095]
首先,分别找到与轨迹点o距离满足预设条件的轨迹点(即查找与所述当前轨迹点的距离在预设距离阈值范围内的轨迹点),预设条件公式如下:
[0096][0097]
其中l
max
,l
min
由当前笔划序列的笔划长度t决定,d为轨迹点与轨迹点o的距离:
[0098][0099]
笔划长度t可以采用以下公式计算得到。
[0100]
其中,对于一个字符,包含若干个笔划,对于其中任意笔划i,定义该笔划i的笔划长度为t
i
,则可以采用如下公式计算笔划长度:
[0101][0102]
通过上述笔划长度公式可以计算得到当前笔划的笔划长度t。
[0103]
φ
max
,φ
min
为搜索距离上下边界阈值,可以根据实际情况设定并可调整,例如:φ
max
=20,φ
min
=60。
[0104]
上述查找与轨迹点o距离满足预设条件的轨迹点的方案中,只需要就近查找,即可以在每个轨迹点o的左右寻找与其构成夹角的点a、b,只要找到满足预设条件的轨迹点a、b即可,也就是说,对于同一个轨迹点o,可以只需查找到满足条件的一对轨迹点a、b,无需查找多对。
[0105]
然后,计算笔划序列中所有满足条件的轨迹点o与对应轨迹点a、b的夹角:
[0106][0107]
其中x
o
,x
a
,x
b
,y
o
,y
a
,y
b
分别表示o、a、b的轨迹坐标。
[0108]
然后,结合字符笔划结构,记录进入预设夹角区间的所有顶点o作为预选笔划拐点,其中,预设夹角区间可以根据实际情况设定,如,取值(0,120
°
)。
[0109]
然后,从所述预选笔划拐点中筛选出有效笔划拐点;
[0110]
其中,主要是考虑到上述方案中,可能出现笔划轨迹上连续的点都符合拐点的条件,因此需筛选连续预选笔划拐点中的一个作为最终有效笔划拐点,如图5所示。
[0111]
具体实施时,作为一种实施方式,判断所述预选笔划拐点中是否出现连续的笔划拐点;若所述预选笔划拐点中出现连续的笔划拐点,则将夹角最小的预先笔划拐点确定为有效笔划拐点。
[0112]
作为另一种实施方式,还可以采用以下方案确定最终的有效笔划拐点:
[0113]
比如:对于若干预选笔划拐点,其对应与轨迹点a、b的夹角序列画出一条曲线,曲线上变化率最大的轨迹点作为最终有效笔划拐点,其中,计算变化率可以采用:斜率、二阶导、三阶导等方式,在此不作限定。
[0114]
最后,将所述笔划序列依据所述有效笔划拐点拆分为子笔划,得到子笔划序列。
[0115]
步骤s103,基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列;
[0116]
其中,在矫正时,可以采用对应的矫正方案,比如倾斜矫正、抖动矫正或者其他矫正方式,对所述子笔划序列中的每个子笔划进行矫正,得到矫正后的子笔划序列。
[0117]
相对现有方案一般只能对字符进行整体倾斜或抖动矫正,不仅方案单一,而且矫正效果不佳,本方案从笔划切分这种更细粒度的级别进行矫正,可以依次对笔划进行逐一处理,通过有效拐点搜索将笔划切分为更细粒度的子笔划级别,对子笔划进行矫正,再组合成为笔划和字符,由此,基于更细粒度的子笔划级别矫正,可以从字符整体和笔划细节上同时提升矫正效果,能够克服倾斜和抖动等多种干扰因素影响字符识别效果的问题。
[0118]
进一步地,在对所述子笔划序列中的每个子笔划进行矫正时,可以采用如下方案:
[0119]
对所述子笔划序列中的每个子笔划通过最近邻准则进行倾斜校正,和/或对所述子笔划序列中的每个子笔划进行平滑滤波处理,得到矫正后的子笔划序列。
[0120]
具体地,本实施例考虑到,空中书写或手写输入过程中,对字形结果的主要干扰包括手部无意识旋转带来的倾斜和手部抖动带来的笔划轨迹抖动。现有方案主要针对手写,且一般解决某一种干扰。本实施例方案通过最近邻聚类(最近邻准则)和平滑滤波,在矫正流程中可以同时完成倾斜和抖动矫正,也可以选择倾斜矫正和抖动矫正中的一种。
[0121]
以同时完成倾斜和抖动矫正为例,可以对子笔划序列先进行倾斜矫正,再进行抖动矫正,也可以先进行抖动矫正,再进行倾斜矫正,本实施例以先进行倾斜矫正,再进行抖动矫正为例。
[0122]
其中,根据最近邻准则对所述子笔划序列对应的子笔划进行倾斜校正的方案可以包括:
[0123]
对于所述子笔划序列中的每个子笔划,计算每个子笔划中每个轨迹点与该子笔划中其他所有轨迹点的距离,得到每个轨迹点的多个距离;
[0124]
将所述每个轨迹点的多个距离中距离最小的若干个轨迹点的平均坐标作为所述每个轨迹点矫正后的坐标,以对每个轨迹点进行倾斜矫正。然后,对倾斜矫正后的子笔划进行抖动矫正。
[0125]
具体实现如下:
[0126]
根据最近邻准则对所述子笔划序列对应的子笔划进行倾斜校正,首先,对子笔划序列中每个子笔划的每个轨迹点,将每个轨迹点作为当前轨迹点,计算该当前轨迹点与子笔划序列中其他所有轨迹点的距离;
[0127]
其中,计算当前轨迹点与子笔划序列中其他所有轨迹点的距离,可以采用两轨迹点的坐标计算两轨迹点之间的距离,即根据当前轨迹点的坐标,以及子笔划序列中其他所有轨迹点的坐标,计算得到当前轨迹点与子笔划序列中其他所有轨迹点的距离。
[0128]
获取与当前轨迹点的距离最小的k个轨迹点,计算当前轨迹点与这k个轨迹点的平均坐标;
[0129]
将当前轨迹点与这k个轨迹点的平均坐标作为当前点的矫正后坐标c'
ij
。
[0130]
其中,平均坐标包括横坐标和纵坐标,平均坐标的横坐标是指多个轨迹点的横坐标的平均值,平均坐标的纵坐标是指多个轨迹点的纵坐标的平均值,最终得到当前轨迹点与这k个轨迹点的平均坐标。
[0131]
其中,最近邻准则是指上述方案中,计算得到当前轨迹点与子笔划序列中其他所有轨迹点的距离,从上述多个距离中,获取与当前轨迹点的距离最小的k个轨迹点,以便将当前轨迹点与这k个轨迹点的平均坐标作为当前点的矫正。
[0132]
对每个子笔划中的每个轨迹点,都采用上述方案进行坐标矫正,从而可以实现对子笔划序列对应的子笔划进行倾斜校正。
[0133]
然后,对倾斜校正后的子笔划进行平滑滤波,消除随机手部抖动噪声,对于某倾斜校正后的点c'
ij
=(x'
i,j
,y'
i,j
),平滑后的坐标为:其中:
[0134][0135]
其中,l为系数。
[0136]
矫正后的子笔划数据可以存放至专门的数据结构中。
[0137]
若处理的子笔划不是当前笔划的最后一个子笔划,则对下一个子笔划序列重复执行上述步骤,直至当前笔划的所有子笔划全部处理完毕。
[0138]
步骤s104,拼接所述矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列;
[0139]
将所有矫正后的所有子笔划组合成为矫正后的笔划。为便于直观理解,对笔划的倾斜和抖动矫正效果分别如图6、图7所示,又例如,以图8为例,用户可以佩戴或手持搭载惯性传感器的装置进行空中书写“乙”字(图8中左边),终端设备获取该装置上的惯性传感器采集的书写数据,并将书写数据转换为与“乙”字对应的笔划序列,即横斜钩对应的笔划序列;然后,对“乙”字的笔划序列依据拐点进行切分,得到与“乙”字的子笔划对应的子笔划序列,包括“横”、“斜”、“横”以及“钩”,其中,“乙”字拐点包括如图的拐点1、拐点2、拐点3;在获得“乙”字中子笔划的子笔划序列后,基于子笔划序列对子笔划进行倾斜校正和抖动矫正,最后拼接矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列,最终,终端设备输出
如图8所示右边的“乙”字。
[0140]
若处理的笔划不是当前字符的最后一个笔划,则对下一个笔划序列重复执行上述步骤,直至当前字符的所有笔划全部处理完毕。
[0141]
在完成字符的所有笔划处理后,将所有矫正后的笔划组合成为矫正后的字符。
[0142]
相比现有技术,本实施例方案可以在用户空中书写的过程中即对字符进行实时矫正,即用户每书写完成一个笔划,就会得到矫正后的笔划,各个笔划按顺序书写,每次得到效果较好的书写结果,最终得到标准的字形。当每一笔划都写得端正时,用户整体书写字符将取得“横平竖直”的效果,提升了最终文字识别结果,增强交互体验。
[0143]
本实施例通过上述方案,获取书写数据,将所述书写数据转换为与输入字符对应的笔划序列;对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列;基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列;拼接所述矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列。该方案可以对书写数据(比如空中手写数据)实时进行矫正处理,在矫正时,通过对书写数据的笔划依据拐点进行切分,基于切分得到的子笔划对书写字符进行矫正,不仅提升了最终字符识别结果,增强交互体验,而且无需预先获取大量数据进行统计或建模学习,无线下计算量,可极大减少矫正方案的工作开销。相对现有方案一般只能解决某一种干扰,本方案从笔划切分这种更细粒度的级别进行矫正,可以依次对笔划进行逐一处理,通过有效拐点搜索将笔划切分为更细粒度的子笔划级别,对子笔划进行矫正,再组合成为笔划和字符,由此,基于更细粒度的子笔划级别矫正,可以从字符整体和笔划细节上同时提升矫正效果,能够克服倾斜和抖动等多种干扰因素影响字符识别效果的问题。
[0144]
参照图9,图9为本申请字符矫正方法另一示例性实施例的流程示意图。
[0145]
基于上述图2所示的实施例,在本实施例中,在上述步骤s102,对所述笔划序列依据拐点进行切分,得到子笔划序列之前还包括:
[0146]
步骤s1012,对所述笔划序列进行滤波处理,得到滤波后的笔划序列;
[0147]
所述步骤s102,对所述笔划序列依据拐点进行切分,得到子笔划序列包括:
[0148]
步骤s1021,对所述滤波后的笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列。
[0149]
相比上述图2所示的实施例,本实施例还包括对笔划序列进行高通滤波处理的方案。
[0150]
具体地,在将书写数据转换为笔划序列后,依次将每个笔划序列进行滤波处理,可以通过一个3hz高通数字滤波器,去掉频率较低的手部噪声,从而可以提升字符处理效果。
[0151]
基于上述实施例中所述的笔划序列的数据结构可以为数组,以此进行举例,数组中每个元素对应字符一个笔划的数据,一个笔划的数据对应一个笔划序列,该元素类型也为数组,存储对应单个笔划的轨迹点序列(即笔划序列)。若当前输入字符总笔划数为m,记每个笔划序列为c
i
=[c
i1
,c
i2
,
…
,c
ij
,
…
,c
in
],每个笔划的笔划轨迹包括若干个轨迹点,每个轨迹点的坐标为(x
i,j
,y
i,j
),i∈[1,2,
…
,m],j∈[1,2,
…
,n],n为当前笔划序列对应的轨迹点的点数,则字符数据结构可表示为c=[c1,c2,
…
,c
i
,
…
,c
m
]。
[0152]
在通过高通数字滤波器对每个笔划序列进行滤波处理时,设数字滤波器单位冲激响应为h(n),则滤波后笔划序列为:
[0153][0154]
本实施例实现字符矫正的具体流程可以参照图10所示。
[0155]
本实施例通过上述方案,获取书写数据,将所述书写数据转换为与输入字符对应的笔划序列;对所述笔划序列进行滤波处理,得到滤波后的笔划序列;对滤波后的笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列;基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列;拼接所述矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列。该方案可以对书写数据(比如空中手写数据)实时进行矫正处理,在矫正时,通过对书写数据的笔划依据拐点进行切分,基于切分得到的子笔划对书写字符进行矫正,不仅提升了最终字符识别结果,增强交互体验,而且无需预先获取大量数据进行统计或建模学习,无线下计算量,可极大减少矫正方案的工作开销。相对现有方案一般只能解决某一种干扰,本方案从笔划切分这种更细粒度的级别进行矫正,可以依次对笔划进行逐一处理,通过有效拐点搜索将笔划切分为更细粒度的子笔划级别,对子笔划进行矫正,再组合成为笔划和字符,由此,基于更细粒度的子笔划级别矫正,可以从字符整体和笔划细节上同时提升矫正效果,能够克服倾斜和抖动等多种干扰因素影响字符识别效果的问题。
[0156]
此外,本申请实施例还提出一种字符矫正装置,所述字符矫正装置包括:
[0157]
转换模块,用于获取书写数据,将所述书写数据转换为与输入字符对应的笔划序列;
[0158]
切分模块,用于对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列;
[0159]
矫正模块,用于基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列;
[0160]
拼接模块,用于拼接所述矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列。
[0161]
本实施例实现字符矫正的原理及实施过程,请参照上述各实施例,在此不再赘述。
[0162]
此外,本申请实施例还提出一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述实施例所述的字符矫正方法。
[0163]
由于本字符矫正程序被处理器执行时,采用了前述所有实施例的全部技术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效果,在此不再一一赘述。
[0164]
此外,本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例所述的字符矫正方法。
[0165]
由于本字符矫正程序被处理器执行时,采用了前述所有实施例的全部技术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效果,在此不再一一赘述。
[0166]
相比现有技术,本申请实施例提出的字符矫正方法、装置、终端设备及存储介质,通过获取书写数据,将所述书写数据转换为与输入字符对应的笔划序列;对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列;基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列;拼接所述矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列。该方案可以对书写数据(比如空中手写数据)实时进行矫正处理,在矫正时,通过对书写数据的笔划依据拐点进行切分,基于切分得到的子笔划对书写字符进行矫正,不仅提升了最终字符识别结果,增强交互体验,而且无需预先获取大量数据进行统计或建模学习,无线下计算量,可极大减少矫正方案的工作开销。相对现有方案一般只能对字符进行整体倾斜或抖动矫正,不仅方案单一,而且矫正效果不佳,本方案从笔划切分这种更细粒度的级别进行矫正,可以依次对笔划进行逐一处理,通过有效拐点搜索将笔划切分为更细粒度的子笔划级别,对子笔划进行矫正,再组合成为笔划和字符,由此,基于更细粒度的子笔划级别矫正,可以从字符整体和笔划细节上同时提升矫正效果,能够克服倾斜和抖动等多种干扰因素影响字符识别效果的问题。
[0167]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0168]
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0169]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,被控终端,或者网络设备等)执行本申请每个实施例的方法。
[0170]
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
技术特征:
1.一种字符矫正方法,其特征在于,所述方法包括以下步骤:获取书写数据,将所述书写数据转换为与输入字符对应的笔划序列;对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列;基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列;拼接所述矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列。2.根据权利要求1所述的字符矫正方法,其特征在于,所述将所述书写数据转换为与输入字符对应的笔划序列的步骤包括:将所述书写数据中的每一输入字符转换为对应的笔划序列,所述笔划序列的数据结构包括数组或列表。3.根据权利要求1所述的字符矫正方法,其特征在于,所述笔划序列包括若干个轨迹点,所述对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列的步骤包括:基于所述若干个轨迹点搜索预选笔划拐点;从所述预选笔划拐点中筛选出有效笔划拐点;将所述笔划序列依据所述有效笔划拐点拆分为子笔划,得到与所述输入字符的子笔划对应的子笔划序列。4.根据权利要求3所述的字符矫正方法,其特征在于,所述基于所述若干个轨迹点搜索预选笔划拐点的步骤包括:依次将所述笔划序列中的轨迹点确定为当前轨迹点,对各所述当前轨迹点分别执行以下操作:当在所述当前轨迹点的相邻两侧方向确定到与所述当前轨迹点对应的第一轨迹点以及第二轨迹点时,获取所述当前轨迹点与所述第一轨迹点和第二轨迹点的夹角;其中,所述第一轨迹点与所述当前轨迹点的距离在预设距离阈值范围内,所述第二轨迹点与所述当前轨迹点的距离在预设距离阈值范围内;当所述夹角在预设夹角区间内,将所述当前轨迹点确定为预选笔划拐点。5.根据权利要求4所述的字符矫正方法,其特征在于,所述获取所述当前轨迹点与所述第一轨迹点和第二轨迹点的夹角的步骤包括:获取所述当前轨迹点、所述第一轨迹点和第二轨迹点的轨迹坐标;基于所述当前轨迹点、第一轨迹点和第二轨迹点的轨迹坐标,计算得到所述当前轨迹点与所述第一轨迹点和第二轨迹点的夹角。6.根据权利要求4所述的字符矫正方法,其特征在于,所述从所述预选笔划拐点中筛选出有效笔划拐点的步骤包括:判断所述预选笔划拐点中是否出现连续的笔划拐点;若所述预选笔划拐点中出现连续的笔划拐点,则将夹角最小的预选笔划拐点确定为有效笔划拐点。7.根据权利要求1
‑
6中任一项所述的字符矫正方法,其特征在于,所述基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列的步骤包括:
根据最近邻准则对所述子笔划序列对应的子笔划进行倾斜校正,和/或对所述子笔划序列对应的子笔划进行平滑滤波处理,得到矫正后的子笔划序列。8.根据权利要求7所述的字符矫正方法,其特征在于,所述根据最近邻准则对所述子笔划序列对应的子笔划进行倾斜校正的步骤包括:对于所述子笔划序列中的每个子笔划,计算每个子笔划中每个轨迹点与该子笔划中其他所有轨迹点的距离,得到当前轨迹点与该子笔划中其他所有轨迹点的多个距离;获取当前轨迹点与该子笔划中其他所有轨迹点的多个距离中距离最小的若干个轨迹点;计算所述当前轨迹点与所述若干个轨迹点的平均坐标;将所述当前轨迹点与所述若干个轨迹点的平均坐标作为所述当前轨迹点矫正后的坐标,以此对每个轨迹点进行倾斜矫正。9.根据权利要求1
‑
6中任一项所述的字符矫正方法,其特征在于,所述对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列的步骤之前还包括:对所述笔划序列进行滤波处理,得到滤波后的笔划序列;所述对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列的步骤包括:对所述滤波后的笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列。10.一种字符矫正装置,其特征在于,所述字符矫正装置包括:转换模块,用于获取书写数据,将所述书写数据转换为与输入字符对应的笔划序列;切分模块,用于对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列;矫正模块,用于基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列;拼接模块,用于拼接所述矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列。11.一种终端设备,其特征在于,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1
‑
9中任一项所述的字符矫正方法。12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1
‑
9中任一项所述的字符矫正方法。
技术总结
本申请公开了一种字符矫正方法、装置、终端设备及存储介质,该方法包括:获取书写数据,将所述书写数据转换为与输入字符对应的笔划序列;对所述笔划序列依据拐点进行切分,得到与所述输入字符的子笔划对应的子笔划序列;基于所述子笔划序列对所述子笔划进行矫正处理,得到所述子笔划矫正后的子笔划序列;拼接所述矫正后的子笔划序列,得到所述输入字符矫正后的笔划序列。该方案基于更细粒度的子笔划级别矫正,提升了最终字符识别结果,增强交互体验,而且可极大减少矫正方案的工作开销。而且可极大减少矫正方案的工作开销。而且可极大减少矫正方案的工作开销。
技术研发人员:曾理 张晓帆 钟卫东
受保护的技术使用者:OPPO广东移动通信有限公司
技术研发日:2021.03.23
技术公布日:2021/6/29
转载请注明原文地址:https://doc.8miu.com/read-15451.html