一种基于关键骨架点和笔画宽度提取汉字关键轮廓点的方法

文档序号:35932229发布日期:2023-11-05 09:50阅读:64来源:国知局
一种基于关键骨架点和笔画宽度提取汉字关键轮廓点的方法

本发明属于计算机及汉字矢量化领域,主要关注提高汉字矢量化的质量效果、有效去除噪声轮廓点和冗余轮廓点。


背景技术:

1、为了提高汉字矢量化的质量效果、有效去除噪声轮廓点和冗余轮廓点,引入汉字关键轮廓点的提取问题。汉字的关键轮廓点是基于汉字的轮廓点筛选出的汉字关键轮廓点,汉字关键轮廓点是包含汉字真正变化之处的轮廓点,剔除了绝大部分的冗余轮廓点和噪声轮廓点。

2、汉字关键轮廓点方面研究目前成果尚不多,目前已知的提取汉字关键轮廓点大多以删除当前轮廓点前后图形差异为根据来判断是否删除轮廓点,但汉字的轮廓点是否被删除不能仅仅依靠对图像效果的影响程度,很多需要保留的汉字特征的轮廓点变化可能是微小的,而很多噪声的轮廓点变化可能也是比较大的。具体如下:

3、[1]李新杰,江子傲,&王存睿.(2021).一种改进的中文字符矢量化算法.大连民族大学学报,23(3),7.

4、文献[1]中通过夹角判别法和计算删除代价值来删除冗余点得到最终关键轮廓点集合,其判断是否为冗余点只是通过最终拟合后和原图差距来判断,而汉字有一些细节特征本身就是变化很微小的,这样汉字的一些微小特征很容易被误删掉,另外此文章也没有提出如何删除掉汉字图像本身噪声的轮廓点。

5、[2]pan,w.,lian,z.,tang,y.,&xiao,j.(2014).skeleton-guidedvectorization of chinese calligraphy images.2014ieee16th internationalworkshop on multimedia signal processing(mmsp),1-6.

6、文献[2]中首先通过删除代价法来去除冗余轮廓点,但是同样删除代价法都只是按照删除后对拟合结果的影响来判断是否删除轮廓点,容易删掉汉字细小特征的轮廓点;此外文献[2]还采用了轮廓点分类的方法,但其中使用到的关键骨架点只有端点、交叉点和转折点,这样提取后的轮廓点容易丢失“撇”、“捺”等笔画的弯曲之处,以及笔画宽度变化之处。


技术实现思路

1、本发明目的是克服现有技术存在的上述不足,为了提高汉字矢量化的质量效果、有效去除噪声轮廓点和冗余轮廓点,本发明给出采用基于关键骨架点和笔画宽度提取汉字关键轮廓点的方法。

2、本发明对输入单个汉字图片,进行预处理生成二值图;采用骨架提取算法提取汉字的骨架;进一步基于多尺度算法提取汉字的关键骨架点;获取汉字每个关键骨架点处的笔画宽度;采用轮廓提取算法获取汉字的轮廓点;依次遍历汉字所有轮廓点,计算当前轮廓点到最近关键骨架点的距离,计算当前最近关键骨架点的距离阈值,通过比较当前点到最近关键骨架点的距离与距离阈值的大小来判断当前轮廓点是否为关键轮廓点,若当前点到最近关键骨架点的距离小于距离阈值则记录当前轮廓点为关键轮廓点;输出汉字的所有关键轮廓点。

3、本发明的技术方案:

4、基于关键骨架点和笔画宽度提取汉字关键轮廓点的方法,所述方法包括具体步骤如下:

5、第1、输入单个汉字图片;

6、第2、针对第1步中的汉字图片,进行预处理生成二值图;

7、第3、针对第2步中的二值图,采用骨架提取算法提取汉字的骨架;

8、第4、针对第3步中的骨架,进一步采用提取汉字的关键骨架点,关键骨架点应包括端点、交叉点、折点、弯点、以及变宽点;

9、第5、针对第2步中的二值图和第4步中提取的关键骨架点,获取汉字每个关键骨架点处的笔画宽度,其中笔画宽度是指从文字边缘上的指定一点开始、通过在垂直于边缘的方向上探索直到找到另一条与之平行的边缘上的一点、由这两条边缘的点构成一个笔画横截面、此笔画横截面的宽度即为该指定点处的笔画宽度;

10、第6、针对第2步中的二值图,采用轮廓提取算法获取汉字的轮廓点;

11、第7、针对第6步中得到的汉字轮廓点,依次遍历汉字的所有轮廓点,计算当前轮廓点到最近关键骨架点的距离;

12、第8、针对第4步中提取的汉字关键骨架点和第5步中获取的关键骨架点处的笔画宽度,计算当前最近关键骨架点的距离阈值;

13、第9、针对第7步中计算得到的距离与第8步中得到的距离阈值,比较当前轮廓点到最近关键骨架点的距离与距离阈值的大小,从而判断当前轮廓点是否为关键轮廓点;

14、第10、若全部的轮廓点遍历完毕,则执行第11步,否则执行第7步;

15、第11、输出该汉字的所有关键轮廓点,程序运行结束。

16、进一步的,第3步所述的“采用骨架提取算法提取汉字的骨架”,汉字的骨架是指汉字的基本形状,一般指汉字图像的中轴;提取汉字骨架的过程就是经过一层层的剥离,从原来的汉字中去掉一些像素,但仍要保持原来的形状,直到得到图像的骨架;骨架提取算法可采用如下:

17、第3.1步、针对汉字的二值图,依次遍历全部的像素点(i,j),其中0=<i=<(汉字图片的宽度-1),0=<j=<(汉字图片的长度-1),针对像素点(i,j)即p1执行步骤1.2;

18、第3.2步、针对p1即像素点(i,j)构建如下3*3矩阵,如下表格所示,矩阵包含了像素p1的八邻域,值为1时是前景像素、值为0时是背景像素;

19、 p99 p2 p3 p88 p1 p4 p7 「p66 p5

20、第3.3步、执行光栅扫描并标记满足以下5个条件的所有像素,满足如下条件的像素p1则标记为删除,条件如下:

21、(1)这是一个前景像素像素(1);

22、(2)顺时针查看p2、p3、…、p9、p2时,从0到1的变化次数仅为1;

23、(3)p2、p3、…、p9中前景像素的个数在2个以上6个以下;

24、(4)p2、p4、p6中至少有1个为0(背景像素);

25、(5)p4、p6、p8中至少有1个为0(背景像素);

26、将满足条件的所有像素标为0(背景像素)。

27、第3.4步、执行光栅扫描并标记满足以下5个条件的所有像素,满足如下条件的像素p1则标记为删除,条件如下:

28、(1)这是一个前景像素像素(1);

29、(2)顺时针查看p2、p3、…、p9、p2时,从0到1的变化次数仅为1;

30、(3)p2、p3、…、p9中前景像素的个数在2个以上6个以下;

31、(4)p2、p4、p8中至少有1个为0(背景像素);

32、(5)p2、p6、p8中至少有1个为0(背景像素);

33、第3.5步、若全部的像素点遍历完毕,则执行步骤1.6;否则执行步骤1.1;

34、第3.6步、在汉字二值图中删除所有标记为“删除”的像素点,剩下的输出结果即为二值图的骨架。

35、进一步的,第4步所述的“提取汉字的关键骨架点”,是指首先基于聚集度提取骨架的所有端点和所有交叉点,进一步采用小尺度过滤法提取骨架的所有折点、大尺度过滤法提取骨架的所有弯点,最后提取平均笔画宽度变化的所有变宽点,最终提取的关键骨架点包括:骨架的端点、交叉点、折点、弯点、以及变宽点;具体步骤如下:

36、第4.1步、基于聚集度提取骨架的端点和交叉点

37、通过针对给定的骨架像素点来计算它的骨架像素点区域的聚集度、并进一步比较聚集度与阈值的大小来获取端点和交叉点这两类关键骨架点;骨架像素点区域是指以该像素点为中心点、以给定的边长所围成的正方形区域,区域的边长可取值为2*radius,其中radius值为(max(汉字图片的宽度,汉字图片的长度)*0.1)/2;阈值包括最大阈值和最小阈值,最大阈值可取值为9,最小阈值可取值为6;

38、第4.1.1步、依次遍历全部的骨架像素点(i,j),其中0=<i=<(汉字图片的宽度-1),0=<j=<(汉字图片的长度-1),针对当前的骨架像素点(i,j)执行第4.1.2步;

39、第4.1.2步、利用公式(1)和(2)计算当前的骨架像素点(i,j)的聚集度degreei,j,其中i为当前骨架像素点的宽度坐标,j为当前骨架像素点的长度坐标,k为(i-radius,i+radius)范围内的全部可能值,l为(j-radius,j+radius)范围内的全部可能值;

40、

41、其中,pk,l是像素点(k,l)处的取值,若像素点(k,l)是前景则pk,l为1、否则为0,即pk,l取值如公式(2):

42、

43、第4.1.3步、比较像素点(i,j)的聚集度degreei,j和最大阈值与最小阈值的大小关系:

44、如果像素点(i,j)的聚集度degreei,j>最大阈值,则此像素点(i,j)是交叉点,记录下该像素点(i,j)为交叉点;

45、否则,如果像素点(i,j)的聚集度degreei,j<最小阈值,则此像素点(i,j)是端点,记录下该像素点(i,j)为端点;

46、否则,此像素点(i,j)既不是端点、又不是交叉点,不用记录下来;

47、第4.1.4步、若全部的骨架像素点遍历完毕,则执行第4.1.5步;否则执行第4.1.1步;

48、第4.1.5步、骨架的所有端点和所有交叉点获取完毕,其中骨架的所有端点和所有交叉点都是关键骨架点。

49、第4.2步、采用小尺度过滤法提取骨架的所有折点

50、第4.2.1步、依次遍历全部的骨架像素点(i,j),其中0=<i=<(汉字图片的宽度-1),0=<j=<(汉字图片的长度-1),针对当前的骨架像素点(i,j)执行第4.2.2步;

51、第4.2.2步、计算当前的骨架像素点(i,j)的“小区域”,如图2所示,以当前的骨架像素点(i,j)为中心扩展出对应的“小区域”,“小区域”的宽度、长度分别为汉字图片宽度、长度的0.1倍;

52、第4.2.3步、计算第4.2.2步的“小区域”中关键骨架点的所有“连通分量”,其中每个“连通分量”是指汉字骨架中连续不中断的几个骨架像素点组成的骨架像素点数组;并进一步将每个“连通分量”放入到一个数组point[n]中,其中n是该“连通分量”中骨架像素点个数;进一步计算每个“连通分量”point[n]靠近“小区域”边界的数目,如果靠近“小区域”边界的数目等于2,则记录这两个边界骨架像素点为此“连通分量”的起点和结束点,并以这两个起点和结束点作为直线的两个端点,利用公式(4)(5)(6)求得直线w方程;进一步再利用公式(7)计算此“连通分量”中所有骨架像素点到直线w的距离,结果放入到数组dist[n],其中n是该“连通分量”中骨架像素点个数;

53、直线w的方程为ax+by+c=0,其中:

54、a=point[n-1].y-point[0].y   (4)

55、b=point[0].x-point[n-1].x  (5)

56、c=point[n-1].x×point[0].y-point[0].x×point[n1].y  (6)

57、像素点point[i]到直线w距离为,其中0<=i<n:

58、

59、第4.2.4步、获取dist[n]中最大值的数组索引号z,即dist[z]为最大值,其中n是该“连通分量”中骨架像素点个数;进一步比较dist[z]与“距离阈值”的大小关系,如果dist[z]>距离阈值,则dist[z]所对应的骨架像素点point[z]为折点,记录下该骨架像素点point[z]为折点,其中距离阈值可取值为max(“小区域”宽度,“小区域”长度)*0.1,本步骤已将当前“小区域”中所有折点提取了出来;

60、第4.2.5步、按照给定的步长移动第4.2.2步中的“小区域”,步长大小设置为“小区域”宽高的四分之一;若遍历了全部骨架像素点,则执行第4.2.6步;否则执行第4.2.2步;

61、第4.2.6步、骨架的所有折点获取完毕,其中骨架的所有折点都是关键骨架点。

62、第4.3步、采用大尺度过滤法提取骨架的所有弯点

63、第4.3.1步、依次遍历全部的骨架像素点(i,j),其中0=<i=<(汉字图片的宽度-1),0=<j=<(汉字图片的长度-1),针对当前的骨架像素点(i,j)执行第4.3.2步;

64、第4.3.2步、计算当前的骨架像素点(i,j)的“大区域”,如图3所示,以当前的骨架像素点(i,j)为中心扩展出对应的“大区域”,“大区域”的宽度、长度分别为汉字图片宽度、长度0.2倍;

65、第4.3.3步、计算第4.3.2步的“大区域”中关键骨架点的所有“连通分量”,并将每个“连通分量”放入到一个数组point[n]中,其中n是该“连通分量”中骨架像素点个数;计算每个“连通分量”point[n]靠近“大区域”边界的数目,如果靠近“大区域”边界的数目等于2,则记录这两个边界骨架像素点为此连通分量的起点和结束点,以这两个起点和结束点作为直线的两个端点,并且利用公式(4)(5)(6)求得直线w方程;进一步再利用公式(7)计算此连通分量中所有骨架像素点到直线w的距离,结果放入数组dist[n],其中n是该“连通分量”中骨架像素点个数;

66、第4.3.4步、获取dist[n]中最大值的数组索引号t,即dist[t]为最大值,其中n是该“连通分量”中骨架像素点个数;进一步比较dist[t]与“距离阈值”的大小,如果dist[t]>距离阈值,则dist[t]所对应的骨架像素点point[t]为弯点,记录下该骨架像素点point[t]为弯点,其中距离阈值可取值为max(“大区域”宽度,“大区域”长度)*0.1,本步骤已将当前“大区域”中所有弯点提取了出来;

67、第4.3.5步、按照给定的步长移动第4.3.2步中的“大区域”,步长大小设置为“大区域”宽高的四分之一;若遍历了全部骨架像素点,则执行第4.3.6步;否则执行第4.3.2步;

68、第4.3.6步、骨架的所有弯点获取完毕,其中骨架的所有弯点都是关键骨架点。

69、第4.4步、提取平均笔画宽度变化的所有变宽点

70、依据公式(8)提取相较于附近区域笔画平均宽度变化较大的关键骨架点即变宽点,其中sw为给定区域中笔画宽度的集合,swnxt为给定区域的相邻区域的笔画宽度的集合,avg()为笔画宽度的平均值;骨架的变宽点具体获取方法如下:

71、avg(sw)-avg(swnx1)>t    (8)

72、第4.4.1步、针对第2步中的汉字二值图计算出对应的汉字笔画宽度图,汉字笔画宽度图是一个和原图大小相同的图像,但是每个像素的值为此处笔画宽度的大小,背景部分的像素的值为-1;

73、第4.4.2步、根据第4.4.1步中的汉字笔画宽度图,获取所有骨架像素点处的笔画宽度;

74、第4.4.3步、依次遍历第3步中汉字骨架的全部骨架像素点(i,j),其中0=<i=<(汉字图片的宽度-1),0=<j=<(汉字图片的长度-1),针对当前的骨架像素点(i,j)执行第4.4.4步;

75、第4.4.4步、计算当前的骨架像素点(i,j)的区域,区域的宽度、长度分别为汉字图片宽度、长度的0.1倍;

76、第4.4.5步、在第4.4.4步的区域中,计算该区域内各个骨架像素点处对应原图的笔画宽度,根据该区域内各个骨架像素点处的笔画宽度计算该区域的平均笔画宽度avg(sw),进一步比较它与相邻区域的平均笔画宽度avg(swnxt)的差值;如果大于宽度阈值,则两个区域中间的临界骨架像素点被认为是变宽点,其中宽度阈值可取为此处笔画宽度的0.2倍;

77、第4.4.6步、若遍历完全部骨架像素点,则执行第4.4.7步;否则执行第4.4.3步;

78、第4.4.7步、骨架的所有变宽点获取完毕,其中骨架的所有变宽点都是关键骨架点。

79、进一步的,第5步所述的“获取汉字每个关键骨架点处的笔画宽度”,是指通过第2步所述的二值图来计算生成笔画宽度图,其中笔画宽度图是一个和汉字原图大小相同的图像、但是每个像素的值为此处笔画宽度的大小、背景部分的像素为-1;依次遍历第4步获取的所有关键骨架点,根据当前关键骨架点的位置获取对应位置的笔画宽度图中的值,作为当前关键骨架点处的笔画宽度。

80、进一步的,第6步所述的“采用轮廓提取算法获取汉字的轮廓点”,是指获取汉字边缘处的点并沿着轮廓线逆时针或顺时针排列,本发明使用的轮廓提取算法是potrace算法中的部分算法,具体获取汉字轮廓点的方法如下:

81、第6.1步、路径分解:针对第2步中获取到的二值图构造一个有向图g,路径分解的目标是将图g分解为封闭路径,即找到一个封闭路径的集合使g的每条边都只出现一次。具体的分解方法如下:

82、从一对有不同颜色的相邻像素开始,比如通过选择某一行最左边的黑像素。两个被选择的像素在一条边上相遇,我们改变这条边的朝向来使黑色像素在边的左边白色像素在右边,边被定义为长度为1的路径。我们继续扩张这条路径使新的边都有一个黑色像素在它的左边一个白色像素在右边。我们继续下去直到我们返回到我们开始的那个点。每次我们找到一个封闭图,我们通过反转它所有像素的颜色来从图中移除。这定义了一个新的位图,我们在这张图继续递归应用这个算法直到没有黑色像素余留。

83、第6.2步、获取最优多边形,最优多边形集合顶点即为汉字轮廓点集合:将6.1步获得的封闭路径集合,通过直线路径近似的方法构造出了多边形,然而可能会找到许多不同的多边形,从中挑选一个最佳的多边形。其对最佳的主要标准是片段的数量:一个拥有更少片段的多边形被认为是比更多片段多边形更优的。在片段数相同的多边形当中,片段惩罚和越小的多边形更优。此步骤过后,就生成了最优多边形集合,多边形的顶点即可以视作汉字的轮廓点,这样就获得了汉字的轮廓点。

84、进一步的,第7步所述的“依次遍历汉字的所有轮廓点,计算当前轮廓点到最近关键骨架点的距离”,是指依次遍历第6步中提取的汉字的所有轮廓点,针对当前轮廓点m(x1,y1),进一步利用公式(9)来计算当前轮廓点m(x1,y1)到所有关键骨架点i(x2,y2)的距离,通过筛选距离的最小值,从而筛选出当前轮廓点到最近关键骨架点的距离,其中,关键骨架点为第4步中获得的汉字关键骨架点,关键骨架点包括骨架的端点、交叉点、折点、弯点和变宽点;最近关键骨架点是指第4步所述关键骨架点中距离当前轮廓点最近的一个关键骨架点;

85、

86、进一步的,第8步所述的“计算当前最近关键骨架点的距离阈值”,是根据第5步中汉字每个关键骨架点处的笔画宽度,来动态获取“距离阈值”大小,“距离阈值”大小为“k*当前关键骨架点处笔画宽度”,其中k的大小默认为1。

87、进一步的,第9步所述的“判断当前轮廓点是否为关键轮廓点”,是指通过比较第7步获取的当前轮廓点到最近关键骨架点的距离与第8步获取的当前最近关键骨架点的距离阈值的大小,来判断当前的当前轮廓点是否为关键轮廓点:

88、如果当前轮廓点到最近关键骨架点的距离小于“距离阈值”,证明当前轮廓点靠近关键骨架点附近,属于真正笔画变化处的轮廓点,则记录当前轮廓点为汉字的关键轮廓点;

89、否则,证明当前轮廓点不靠近任何关键骨架点,属于抖动噪声变化处的轮廓点或冗余轮廓点,则不记录当前轮廓点为汉字的关键轮廓点;

90、其中,最终提取的关键轮廓点,是包含汉字真正变化之处的轮廓点,剔除了绝大部分的冗余轮廓点和噪声轮廓点。

91、本发明所涉及的具体内容及所述术语的含义是:

92、(1)汉字骨架:汉字的骨架是指汉字的基本形状,一般指汉字图像的中轴。提取汉字骨架的过程就是经过一层层的剥离,从原来的汉字中去掉一些像素,但仍要保持原来的形状,直到得到图像的骨架。

93、(2)像素点就是像素,二者含义相同。骨架像素点就是骨架点,二者含义相同。

94、(3)汉字关键骨架点:汉字的关键骨架点是指包含汉字所有变化之处的骨架点。目前已有文章提取的关键骨架点是:端点、交叉点和拐点。本发明基于汉字笔画类型和笔画宽度提取的汉字关键骨架点包括:骨架的端点、交叉点、弯点、折点、平均笔画宽度变化点即变宽点。

95、(4)端点即为每个笔画开始和结束的点。

96、(5)交叉点即为几个笔画交叉之处。

97、(6)折点是指拐弯之处角度比较尖锐的地方,如“折”、“勾”等笔画折笔之处。

98、(7)弯点是指拐弯之处不那么尖锐的地方,例如“撇”、“捺”等笔画的弯曲之处。

99、(8)变宽点是指如果当前区域平均笔画宽度相较于相邻区域平均笔画宽度变化较大,则两个区域中间的临界骨架点被认为是变宽点。

100、(9)笔画宽度:是指从文字边缘上的指定一点开始,通过在垂直于边缘的方向上探索直到找到另一条与之平行的边缘上的一点,由这两条边缘的点构成一个笔画横截面,此笔画横截面的宽度即为该指定点处的笔画宽度。

101、(10)笔画宽度图是一个和汉字原图大小相同的图像,但是每个像素的值为此处笔画宽度的大小,背景部分的像素为-1。

102、(11)汉字的轮廓点:指汉字边缘处的点沿着轮廓线逆时针或顺时针排列,汉字轮廓点可以用于表示汉字的几何形状。

103、(12)汉字的关键轮廓点:指基于汉字的轮廓点筛选出的汉字关键轮廓点,汉字关键轮廓点是包含汉字真正变化之处的轮廓点,剔除了绝大部分的冗余轮廓点和噪声轮廓点。

104、(13)距离阈值:是指计算当前轮廓点与最近关键骨架点距离的阈值,用于判断当前轮廓点是否为关键轮廓点,距离阈值的大小由最近关键骨架点处的笔画宽度动态确定。

105、本发明的优点和积极效果:

106、本发明能够有效提高汉字矢量化的质量效果、有效去除噪声轮廓点和冗余轮廓点,并可减少矢量化汉字存储空间大小。

107、本发明采用基于关键骨架点和笔画宽度提取汉字关键轮廓点,而本发明使用的关键骨架点包括端点、交叉点、弯点、折点、变宽点,即包含了汉字笔画的所有变化之处。首先获取汉字的关键骨架点和关键骨架点处的汉字笔画宽度,再次获取汉字的轮廓点,然后通过汉字的关键骨架点和关键骨架点处的笔画宽度来筛选汉字的轮廓点,提取出全部的汉字关键轮廓点,最后通过顺次连接汉字关键轮廓点形成矢量化汉字。这种方法可以有效去除汉字轮廓点中的噪声轮廓点和冗余轮廓点。

108、本发明可以应用到工业系统中文字的可制造性、个性化字库的自动生成等领域。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1