提取文字骨架的方法、装置、设备和计算机可读存储介质
技术领域
本发明涉及字库技术领域,尤其涉及一种提取文字骨架的方法、装置、设备和计算机可读存储介质。
背景技术
骨架是图像的重要特征信息,对文字来说,骨架可真实反应文字书写轨迹的二维信息,文字识别、笔迹鉴定以及文字缩放等算法都采用文字骨架信息取得良好效果。在字库制作方面,通过设计文字笔触风格,利用矢量图形设计软件即可通过骨架批量生成风格一致的字库,经设计师微调,合格的字库产品制作完成。因此,提取优质骨架数据,对学术界和工业界都具有深远意义。
从处理思路来看,骨架提取方法主要包括图像细化和图像轮廓内切圆提取;从处理对象上来看,骨架提取包括基于图像的处理方法以及基于矢量轮廓的处理方法,但后者需对矢量轮廓离散化,因此本质与基于图像的处理方式相同。
其中,图像细化方法迭代去除图像的轮廓,通过滤波器以及形态学操作,不断删除图像的轮廓区域,直到图像停止变化。然而图像细化方法会产生大量分叉,如图1所示,为现有技术中,文字“寂”在图像细化中的变化示意图,可见“寂”的轮廓已经产生大量分叉。不利于文字识别。
图像轮廓内切圆方式首先获取图像的轮廓点,确定轮廓的始末位置,接下来遍历始末位置之间的轮廓点,并寻找与轮廓相切的最大圆,将所有内切圆的圆心看作轮廓的骨架点集。轮廓内切圆方法对于拆分为笔画级别的带笔画交叉信息的图像效果较好,对于去笔画交叉的整字图像,无法保证笔画交叉位置的骨架遵循文字书写规则,而目前绝大部分字库产品均不含笔画交叉信息。另外,轮廓内切圆方法对于不同字体需要人工设定提取规则并调整参数,普适性欠缺。
发明内容
本发明提供一种提取文字骨架的方法、装置、设备和计算机可读存储介质,解决了现有技术中,因字库数据不带有笔画交叉信息而无法保证笔画交叉位置的骨架遵循文字书写规则的问题,并且能够基本消除文字骨架中的分叉,因此降低笔画交叉位置形变率,同时恢复文字骨架的笔顺信息,提高了文字骨架提取的效率。
本发明的第一方面提供一种提取文字骨架的方法,包括:提取待处理的字库数据的初始文字骨架;将所述初始文字骨架与预设的参考文字骨架进行比对,确定所述初始文字骨架的笔顺信息;将至少包含所述笔顺信息的初始文字骨架矢量化,生成所述字库数据的最终文字骨架。
可选地,所述提取待处理的字库数据的初始文字骨架,具体包括:获取所述字库数据的文字图像和预设的已标注文字骨架的样本图像;对所述样本图像进行数据增广,得到增广后的样本图像;采用所述增广后的样本图像对神经网络模型进行训练,建立文字骨架提取模型;将所述字库数据的文字图像作为测试数据输入所述文字骨架提取模型,提取得到所述字库数据的所述初始文字骨架。
可选地,所述将所述初始文字骨架与预设的参考文字骨架进行比对,确定所述初始文字骨架的笔顺信息,具体包括:将所述初始文字骨架拆分为多个第一骨架段;获取所述参考文字骨架的多个第二骨架段,以及每个所述第二骨架段的预设笔顺信息;判断所述第一骨架段与所述第二骨架段的相似度是否达到预设阈值;若所述第一骨架段与所述第二骨架段的相似度达到所述预设阈值,则将所述第二骨架段的所述预设笔顺信息确定为所述第一骨架段的笔顺信息;将所述多个第一骨架段的笔顺信息确定为所述初始文字骨架的笔顺信息。
可选地,所述判断所述第一骨架段与所述第二骨架段的相似度是否达到预设阈值,具体包括:分别获取所述第一骨架段的第一骨架点集合和所述第二骨架段的第二骨架点集合;判断所述第一骨架点集合与所述第二骨架点集合的相似度是否达到所述预设阈值;若所述第一骨架点集合与所述第二骨架点集合的相似度达到所述预设阈值,则确定所述第一骨架段与所述第二骨架段的相似度达到所述预设阈值;若所述第一骨架点集合与所述第二骨架点集合的相似度未达到所述预设阈值,则确定所述第一骨架段与所述第二骨架段的相似度未达到所述预设阈值。
可选地,所述将至少包含所述笔顺信息的初始文字骨架矢量化,生成所述字库数据的最终文字骨架,具体包括:将所述初始文字骨架中具有相同笔顺信息的所述第一骨架段进行曲线拟合,得到具有相同笔顺信息的骨架曲线段集合;遍历所述具有相同笔顺信息的骨架曲线段集合中的所有骨架曲线段端点,根据每个所述骨架曲线段在端点处的切线方向以及各个端点之间的距离大小,将端点之间的距离在预设距离范围内的所述具有相同笔顺信息的骨架曲线段进行连接,得到所述相同笔顺信息对应的笔画信息;将所述笔顺信息添加至所述矢量化的文字骨架曲线中,生成所述字库数据的所述最终文字骨架。
可选地,还包括:对所述初始文字骨架进行去噪处理和二值化处理;对经过去噪和二值化处理的初始文字骨架进行断裂修复;将经过所述断裂修复的初始文字骨架转换为单像素图像的初始文字骨架。
本发明的第二方面提供一种提取文字骨架的装置,包括:提取模块,用于提取待处理的字库数据的初始文字骨架;确定模块,用于将所述初始文字骨架与预设的参考文字骨架进行比对,确定所述初始文字骨架的笔顺信息;矢量化模块,用于将至少包含所述笔顺信息的初始文字骨架矢量化,生成所述字库数据的最终文字骨架。
可选地,所述提取模块具体用于:获取所述字库数据的文字图像和预设的已标注文字骨架的样本图像;对所述样本图像进行数据增广,得到增广后的样本图像;采用所述增广后的样本图像对神经网络模型进行训练,建立文字骨架提取模型;将所述字库数据的文字图像作为测试数据输入所述文字骨架提取模型,提取得到所述字库数据的所述初始文字骨架。
可选地,所述确定模块具体用于:将所述初始文字骨架拆分为多个第一骨架段;获取所述参考文字骨架的多个第二骨架段,以及每个所述第二骨架段的预设笔顺信息;判断所述第一骨架段与所述第二骨架段的相似度是否达到预设阈值;若所述第一骨架段与所述第二骨架段的相似度达到所述预设阈值,则将所述第二骨架段的所述预设笔顺信息确定为所述第一骨架段的笔顺信息;将所述多个第一骨架段的笔顺信息确定为所述初始文字骨架的笔顺信息。
可选地,所述确定模块,具体用于:分别获取所述第一骨架段的第一骨架点集合和所述第二骨架段的第二骨架点集合;判断所述第一骨架点集合与所述第二骨架点集合的相似度是否达到所述预设阈值;若所述第一骨架点集合与所述第二骨架点集合的相似度达到所述预设阈值,则确定所述第一骨架段与所述第二骨架段的相似度达到所述预设阈值;若所述第一骨架点集合与所述第二骨架点集合的相似度未达到所述预设阈值,则确定所述第一骨架段与所述第二骨架段的相似度未达到所述预设阈值。
可选地,所述矢量化模块,具体用于:
将所述初始文字骨架中具有相同笔顺信息的所述第一骨架段进行曲线拟合,得到具有相同笔顺信息的骨架曲线段集合;
遍历所述具有相同笔顺信息的骨架曲线段集合中的所有骨架曲线段端点,根据每个所述骨架曲线段在端点处的切线方向以及各个端点之间的距离大小,将端点之间的距离在预设距离范围内的所述具有相同笔顺信息的骨架曲线段进行连接,得到所述相同笔顺信息对应的笔画信息;将所述笔顺信息添加至矢量化的文字骨架曲线中,生成所述字库数据的所述最终文字骨架。
可选地,还包括:处理模块,用于对所述初始文字骨架进行去噪处理和二值化处理;修复模块,用于对经过去噪和二值化处理的初始文字骨架进行断裂修复;转换模块,用于将经过所述断裂修复的初始文字骨架转换为单像素图像的初始文字骨架。
本发明的第三方面提供一种提取文字骨架的设备,包括:存储器;处理器;以及计算机程序;其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行本发明第一方面及其任一可选地方案所述的方法。
本发明的第四方面提供一种计算机可读存储介质,包括:程序,当其在计算机上运行时,使得计算机执行本发明第一方面及其任一可选地方案所述的方法。
本发明提供的提取文字骨架的方法、装置、设备和计算机可读存储介质,通过提取待处理的字库数据的初始文字骨架;并预设可用于比对分析笔顺信息的参考文字骨架,然后将所述初始文字骨架与预设的参考文字骨架进行比对,进而确定所述初始文字骨架的笔顺信息,然后将包含有笔顺信息的初始文字骨架矢量化,即可生成所述字库数据的最终文字骨架。如此一来,最终文字骨架中不仅具有字库数据的文字骨架,而且具有字库数据的笔顺信息。解决了现有技术中,因字库数据不带有笔画交叉信息而无法保证笔画交叉位置的骨架遵循文字书写规则的问题,并且能够基本消除文字骨架中的分叉,因此降低笔画交叉位置形变率,同时恢复文字骨架的笔顺信息,提高了文字骨架提取的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的图像细化方法产生分叉的示意图;
图2为本发明一示例性实施例示出的提取文字骨架的方法的流程图;
图3为本发明另一示例性实施例示出的提取文字骨架的方法的流程图;
图4A为本发明图3对应的实施例示出的待处理的字库数据“寂”字的矢量数据示意图;
图4B为本发明图3对应的实施例示出的“寂”字的矢量数据渲染示意图;
图4C为本发明图3对应的实施例示出的“寂”字的初始文字骨架的示意图;
图4D为本发明图3对应的实施例示出的“寂”字的初始文字骨架的单像素图像的示意图;
图4E为本发明图3对应的实施例示出的“寂”字的恢复了笔顺信息的初始文字骨架的示意图;
图5A为本发明图3对应的实施例示出的“事”字的初始样本图像的示意图;
图5B至5E为本发明图3对应的实施例示出的“事”字的增广后的样本图像的示意图;
图6A为本发明图3对应的实施例示出的“后”字的初始文字骨架进行骨架拆分后的示意图;
图6B为本发明图3对应的实施例示出的“后”字的参考文字骨架进行骨架拆分后的示意图;
图6C为本发明图3对应的实施例示出的“后”字的第一骨架段与第二骨架段进行匹配的示意图;
图6D为本发明图3对应的实施例示出的待处理的字库数据“后”字确定了笔画归属关系后的示意图;
图7A为本发明图3对应的实施例示出的对“七”字的同笔画骨架段集合StrokeSkeletonCurve执行减点操作前的示意图;
图7B为本发明图3对应的实施例示出的对“七”字的同笔画骨架段集合StrokeSkeletonCurve执行减点操作后的示意图;
图7C为本发明图3对应的实施例示出的不同字体的字库数据进行文字骨架提取的结果示意图;
图8A为本发明另一示例性实施例示出的提取文字骨架的装置的结构图;
图8B为本发明另一示例性实施例示出的提取文字骨架的装置的结构图;
图9为本发明一示例性实施例示出的提取文字骨架的设备的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2为本发明一示例性实施例示出的提取文字骨架的方法的流程图。
如图2所示,本实施例的执行主体为提取文字骨架的装置,该提取文字骨架的装置可以集成在终端中。则本实施例提供一种提取文字骨架的方法,该方法包括如下步骤:
步骤201:提取待处理的字库数据的初始文字骨架。
其中,终端可以为台式电脑、平板电脑等设备。字库数据可以根据实际需要确定,字库数据中可以带有笔画交叉信息,也可以不带,本实施例对此不做限定。
在本步骤中,在确定了待处理的字库数据后,首先对字库数据进行初始文字骨架提取,初始文字骨架可以采用骨架图像表示,比如可以是骨架的灰度图像。此处,初始文字骨架的提取方式可以采用现有的骨架提取方式,本实施例对于初始文字骨架的提取方式不做限定。
步骤202:将初始文字骨架与预设的参考文字骨架进行比对,确定初始文字骨架的笔顺信息。
在本步骤中,初始文字骨架中有可能不含笔顺信息,为了确定初始文字骨架的笔顺信息,可以采用预设的带有笔顺信息的参考文字骨架,然后将初始文字骨架与预设的参考文字骨架进行比对,进而确定初始文字骨架的笔顺信息,也就是说采用参考文字骨架的已知笔顺信息,来匹配分析出的初始文字骨架的未知的笔顺信息。解决了现有技术中对于不带笔画交叉信息的字库数据,无法确定其书写规则的缺陷,而且采用参考笔顺比对的方式,能够获得较高的匹配精度。
步骤103:将至少包含笔顺信息的初始文字骨架矢量化,生成字库数据的最终文字骨架。
在本步骤中,在确定了初始文字骨架的笔顺信息后,可以将笔顺信息添加至初始文字骨架中,笔顺信息表征了字库数据的书写规则,如此,初始文字骨架中就包含了笔顺信息,然后将此时的初始文字骨架矢量化,即可生成字库数据的最终文字骨架。如此一来,最终文字骨架中不仅具有字库数据的文字骨架,而且具有字库数据的笔顺信息。解决了现有技术中,因字库数据不带有笔画交叉信息而无法保证笔画交叉位置的骨架遵循文字书写规则的问题,并且能够基本消除文字骨架中的分叉,因此降低笔画交叉位置形变率,同时恢复文字骨架的笔顺信息,提高了文字骨架提取的效率。
本发明提供的提取文字骨架的方法,通过提取待处理的字库数据的初始文字骨架;并预设可用于比对分析笔顺信息的参考文字骨架,然后将初始文字骨架与预设的参考文字骨架进行比对,进而确定初始文字骨架的笔顺信息,然后将包含有笔顺信息的初始文字骨架矢量化,即可生成字库数据的最终文字骨架。如此一来,最终文字骨架中不仅具有字库数据的文字骨架,而且具有字库数据的笔顺信息。解决了现有技术中,因字库数据不带有笔画交叉信息而无法保证笔画交叉位置的骨架遵循文字书写规则的问题,并且能够基本消除文字骨架中的分叉,因此降低笔画交叉位置形变率,同时恢复文字骨架的笔顺信息,提高了文字骨架提取的效率。
图3为本发明另一示例性实施例示出的提取文字骨架的方法的流程图。
如图3所示,本实施例提供一种提取文字骨架的方法,是在本发明图1所示的实施例示出的提取文字骨架的方法的基础上,还包括了建立模型提取初始文字骨架、初始文字骨架处理、拆分骨架确定笔顺信息、矢量化生成最终文字骨架的进一步处理的步骤等。
为了更加直观具体地说明本实施例的方法流程,下面结合一个具体的实施例来详细描述本实施例方案。本实施例以汉语“寂”字的文字骨架提取流程来举例说明本实施例的方案。则该方法包括如下步骤:
步骤301:获取字库数据的文字图像和预设的已标注文字骨架的样本图像。
在本步骤中,字库数据可以是某一个中文字库产品,字库数据的文字图像可以是矢量数据,其中矢量数据可以包括任意以直线和贝塞尔曲线组成的数据格式。具体地,图4A所示,以“寂”字作为字库数据为例,获取字库数据对应的矢量数据后,首先读取中文字“寂”的矢量文件,解析得到矢量文件中的轮廓集合。然后可以将矢量数据进行渲染,即可得到“寂”的文字图像,渲染方式可以为多种,比如可以采用区别填充字库矢量数据中顺时针轮廓与逆时针轮廓的方式得到灰度图像,本实施例对渲染方式不做限定。优先地,采用的文字图像尺寸可以为256×256,这样既降低骨架图像转为矢量化的精度损失,同时可以降低模型占用资源以及训练的时间开销。当然任意尺寸的文字图像均可实现本实施例的方案,可以根据实际硬件能力以及骨架质量要求灵活选择,本实施例对此不做限定。如图4B所示,比如可以将图4A所示的“寂”的轮廓集合进行填充得到尺寸为256*256的灰度文字图像I。
样本图像可以根据实际需要进行预设,样本图像中已经标注了文字骨架。优先的,采用的样本图像的标注数据最好由带笔画交叉字库提取的高质量数据,以提高提取精度。比如样本图像的文字骨架标注数据可以包括一款等线体系列字及一款楷体。标注数据的获取可为人工标注,亦可根据交叉字库利用内切圆等方法提取。具体地,比如可以选取“方正悠黑系列体”以及“方正宋刻本秀楷体”两款精品字库产品,以上字库带有笔画交叉信息,可以利用内切圆方式得到这两个字库产品对应的文字骨架,将字形以及文字骨架作为已标注文字骨架的样本图像。然后也可以对样本图像进行渲染得到灰度图像,如图5A所示,是以文字“事”为例得到的初始样本图像,可以将其记为初始训练数据I_S_ori。
步骤302:对样本图像进行数据增广,得到增广后的样本图像。
在本步骤中,数据增广包含但不限于:缩放、旋转以及笔画宽度变化等方式。可通过图像学算法进行数据增广,亦可通过矢量图形学算法处理。为保证模型的普适性,对笔画宽度增广至关重要。比如,可以利用图形学方法,对I_S_ori的矢量字形进行字重增减以实现笔画宽度改变,得到增广后的骨架训练数据I_S_weight,如图5B所示为渲染结果。还可以利用图形学方法,对I_S_ori和I_S_weight的矢量字形以及矢量骨架进行非等比例缩放以及旋转,然后平移,得到增广训练数据I_S(即增广后的样本图像),其渲染结果如图5C至图5E所示。
步骤303:采用增广后的样本图像对神经网络模型进行训练,建立文字骨架提取模型。
在本步骤中,神经网络模型包含但不限于深度卷积模型、生成对抗模型以及所有能实现图像生成的网络模型。模型参数可以根据训练测试效果调整优化。增广后的样本图像中包含了丰富的已标注文字骨架的信息,可以提高模型训练的精确度。具体地,比如可以对生成对抗网络结构M进行训练,利用训练数据I_S训练网络M,根据训练效果调整网络超级参数θ,通过迭代训练方式优化网络骨架提取效果,直至骨架提取效果满足需求,则最终得到的模型就是文字骨架提取模型。
步骤304:将字库数据的文字图像作为测试数据输入文字骨架提取模型,提取得到字库数据的初始文字骨架。
在本步骤中,将步骤301中得到的字库数据的文字图像输入步骤303中建立的文字骨架提取模型后,该模型即可输出字库数据的文字图像对应的初始文字骨架。具体地,以“寂”字为例,将步骤301中得到的灰度文字图像I(即“寂”的文字图像)输入文字骨架提取模型后,模型输出如图4C所示的“寂”字灰度骨架图像S′(即“寂”字的初始文字骨架)。
优选地,还包括:对初始文字骨架进行去噪处理和二值化处理;对经过去噪和二值化处理的初始文字骨架进行断裂修复;将经过断裂修复的初始文字骨架转换为单像素图像的初始文字骨架。
在本实施例中,在步骤303通过文字骨架提取模型提取出初始文字骨架后,可以对初始文字骨架进行数据处理,可以利用图像处理方法,得到无噪、单像素的二值图。比如可以利用去噪算法去除初始文字骨架图像的噪点,去噪算法可为高斯滤波,中值滤波、均值滤波或小波等传统算法中的一种,亦可为深度神经网络。还可以利用二值化算法将初始文字骨架的灰度图转换为二值图像,二值化算法可为全局二值化或局部自适应二值化中的任意一种,亦可为深度神经网络。为了保证骨架的完整性,还可以利用形态学方法,连接断裂的骨架,采用的方法可为腐蚀膨胀或桥接中的任意一种。最后可以利用图像细化方法,将骨架转换为单像素图像,准备后续矢量化操作。具体地,以“寂”字为例,可以利用中值滤波的方式,去除“寂”字灰度骨架图像S′中的噪点,得到图像S1。对S1采用全局二值化,得到二值图像S2。利用腐蚀膨胀方式,连接S2中断裂的骨架段,得到图像S3。利用细化方法,将S3转为单像素图像S(如图4D所示)。
步骤305:将初始文字骨架拆分为多个第一骨架段。
在本步骤中,将初始文字骨架拆分为若干互相独立的骨架段,记为第一骨架段。优选地,骨架段可以是一串相互连接的骨架点。可采用连通性度量以及任意分割算法来拆分骨架段,尽量保证骨架图像被“过分割”,便于后续笔画信息恢复。同时对于水平和垂直的骨架段,确保骨架点在相同直线上。具体地,如图6A所示,以“后”字的骨架拆分为例,比如利用连通性方法,确定“后”字的初始文字骨架的单像素图像中每个像素点的连通度,删除所有交点Intersect(连通度不小于3的骨架点),然后利用深度优先搜索的方式,遍历每个端点Ending(连通度为1的骨架点)并以端点为起点确定骨架段,特殊处理闭合骨架段。所有第一骨架段组成的集合记为SkeletonSegment,第一骨架点组成的集合记为SkeletonPoint。
步骤306:获取参考文字骨架的多个第二骨架段,以及每个第二骨架段的预设笔顺信息。
在本步骤中,参考文字骨架中包含了其预设的笔顺信息,可以预先将参考文字骨架拆分为多个骨架段,为例便于笔画匹配,此处的骨架拆分的时候,可以直接以每个文字的一个笔画作为一个骨架段进行拆分,按笔画将参考文字骨架拆分后别的骨架段记为第二骨架段。同样可以采用骨架点集合的方式表示第二骨架段,并且每个第二骨架段都关联由对应的预设笔顺信息。具体地,如图6B所示,以“后”字的参考文字骨架拆分为例,确定参考文字的第二骨架点SkeletonPoint′以及第二骨架点SkeletonPoint′i对应的笔画标号Label′=i,其中,i表示顺序,i为大于或等于另的整数。如图6B中所示,为“后”字的参考文字骨架进行骨架拆分后的示意图,其中Label′=1至Label′=6分别表示拆分后,第二骨架段对应的笔画标号,本实施例以“后”字的书写规则对应的笔顺信息为例。
步骤307:判断第一骨架段与第二骨架段的相似度是否达到预设阈值。如果是,则执行步骤308。
在本步骤中,可以通过将对比第一骨架段与第二骨架段的相似度,来确定二者是否匹配。相似度的预设阈值,可以根据实际需要进行设定。
进一步地,步骤307中具体可以包括:分别获取第一骨架段的第一骨架点集合和第二骨架段的第二骨架点集合;判断第一骨架点集合与第二骨架点集合的相似度是否达到预设阈值;若第一骨架点集合与第二骨架点集合的相似度达到预设阈值,则确定第一骨架段与第二骨架段的相似度达到预设阈值;若所述第一骨架点集合与所述第二骨架点集合的相似度未达到所述预设阈值,则确定所述第一骨架段与所述第二骨架段的相似度未达到所述预设阈值。
在本实施例中,可以将第一骨架段的骨架点集记为第一骨架点集合,将参考文字骨架的第二骨架段的骨架点集记为第二骨架点集合。然后点集匹配的方式确定第一骨架段与第二骨架段是否匹配。具体地,如果第一骨架点集合与第二骨架点集合的相似度达到预设阈值,则确定第一骨架段与第二骨架段的相似度达到预设阈值,否则,则确定第一骨架段与第二骨架段的相似度未达到预设阈值。比如可采用“迭代最近点法”,“鲁棒点匹配”,“核相关法”以及一致性点漂移算法(Coherent Point Drift简称“CPD”)等点集匹配算法中的任意一种,来实现上述点集的分析匹配。如图6C所示,是以“后”字的骨架点集匹配为例,利用CPD方法将第二骨架点集合SkeletonPoint′与第一骨架点集合SkeletonPoint进行匹配的过程。
步骤308:将第二骨架段的预设笔顺信息确定为第一骨架段的笔顺信息。
在本步骤中,根据步骤307的比对匹配结果,若第一骨架段与第二骨架段的相似度达到预设阈值,既可以确定每个第一骨架段的笔画归属关系,可根据第一骨架点归属不同笔画的数量确定第一骨架段的归属关系。具体地,以“后”的比对匹配为例,在所有骨架段匹配完成后,确定第一骨架点SkeletonPointj对应最近的参考第二骨架点SkeletonPoint′i,然后将第一骨架点SkeletonPointj的所属笔画Labelj设定为Label′i(其中i,j为大于或等于零的整数),对于每个第一骨架段SkeletonSegmentk(其中k为大于或等于零的整数),确定其包含的第一骨架点归属最多笔画的标号位l,则将该第一骨架段SkeletonSegmentk的标号设定为l。
需要说明的是,本实施例也可以先确定每个骨架点的笔画归属关系,再提取骨架段。
步骤309:将多个第一骨架段的笔顺信息确定为初始文字骨架的笔顺信息。
在本步骤中,确定了初始文字骨架的所有第一骨架段对应的笔顺信息后,即可将初始文字骨架包含的多个第一骨架段的笔顺信息确定为初始文字骨架的笔顺信息。具体地,如图6D所示,为待处理的字库数据“后”字的笔画归属关系确定后的示意图。Label=1至Label=6为“后”字的初始文字骨架的笔顺信息。同样的,按照本实施例的处理方式,将如图4D所示“寂”的单像素图像S确定笔顺信息后,可以得到待处理的字库数据“寂”字的初始文字骨架的笔顺信息,如图4E所示,图4E中仅仅示出了“寂”的前三笔(即图4E中的Label=1至Label=3)的笔画顺序,剩余的笔画顺序的确定规则可以参考“后”字的处理方式。以上通过拆分骨架图像,将骨架分为若干个骨架段,并将参考文字的骨架与生成文字的骨架匹配,根据参考信息以及匹配结果确定骨架点的归属关系,然后恢复了骨架笔顺信息。
步骤310:将初始文字骨架中具有相同笔顺信息的第一骨架段进行曲线拟合,得到具有相同笔顺信息的骨架曲线段集合。
在本步骤中,在步骤309中确定了初始文字骨架的笔顺信息之后,由于进行了骨架拆分,为了保证文字骨架的完整性,可以将骨架进行曲线拟合。比如可以对初始文字骨架中的每个第一骨架段,采用二分法搜索第一骨架段,保证每段小的第一骨架段的曲线拟合误差小于曲线拟合精度。可以分别利用曲线进行拟合,选取拟合误差较小的曲线,组成骨架曲线段(以下称曲线段)。曲线可为贝塞尔曲线或任意二维曲线形式。具体地,对初始文字骨架中具有相同笔顺信息的第一骨架段进行曲线拟合,即具有相同笔顺信息的骨架段曲线拟合。初始文字骨架中每个笔画包含的一个或多个第一骨架段集合记为StrokeSkeletonSegment,对于每个第一骨架段StrokeSkeletonSegmenti,利用二分法对骨架段进行拆分,保证每段小的第一骨架段的曲线拟合误差小于拟合精度,不同字体拟合精度设定不同,比如对于横平竖直的等线体,可以设置拟合精度设定为0.5,其它字体可以设定为1.5。分别利用直线和三次贝塞尔曲线拟合骨架段,拟合方法可以为最小二乘法,拟合后得到的曲线段记为StrokeSkeletonCurvei,整个笔画包含的曲线段集合就是具有相同笔顺信息的骨架曲线段集合,记为StrokeSkeletonCurve。
步骤311:遍历具有相同笔顺信息的骨架曲线段集合中的所有骨架曲线段端点,根据每个骨架曲线段在端点处的切线方向以及各个端点之间的距离大小,将端点之间的距离在预设距离范围内的具有相同笔顺信息的骨架曲线段进行连接,得到相同笔顺信息对应的笔画信息。
在本步骤中,在确定具有相同笔顺信息的骨架曲线段集合后,进行具有相同笔顺信息的骨架曲线段连接,顺序连接具有相同笔顺信息的所有骨架曲线段,保证每个笔顺信息对应一条独立骨架曲线段。顺序连接的方法可为“曲线延伸法”,“端点直连法”以及“中点替代法”中的任意一种或几种。具体地,可以综合利用“曲线延伸法”,“端点直连法”和“中点替代法”连接StrokeSkeletonCurve,遍历StrokeSkeletonCurve中的所有骨架曲线段端点,确定距离较近的曲线段连接关系对,即将端点之间的距离在预设距离范围内的具有相同笔顺信息的骨架曲线段进行连接,预设距离范围可以设定为小于或等于20。若存在多个在该预设距离范围内的端点匹配对,则可以根据曲线端点切线方向以及距离大小确定最终的连接关系组合Connectpair。
进一步地,若存在多个在该预设距离范围内的端点匹配对,对于Connectpair中的每个关系组合pair,pair对应的两个骨架曲线段为C1和C2,骨架曲线段对应的临近曲线为c1和c2,对应端点为P1和P2,首先尝试延长c1和c2,若在10个延伸点范围内,骨架曲线段相交,则将交点P作为连接点。若骨架曲线段不相交,则计算关系组合pair对应两个骨架曲线段的端点P1和P2,计算P1和P2的中点P,若用P替代P1和P2,对应骨架曲线c1和c2切线方向均未发生明显变化,则将P作为连接点。若上述两种方法均不奏效,则用直线连接P1和P2。然后更新笔画骨架曲线段集合StrokeSkeletonCurve,若StrokeSkeletonCurve中包含多个骨架曲线段,则将最长的骨架曲线段设定为“主骨架”。
进一步地,步骤311中确定的具有相同笔顺信息的骨架曲线段集合中存在一个笔顺信息对应多条独立曲线段的情况,此时可能是将不同笔顺信息的骨架段规划在了同一个具有相同笔顺信息的骨架曲线段集合中。因此,可以连接整字骨架曲线段来降低这种情况带来的错误率。具体地,若每个笔顺信息对应多条骨架曲线段,则将最长的骨架曲线段标记为“主骨架”,不同笔顺信息的“主骨架”无法连接。所有笔顺信息的骨架曲线段集合为SkeletonCurve,对SkeletonCurve中的所有骨架曲线段,重复执行步骤311中的方法,区别在于,临近骨架曲线段的预设阈值范围可以是小于或等于10,同时“主骨架”曲线段之间不连接。如此,可以将具有相同笔顺信息的骨架曲线段集合中存在的原本属于其他笔画的曲线段连接到正确的笔画上。
步骤312:将笔顺信息添加至矢量化的文字骨架曲线中,生成字库数据的最终文字骨架。
在本步骤中,确定了初始文字骨架的笔顺信息后,将笔顺信息添加至矢量化的文字骨架曲线中,即可获取字库数据的最终文字骨架。
进一步地,上述操作得到的笔画的曲线段包含大量冗余点,为了精简数据量,可以在确定笔画信息后进行减点操作。具体地,可以对连接后的曲线段执行减点操作,降低矢量数据点规模。以“七”字为例,对“七”字的具有相同笔顺信息的骨架曲线段集合StrokeSkeletonCurve执行减点操作步骤如下:
a、遍历StrokeSkeletonCurve,设曲线段c为StrokeSkeletonCurve中的一个曲线段,将其离散化,得到离散曲线段DiscreteSkeletonCurve,曲线段c中包含n个曲线{c1,c2,…,cn},对应离散曲线段为{sc1,sc2,…,scn},清空c。
b、设待减点曲线段集合Set,顺序将Sci加入到集合Set中,若Set中的点集被一条直线或曲线curvei拟合,则继续加入离散曲线段sci+1,否则将上一步的离散曲线curvei-1加入集合c中。
c、清空Set,将sci加入Set中,继续执行步骤b。
如图7A所示,为对“七”字的具有相同笔顺信息的骨架曲线段集合StrokeSkeletonCurve执行减点操作前的示意图,如图7B所示,为对“七”字的具有相同笔顺信息的骨架曲线段集合StrokeSkeletonCurve执行减点操作后的示意图。其中,图中空心圆表示曲线的控制点,对比图7A和图7B可以看出,执行减点操作后得到的骨架曲线段,控制点数量大幅减少。
最后更新骨架曲线段集合SkeletonCurve,将骨架曲线段集合SkeletonCurve按顺序写入矢量PDF文件,就生成“七”字的最终文字骨架。
需要说明的是,本实施例的提取文字骨架的方法可以适用于不同的字体,如图7C所示,为不同字体的字库数据采用本实施例的方法进行文字骨架提取的结果示意图。
本实施例提供的提取文字骨架的方法,通过将待处理的字库的矢量数据渲染为特定尺寸的文字图像,对已有样本图像的文字骨架数据进行数据增广,训练神经网络模型,建立文字骨架提取模型,然后利用文字骨架提取模型提取字库数据的初始文字骨架,并对提取的初始文字骨架执行去噪、二值化以及细化等图像处理操作,得到单像素二值骨架图像,继而拆分骨架,并依靠已有参考文字骨架的笔顺信息匹配,恢复初始文字骨架的笔顺信息,最终将恢复笔顺信息的初始文字骨架数据转为矢量数据,并存在矢量文件中。该方不仅案适用于去笔画交叉的中文字库,亦可应用于带笔画交叉的中文字库,扩大了适用范围。在去除文字骨架图像分叉的同时,还防止笔画交叉位置骨架失真,并能根据参考数据,恢复骨架笔顺信息,提取的矢量骨架有助于提升字库设计开发效率。
图8A为本发明一示例性实施例示出的提取文字骨架的装置的结构图。
如图8A所示,本实施例提供一种提取文字骨架的装置,该提取文字骨架的装置可以集成在终端中,该装置包括:提取模块801、确定模块802和矢量化模块803。
其中,提取模块801,用于提取待处理的字库数据的初始文字骨架;
确定模块802,用于将初始文字骨架与预设的参考文字骨架进行比对,确定初始文字骨架的笔顺信息;
矢量化模块803,用于将至少包含笔顺信息的初始文字骨架矢量化,生成字库数据的最终文字骨架。
上述各个模块的详细内容参见上述图2对应的实施例中的描述。
图8B为本发明另一示例性实施例示出的提取文字骨架的装置的结构图。
如图8B所示,本实施例提供的提取文字骨架的装置是在本发明如图8A所示的一示例性实施例示出的提取文字骨架的装置的基础上,进一步地,还包括了:
可选地,提取模块801具体用于:获取字库数据的文字图像和预设的已标注文字骨架的样本图像;对样本图像进行数据增广,得到增广后的样本图像;采用增广后的样本图像对神经网络模型进行训练,建立文字骨架提取模型;将字库数据的文字图像作为测试数据输入文字骨架提取模型,提取得到字库数据的初始文字骨架。
可选地,确定模块802具体用于:将初始文字骨架拆分为多个第一骨架段;获取参考文字骨架的多个第二骨架段,以及每个第二骨架段的预设笔顺信息;判断第一骨架段与第二骨架段的相似度是否达到预设阈值;若第一骨架段与第二骨架段的相似度达到预设阈值,则将第二骨架段的预设笔顺信息确定为第一骨架段的笔顺信息;将多个第一骨架段的笔顺信息确定为初始文字骨架的笔顺信息。
可选地,确定模块802,具体用于:分别获取第一骨架段的第一骨架点集合和第二骨架段的第二骨架点集合;判断第一骨架点集合与第二骨架点集合的相似度是否达到预设阈值;若第一骨架点集合与第二骨架点集合的相似度达到预设阈值,则确定第一骨架段与第二骨架段的相似度达到预设阈值;若所述第一骨架点集合与所述第二骨架点集合的相似度未达到所述预设阈值,则确定所述第一骨架段与所述第二骨架段的相似度未达到所述预设阈值。
可选地,矢量化模块803,具体用于:将所述初始文字骨架中具有相同笔顺信息的所述第一骨架段进行曲线拟合,得到具有相同笔顺信息的骨架曲线段集合;遍历所述具有相同笔顺信息的骨架曲线段集合中的所有骨架曲线段端点,根据每个所述骨架曲线段在端点处的切线方向以及各个端点之间的距离大小,将端点之间的距离在预设距离范围内的所述具有相同笔顺信息的骨架曲线段进行连接,得到所述相同笔顺信息对应的笔画信息;将所述笔顺信息添加至矢量化的文字骨架曲线中,生成所述字库数据的所述最终文字骨架。
可选地,还包括:处理模块804,用于对初始文字骨架进行去噪处理和二值化处理;修复模块805,用于对经过去噪和二值化处理的初始文字骨架进行断裂修复;转换模块806,用于将经过断裂修复的初始文字骨架转换为单像素图像的初始文字骨架。
上述各个模块的详细内容参见上述图3对应的实施例中的描述。
本发明实施例还提供一种提取文字骨架的设备,包括:存储器;处理器;以及计算机程序;其中,计算机程序存储在存储器中,并被配置为由处理器执行本发明如图2对应一示例性实施例示出的提取文字骨架的方法或本发明如图3对应的另一示例性实施例示出的提取文字骨架的方法。
图9为本发明一示例性实施例示出的提取文字骨架的设备的结构图。
如图9所示,本实施例提供一种提取文字骨架的设备,包括:至少一个处理器91和存储器92,图9中以一个处理器91为例,处理器91和存储器92通过总线90连接,存储器92存储有可被至少一个处理器91执行的指令,指令被至少一个处理器91执行,以使至少一个处理器91执行如上述实施例中图2或图3的提取文字骨架的方法。
相关说明可以对应参见图2至图3的步骤所对应的相关描述和效果进行理解,此处不做过多赘述。
本发明实施例还提供了一种计算机可读存储介质,包括:程序,当其在计算机上运行时,使得计算机可执行上述图2或图3对应的实施例中方法的全部或部分流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(RandomAccess Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。