一种基于多尺度提取汉字关键骨架点的方法

文档序号:35534107发布日期:2023-09-21 17:57阅读:43来源:国知局
一种基于多尺度提取汉字关键骨架点的方法

本发明属于计算机及汉字矢量化领域,主要关注提高汉字矢量化的质量效果和减少矢量化汉字存储空间大小。


背景技术:

1、为了提高汉字矢量化的质量效果和降低存储大小,引入汉字关键骨架点的提取问题。汉字的关键骨架点是包含汉字所有变化之处的骨架点。已有的提取汉字骨架关键点基本都是只提取了端点、交叉点和拐点。目前的研究成果尚不多,具体如下:

2、文献1:wang,c.,lian,z.,tang,y.,&xiao,j.(2013).automatic correspondencefinding for chinese characters using graph matching.2013seventh internationalconference on image and graphics,545-550.

3、文献1给出的汉字关键骨架提取方法:生成文字的骨架后,对骨架进行修剪,删除一些短分支骨架,再在文字干净的骨架中提取骨架的端点、连接点、角点作为骨架的关键点。但是该文未探讨具体如何提取点、连接点、角点等。

4、文献2:pan,w.,lian,z.,tang,y.,&xiao,j.(2014).skeleton-guidedvectorization of chinese calligraphy images.2014ieee 16th internationalworkshop on multimedia signal processing(mmsp),1-6.

5、文献2给出的汉字关键骨架提取方法:生成文字的骨架后,进行骨架的生长和剪枝,最后将骨架中的起点、终点和转折点定位为关键骨架点。但是该文也未探讨具体如何提取起点、终点和转折点。


技术实现思路

1、本发明目的是克服现有技术存在的上述不足,为了提高汉字矢量化的质量效果和减少存储空间大小,本发明给出采用基于多尺度提取汉字关键骨架点的方法。

2、本发明对输入单个汉字图片,进行预处理生成二值图;采用骨架提取算法提取汉字的骨架;基于聚集度提取骨架的所有端点和所有交叉点;采用小尺度过滤法提取骨架的所有折点;采用大尺度过滤法提取骨架的所有弯点;进一步提取平均笔画宽度变化的所有变宽点;将上述所有端点、交叉点、折点、弯点、以及变宽点记录下来作为该汉字的所有关键骨架点。

3、本发明的技术方案

4、一种基于多尺度提取汉字关键骨架点的方法,所述方法包括具体步骤如下:

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

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

7、第3步、针对第2步中的二值图,采用骨架提取算法提取汉字的骨架,汉字的骨架是由全部骨架像素点(i,j)组成,其中0=<i=<(汉字图片的宽度-1),0=<j=<(汉字图片的长度-1);

8、第4步、针对第3步中的骨架,基于聚集度提取骨架的所有端点和所有交叉点;

9、第5步、针对第3步中的骨架,采用小尺度过滤法提取骨架的所有折点;

10、第6步、针对第3步中的骨架,采用大尺度过滤法提取骨架的所有弯点;

11、第7步、针对第3步中的骨架,进一步提取平均笔画宽度变化的所有变宽点;

12、第8步、将上述所有端点、交叉点、折点、弯点、以及变宽点记录下来作为该汉字的所有关键骨架点;

13、第9步、输出该汉字的所有关键骨架点,程序运行结束。

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

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

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

17、 p9 p2 p3 p8 p1 p4 p7 p6 p5

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

19、(1)这是一个前景像素点(值为1);

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

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

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

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

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

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

26、(1)这是一个前景像素点(值为1);

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

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

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

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

31、第3.5步、若全部的像素点遍历完毕,则执行第3.6步;否则执行第3.1步;

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

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

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

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

36、

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

38、

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

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

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

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

43、第4.4步、若全部的骨架像素点遍历完毕,则执行第4.5步;否则执行第4.1步;

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

45、进一步的,第5步所述的“采用小尺度过滤法提取骨架的所有折点”,是通过在给定骨架像素点的“小区域”上获取所有骨架像素点、进一步将靠近该“小区域”边界的骨架像素点作为直线的端点、并获取该“小区域”中距离此直线最大的骨架像素点作为折点类型的关键骨架点,其中该“小区域”的宽度、长度分别为汉字图片宽度、长度的0.1倍;骨架的折点具体获取方法如下:

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

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

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

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

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

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

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

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

54、

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

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

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

58、进一步的,第6步所述的“采用大尺度过滤法提取骨架的所有弯点”,是通过在给定骨架像素点的“大区域”上获取所有骨架像素点、进一步将靠近该“大区域”边界的骨架像素点作为直线的端点,并获取该“大区域”中距离此直线最大的骨架像素点作为弯点类型的关键骨架点,其中该“大区域”的宽度、长度分别为汉字图片宽度、长度0.2倍;骨架的弯点具体获取方法如下:

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

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

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

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

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

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

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

66、avg(sw)-avg(swnxt)>t   (8)

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

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

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

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

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

72、第7.6步、若遍历完全部骨架像素点,则执行第7.7步;否则执行第7.3步;

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

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

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

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

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

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

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

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

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

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

83、(9)聚集度:给每个前景像素点定义一个区域,这个区域即为以此像素点为中心、边长为二倍的radius的一个正方形区域,计算此区域内的前景像素点个数,此个数即为像素点的聚集度。

84、(10)小尺度过滤法:区域大小初始化一般设置为整体图像宽高的0.2倍,通过遍历图中所有前景像素点的区域,过滤汉字所有折点的方法。

85、(11)大尺度过滤法:区域大小初始化一般设置为整体图像宽高的0.1倍,通过遍历图中所有前景像素点的区域,过滤汉字所有弯点的方法。

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

87、(13)连通分量是指汉字骨架图中连续不中断的几个骨架像素点组成的骨架像素点数组。

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

89、本发明能够有效提高汉字矢量化的质量效果和减少矢量化汉字存储空间大小。

90、本发明采用基于多尺度提取汉字关键骨架点,分别获取骨架的端点、交叉点、弯点、折点、平均笔画宽度变化点即变宽点等汉字关键骨架点,从而一方面确保汉字矢量化的高质量,另一方面则有效地减少矢量化汉字的存储空间大小。

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