文字识别算法思路整理-图的路径搜索

通过网页生成一张Arial12字体的图,采集训练数据

一、将图二值化,采集3557个汉字、字母、数字的二值化二维数据

二、根据欧拉回路的思路,遍历所有的点到点线条

1、文字的最长公共路径:也就是文字的识别入口

通过统计,3557个字都包含的

以1开头的长度为2的公共路径有:

[
  '10,1,1',  '10,1,3',
  '10,1,4',  '10,1,5',
  '10,1,0',  '10,1,-2',
  '10,1,-3', '10,1,-4',
  '10,1,-5'
]3557

以1开头的长度为3的路径有:
[
  '100,1,1,1,2',  '100,1,1,1,3',
  '100,1,1,1,4',  '100,1,1,1,0',
  '100,1,1,1,-1', '100,1,1,1,-2',
  '100,1,3,1,1',  '100,1,4,1,1',
  '100,1,4,1,2',  '100,1,0,1,1',
  '100,1,-2,1,1'
]3556

长度为2的路径[ '10,1,1' ] ,是判断是否文字的必要条件

 

开始进行二分查找,得出最快的长度13的路径


[
'10000001000011,1,1,11,-7,10,2,4,-8,1,3,6,-6,3,-3,10,-5,8,-4,2,-6,-1,-8,0,-7,10,-7'
] [
3557, 1771, 888, 444,
222, 111, 55, 28,
14, 7, 3, 2,
1
] 13

 

 

根据黑点1优先得到的路径

[["10111111111111111111111111111111111111111111111111111,1,1,1,0,2,0,3,0,4,0,5,0,2,2,-1,0,6,0,3,2,1,2,4,2,5,2,0,2,5,4,2,4,3,4,4,4,1,4,0,4,6,4,6,2,-1,4,-1,2,-2,0,7,0,0,6,5,6,4,6,1,6,2,6,3,6,6,6,-1,6,4,8,2,8,3,8,5,8,0,8,1,8,6,8,-1,8,-2,2,7,2,6,9,-1,9,-2,4,-3,4,-1,7,0,-1,7,9,-3,0",1,1]]

根据路径可识别优先,得出2^13的三叉树,分成有1、0以及不存在三种情况,不存在用x表示

 

 

 之后用三叉树数据识别文字,得到近似点[x,y,i],计算出相似度,判断是否文字

三、用上一步的公共路径,匹配图中所有点,得出一个匹配度n,按照n大小进行排序,先查找n大的点

假如当前点[0,0]值为0,下一个搜索点为[x1,y1],假如[x1,y1]的值为1,下一个搜索点为[x2,y2],不停的寻找到最后一个点,

得出识别结果[x,y,i](x,y为基准点,i为文字图指针),比较待识别的图和文字图的相似度,判断是否正确

四、继续识别下一个区域

 

posted @ 2023-01-13 12:34  巅峰蜗牛  阅读(127)  评论(0编辑  收藏  举报