一种从曲线图到数据的全自动转换方法

文档序号:33381125发布日期:2023-03-08 05:46阅读:51来源:国知局
一种从曲线图到数据的全自动转换方法

1.本发明涉及数据转换技术领域,特别是涉及一种从曲线图到数据的全自动转换方法。


背景技术:

2.在生活中,曲线图数据是数据走向展示中常用的方法,常见于财务分析图、仿真软件、心电图、股票、学术文章中等,展示图片的目标是反映数据情况。由于图片的特性,对数据复用的难度大、需大量人力且具有机械重复性。传统算法易受到图片大小、背景色、背景有无网格、线条颜色、线条粗细等非数据因素的干扰以及坐标轴尺度多样的影响,操作过程复杂且精度较低。在面对需要从大量图片形式的图表数据中提取数值信息的任务中,效率较低,提取横纵坐标存在一定的难度。
3.以往的传统算法中,在曲线图表中提取待测点坐标主要操作分为以下5个步骤:(1)手动裁剪图片,用鼠标点击曲线图边框的四个角点,使图片中只剩下图表;(2)用鼠标点击坐标轴原点,x轴和y轴最大刻度的位置;(3)输入x轴和y轴的最大值;(4)点击待测点的位置;(5)计算并返回坐标。传统算法运算复杂且效率非常低下,需要多次使用鼠标标记特定点的位置和输入特定的数值来建立坐标系,所以用户点击位置的准确度会极大的影响最后的检测结果。另外,传统算法只能手动选择曲线上待测点的位置,不能根据输入的待测点的x轴的坐标值返回该点y轴的坐标值,这一功能缺陷极大地限制了用户在日常中的使用范围和交互舒适度。
4.基于上述考虑,本发明的目的在于提供一种从曲线图到数据的全自动转换方法,在尽可能的减少用户操作的同时保证高准确度和强鲁棒性。
5.前述背景技术知识旨在辅助理解本发明的发明构思及技术方案,其并不必然属于本专利申请的现有技术,在没有明确的证据表明上述内容在本专利申请的申请日前已公开的情况下,上述背景技术不应当用于评价本发明的技术创新性。


技术实现要素:

6.为了解决上述背景技术中提及的至少一种技术问题,本发明的目的是在于提供一种从曲线图到数据的全自动转换方法,它是一种基于深度学习和计算机视觉将绘制的曲线图逆向转化为数据的算法。它可以应用于大数据分析、人工智能、图表数据转换等领域。不同于需要人工繁琐地标记特定点、输入特定点坐标等一系列繁杂步骤的传统方法,本发明创新地将所有识别步骤全部自动化,这使得用户仅需要输入待测点的x坐标数值,即可以优于现有方法的极高准确率和极强鲁棒性获得输入待测点的y坐标数值。
7.为了实现上述目的,本发明提供如下技术方案。
8.一种从曲线图到数据的全自动转换方法,包括以下步骤:
9.s1,将曲线图转化为灰度图,并使用光学字符识别ocr识别出曲线图中的坐标轴数字及其位置信息;
10.s2,精确曲线图中坐标轴数字位置信息,并删除曲线图中的坐标轴数字;
11.s3,去除曲线图中网格背景的干扰;
12.s4,去除曲线图中网格线的干扰;
13.s5,预计算曲线图中曲线的亮度值;
14.s6,检测曲线图中的曲线边框;
15.s7,用大津法otsu去除曲线图中网格线的弱干扰;
16.s8,通过去除极小连通区域来剔除曲线图坐标轴中的刻度线;
17.s9,判断灰度图的计算结果是否符合坐标提取标准;
18.s10,如果灰度图的计算结果不符合坐标提取标准,则分别对红色通道r、绿色通道g、蓝色通道b做s3~s8步骤,并根据坐标提取标准选出最好的计算结果;
19.s11,如果网格线和曲线的亮度值在红色通道r、绿色通道g、蓝色通道b都相同,则以基于霍夫变换的直线检测方法去除曲线图中的网格线;
20.s12,检测曲线图中的曲线角点;
21.s13,曲线拟合重构;
22.s14,坐标系重建;
23.s15,计算待测点的坐标数值。
24.本发明方法主要通过使用计算机视觉库opencv、科学计算库numpy和深度学习框架paddle来实现。在深度学习中用于训练神经网络模型的图像数据被称为训练图像,此处的训练图像包括一张输入图像和一张输入图像中正确的目标图像。输入图像通过神经网络模型计算会产生一个输出图像,通过计算反映输出图像和目标图像之间差距的损失函数,更新神经网络的模型参数,实现模型参数调优和网络学习的目标,这就是神经网络模型的训练过程。
25.前述步骤s1具体包括:
26.将输入图像i转换成灰度图i
gray
,公式如下:
27.i
gray
(p)=0.2989
×
ir(p)+0.5870
×
ig(p)+0.1140
×
ib(p)
28.其中ir(p)、ig(p)和ib(p)分别表示图像i中像素p在红色通道r、绿色通道g和蓝色通道b上的亮度值,i
gray
(p)表示灰度化图像中像素p的亮度值。
29.再用双线性插值法将其分辨率改变成3000
×
2000,然后使用开源ocr模型paddleocr识别出曲线图中的坐标轴数字d
axis
及其位置信息p。
30.前述步骤s2具体包括:
31.分别取灰度图i
gray
和红色通道r、绿色通道g、蓝色通道b图片左上角像素的亮度值为曲线图边框外的背景色,为了提高坐标轴数字位置信息p的准确度,缩小坐标轴数字位置信息p的范围,在灰度图i
gray
中对识别出的每一个坐标轴数字位置信息p依次从上下左右四个方向向内遍历,直至检测到第一个与背景色不同的像素,并更新坐标轴数字位置信息p的范围。再根据这些坐标轴数字位置信息p的x坐标数值和y坐标数值是否在一定的范围内,此处使用的阈值为3,将识别出来的数字分为x坐标轴数字和y坐标轴数字。找到所有y坐标轴数字的坐标轴数字位置信息p的最右边,并分别将灰度图i
gray
和红色通道r、绿色通道g、蓝色通道b图片该处往左所有的像素填充为对应的背景色;找到所有x坐标轴的坐标轴数字位置信息p的最上边,并分别将灰度图i
gray
和红色通道r、绿色通道g、蓝色通道b图片该处往下
所有的像素填充为对应的背景色。
32.前述步骤s3具体包括:
33.统计整张灰度图i
gray
的亮度值,记录出现次数最多的两种亮度值b
max1
和b
max2
及其出现的次数,并将出现次数最多的两种亮度值所在像素都填充上步骤s2中的背景色。
34.前述步骤s4具体包括:
35.用canny边缘检测算子预处理步骤s3得到的结果,再进行极坐标变换,使用基于霍夫变换的直线检测方法检测出曲线图网格背景中的直线,并分类出水平线和垂直线,记录它们的位置,用于后续计算。h
l
表示网格线中水平线的左端,hr表示网格线中水平线的右端,hu表示网格线中水平线的上端,hd表示网格线中水平线的下端,v
l
表示网格线中垂直线的左端,vr表示网格线中垂直线的右端,vu表示网格线中垂直线的上端,vd表示网格线中垂直线的下端。检测的水平线和垂直线应该满足以下三个条件:(1)水平线和垂直线的长度至少为曲线图长度和宽度的10%;(2)在累加平面中至少需要有100个交点,累加平面是将输入图像中所有非零像素按投票贡献相加转化成输出图像中的点集;(3)最大允许间断是1个像素。
36.统计直线上所有像素的亮度值,记录出现次数最多的两种亮度值l
max1
和l
max2
及其出现次数n
max1
和n
max2
,并判断l
max1
是否为网格线中水平线和垂直线的亮度值,如果不是网格线中水平线和垂直线的亮度值,则将l
max1
赋值为网格线中的水平线出现次数最多的亮度值,公式如下:
[0037][0038]
其中h
max
表示网格线中的水平线出现次数最多的亮度值,表示网格线中的水平线出现次数最多的亮度值出现的次数。
[0039]
再将识别出的网格线上亮度值为l
max1
和l
max2
所在像素填充上步骤s2中的背景色即可。
[0040]
前述步骤s5具体包括:
[0041]
用步骤s4计算得到的结果截取曲线图垂直方向1/3到2/3处与原图覆盖,统计重叠区域的亮度值,出现频率最高的亮度值暂定为曲线的亮度值c
p

[0042]
前述步骤s6具体包括:
[0043]
对曲线图上下左右四个方向分别向内遍历,以下判断皆使用原点在左上角、x轴从左向右、y轴从上到下的opencv默认坐标系。
[0044]
左边框取曲线图垂直方向1/6到5/6处从左往右遍历直到检测到第一个与步骤s2中的背景色不一样的像素为止,并记录它们的x坐标数值,出现次数最多的x坐标数值记为b
lm1
,出现次数最多的亮度值为b
lc
;再向右遍历直到检测到第一个与b
lc
亮度值不一样的像素为止,并记录它们的x坐标数值,出现次数最多的x坐标数值记为b
lm2
。只有b
lm1
比b
lm2
向左偏移至少6个像素时,预测的左边框x坐标数值b
lt
被赋值为b
lm1
,否则被赋值为b
lm2
,以上判断公式如下:
[0045]
[0046]
左边框x坐标数值b
l
取预测的左边框x坐标数值b
lt
、步骤s4中检测出所有水平线的最左端h
l
、垂直线最左端v
l
的x坐标数值最小值,即b
l
=min{b
lt
,min(h
l
),min(v
l
)}。
[0047]
上边框取曲线图水平方向1/6到5/6处从上往下遍历直到检测到第一个与步骤s2中的背景色不一样的像素为止,并记录它们的y坐标数值,出现次数最多的y坐标数值记为b
um1
,出现次数最多的亮度值为b
uc
;再向下遍历直到检测到第一个与b
uc
亮度值不一样的像素为止,并记录它们的y坐标数值,出现次数最多的y坐标数值记为b
um2
。只有b
um1
比b
um2
向上偏移至少6个像素时,预测的上边框y坐标数值b
ut
被赋值为b
um1
,否则被赋值为b
um2
,以上判断公式如下:
[0048][0049]
上边框y坐标数值bu取预测的上边框y坐标数值b
ut
、步骤s4中检测出所有水平线的最上端hu、垂直线最上端vu的y坐标数值最小值,即bu=min{b
ut
,min(hu),min(vu)}。
[0050]
右边框取曲线图垂直方向1/6到5/6处从右往左遍历直到检测到第一个与步骤s2中的背景色不一样的像素为止,并记录它们的x坐标数值,出现次数最多的x坐标数值记为b
rm1
,出现次数最多的亮度值为b
rc
;再向左遍历直到检测到第一个与b
rc
亮度值不一样的像素为止,并记录它们的x坐标数值,出现次数最多的x坐标数值记为b
rm2
。只有b
rm1
比b
rm2
向上偏移至少6个像素时,预测的右边框x坐标数值b
rt
被赋值为b
rm1
,否则被赋值为b
rm2
,以上判断公式如下:
[0051][0052]
右边框x坐标数值br取预测的右边框x坐标数值b
rt
、步骤s4中检测出所有水平线的最右端hr、垂直线最右端vr的x坐标数值最大值,即br=max{b
rt
,max(hr),max(vr)}。
[0053]
下边框取曲线图水平方向1/6到5/6处从下往上遍历直到检测到第一个与步骤s2中的背景色不一样的像素为止,并记录它们的y坐标数值,出现次数最多的y坐标数值记为b
dm1
,出现次数最多的亮度值为b
dc
;再向上遍历直到检测到第一个与b
dc
亮度值不一样的像素为止,并记录它们的y坐标数值,出现次数最多的y坐标数值记为b
dm2
。只有b
dm1
比b
dm2
向下偏移至少6个像素时,预测的下边框y坐标数值b
dt
被赋值为b
dm1
,否则被赋值为b
dm2
,以上判断公式如下:
[0054][0055]
下边框y坐标数值bd取预测的下边框y坐标数值b
dt
、步骤s4中检测出所有水平线的最下端hd、垂直线最下端vd的y坐标数值最大值,即bd=max{b
dt
,max(hd),max(vd)}。
[0056]
之后将曲线图边框外除了暂定的曲线亮度值c
p
剩下的所有亮度值所在像素都填充上步骤s2中的背景色。
[0057]
前述步骤s7具体包括:
[0058]
用大津法otsu对步骤s6的结果计算得到一个阈值th,将曲线图中亮度值小于th的像素的亮度值设置为0,将曲线图中亮度值大于或等于th的像素的亮度值设置为255,以此来去除步骤s6处理后曲线图中网格线的弱干扰。
[0059]
前述步骤s8具体包括:
[0060]
通过去除极小连通区域来剔除曲线图坐标轴上部分残留的刻度线;经过统计,在大部分图表中,曲线的面积占整幅曲线图的0.5%~15%,为了最大程度地避免提取的曲线中存在像素不连续的情况,将最小阈值下调到原来的1/50,即为0.01%;计算出步骤s7得到的结果中每一个连通区域的面积,并将小于曲线图总面积0.01%的连通区域所在像素都填充上步骤s2中的背景色。
[0061]
前述步骤s9具体包括:
[0062]
前述步骤s3~s8都是对灰度图i
gray
进行计算,这里先判断灰度图i
gray
的计算结果是否符合坐标提取标准,坐标提取标准的判断分为以下三个模块,即曲线图的网格线是否被去除干净、曲线图的边框是否去除干净、曲线图中是否有较为完整的曲线。
[0063]
(1)检测曲线图的网格线是否被去除干净,选择曲线图水平方向1/3到2/3的部分统计每一列从上往下的所有像素里亮度值变化了多少次,即有多少个间断点b
p
;如果一列上的间断点b
p
出现次数大于15次,那么说明该列可能包含离散的网格线;如果有大于10列都被认定为该列可能包含离散的网格线,那么认定该图的计算结果包含离散的网格线。
[0064]
(2)检测曲线图的边框是否去除干净,先从曲线图左右两边垂直方向的1/3到2/3处向内遍历,记录最先与步骤s2中的背景色不同的像素的x坐标数值,左边和右边出现次数最多的x坐标数值的个数分别为n
bl
和n
br
,检测左右边框是否去除干净的函数公式如下:
[0065][0066][0067]
其中1表示边框去除干净,0表示边框未去除干净,h表示曲线图的宽度。
[0068]
从曲线图上下两边水平方向的1/3到2/3处向内遍历,记下最先与步骤s2中的背景色不同的像素的y坐标数值,上边和下边出现次数最多的y坐标数值的个数分别为n
bu
和n
bd
,检测上下边框是否去除干净的函数公式如下:
[0069][0070][0071]
其中1表示边框去除干净,0表示边框未去除干净,w表示曲线图的长度。
[0072]
(3)检测曲线图中是否有较为完整的曲线,从曲线的最左端m
l
向最右端mr的每一列像素依次从上往下遍历,如果该列中所有像素的亮度值都一样,那么说明曲线在该列断开;
从曲线最左端到最右端断开的列数为nb,判断是否有较为完整的曲线的函数j3(
·
)公式如下:
[0073][0074]
其中1表示曲线连续,0表示曲线不连续。
[0075]
前述步骤s10具体包括:
[0076]
如果判断灰度图的计算结果i
gray
不符合坐标提取标准,那么将对曲线图的红色通道r、绿色通道g、蓝色通道b图片分别做上述步骤s3~s8,选择函数会选择灰度图i
gray
和红色通道r、绿色通道g、蓝色通道b图片中最好的计算结果。选择函数会自动剔除有剩余边框的曲线图,检测方法与步骤s9中检测曲线图的边框是否去除干净的做法相同,并在剩下的曲线图中选择间断点最少的曲线图m。
[0077]
前述步骤s11具体包括:
[0078]
如果网格线和曲线的亮度值在红色通道r、绿色通道g、蓝色通道b图片中都相同,则用基于霍夫变换的直线检测方法为基础,检测的水平线和垂直线应该满足以下三个条件:(1)水平线和垂直线的长度至少为曲线图长度和宽度的10%;(2)在累加平面中至少需要有100个交点,累加平面是将输入图像中所有非零像素按投票贡献相加转化成输出图像中的点集;(3)最大允许间断是5个像素。
[0079]
选择函数返回的间断点最少的曲线图m左上角像素的亮度值为m的背景色,将m检测出的水平线和垂直线所在像素填充为m的背景色。
[0080]
前述步骤s12具体包括:
[0081]
对选择函数返回的间断点最少的曲线图m检测曲线角点:m左上角像素的亮度值为m的背景色,从曲线的最左端m
l
向最右端mr的每一列像素依次从上往下遍历,直到找到第一个与m的背景色不同的像素位置,记为其中x表示从曲线的最左端m
l
向最右端mr的第x列;从曲线的最左端m
l
向最右端mr的每一列像素依次从下往上遍历,直到找到第一个与m的背景色不同的像素位置,记为其中x表示从曲线的最左端m
l
向最右端mr的第x列。先判断该段曲线呈上升趋势还是下降趋势,基于斜率的曲线趋势判断指标f
ud1
如下:
[0082][0083]
其中表示曲线的最左端m
l
向最右端mr的第x列的f
ud1
的值,1表示该段曲线呈上升趋势,0表示该段曲线呈下降趋势,0.5表示该段曲线情况复杂,当前未知。
[0084]
如果f
ud1
返回的值为0.5,则用基于动量的曲线趋势判断指标f
ud2
进一步判断:
[0085][0086]
其中表示曲线的最左端m
l
向最右端mr的第x列的f
ud2
的值,1表示该段曲线呈
上升趋势,0表示该段曲线呈下降趋势,-1表示该段曲线情况复杂,该点无效。
[0087]
判断曲线的最左端m
l
向最右端mr的第x列曲线的趋势呈上升还是下降的最终指标取决于和如果为1或者0,则否则否则再从和取一个值作为角点c
or
的y坐标数值,公式如下:
[0088][0089]
其中ci表示曲线的最左端m
l
向最右端mr的第i个角点c
or
的y坐标数值,曲线的最左端m
l
向最右端mr的第i个角点c
or
的x坐标数值为c
xi
,c
xi
=x,x表示从曲线的最左端m
l
向最右端mr的第x列,表示曲线的最左端m
l
向最右端mr的第x列的f
ud
的值,表示曲线的最左端m
l
向最右端mr的第x+1列的f
ud
的值。
[0090]
最右端的和只与其左边的和比较,符合以下公式:
[0091][0092]
其中表示曲线的最左端m
l
向最右端mr的最右端的f
ud
的值,1表示该段曲线呈上升趋势,0表示该段曲线呈下降趋势,-1表示该段曲线情况复杂,该点无效。
[0093]
前述步骤s13具体包括:
[0094]
用间断点最少的曲线图m和角点c
or
的坐标数值来计算待测点m的y坐标数值,有以下三种方法:
[0095]
(1)直接函数拟合重构曲线
[0096]
通过步骤s12得到的角点c
or
坐标数值,并用构建的函数来拟合重构曲线,更精确地计算待测点m的坐标数值;
[0097]
wa=x
cr-x
cl
[0098]
ha=y
dn-y
up
[0099][0100][0101]
其中wa表示待测点m的左右两个角点的x坐标数值差,x
cr
表示待测点m右角点的x坐标数值,x
cl
表示待测点m左角点的x坐标数值,ha表示待测点m所在的那一列曲线的最下方像素和最上方像素的y坐标数值差,y
dn
表示待测点m所在的那一列曲线上最下方像素的y坐标数值,y
up
表示待测点m所在的那一列曲线上最上方像素的y坐标数值,y
mid
表示待测点m的左右两个角点的y坐标数值的平均值,x
dmax
表示该段曲线上所有的像素中距离左右角点所在直线最远的像素的x坐标数值,x
per
表示以左右角点为界的曲线上所有像素中距离左右角点所在直线最远的像素的x坐标数值与左角点的x坐标数值差在左右两个角点x坐标数值差中的占比。
[0102]
曲线斜率加速指标y
per
公式如下:
[0103][0104]
其中表示以左右角点为界的一段曲线上所有像素中距离左右角点所在直线最远的像素所在的那一列曲线上最下方像素的y坐标数值,y
dmax
表示以左右角点为界的一段曲线上所有像素中距离左右角点所在直线最远的像素的y坐标数值,表示以左右角点为界的一段曲线上所有像素中距离左右角点所在直线最远的像素所在的那一列曲线上最上方像素的y坐标数值,表示曲线的最左端m
l
向最右端mr的第x列的f
ud
的值。
[0105]
曲线左右角点平均点斜率加速指标公式如下:
[0106][0107]
其中表示以左右角点为界的一段曲线上所有像素中距离左右角点所在直线最远的像素所在的那一列曲线上最下方像素的y坐标数值,y
mid
表示待测点m左右两个角点y坐标数值的平均值,表示以左右角点为界的一段曲线上所有像素中距离左右角点所在直线最远的像素所在的那一列曲线上最上方像素的y坐标数值,表示曲线的最左端m
l
向最右端mr的第x列的f
ud
的值。
[0108]
拟合函数f1(
·
)公式如下:
[0109][0110]
其中x
per
表示以左右角点为界的一段曲线上所有像素中距离左右角点所在直线最远的像素的x坐标数值与左角点的x坐标数值差在左右两个角点x坐标数值差中的占比,y
per
为曲线斜率加速指标,为曲线左右角点平均点斜率加速指标,表示取a∈{10,11,

,30}中令,30}中令最小的表示取b∈{1,1.1,

,30}中令最小的b,
×
表示乘法。
[0111]
待测点m的y坐标数值ym公式如下:
[0112][0113]
其中y
dn
表示待测点m所在的那一列曲线上最下方像素的y坐标数值,y
up
表示待测点m所在的那一列曲线上最上方像素的y坐标数值,f1(
·
)表示拟合函数,x
per
表示以左右角点为界的一段曲线上所有像素中距离左右角点所在直线最远的像素的x坐标数值与左角点的x坐标数值差在左右两个角点x坐标数值差中的占比,ha表示待测点m所在的那一列曲线的最下方像素和最上方像素的y坐标数值差,
×
表示乘法。
[0114]
(2)基于二分法的拟合重构曲线
[0115]
计算以左右角点为界的每一段曲线上所有像素到两个角点所在直线的距离。如果该段曲线呈上升趋势,那么求得位于曲线下边界上距离最远的像素的坐标数值;如果该段曲线呈下降趋势,那么求得位于曲线上边界上距离最远的像素的坐标数值。并将该拟合点坐标数值添加到两个角点之间,组成一个新的点数列。之后每一次都在前一次点数列的基础上,在两点之间新增一个拟合点,直至两个相邻拟合点的x坐标数值差小于2个像素。
[0116]
之后根据点数列的坐标数值求得待测点m的y坐标数值ym,公式如下:
[0117][0118]
其中ym为待测点m的y坐标数值,y
pl
为待测点m左拟合点的y坐标数值,y
pr
为待测点m右拟合点的y坐标数值,x
pr
为待测点m右拟合点的x坐标数值,x
pl
为待测点m左拟合点的x坐标数值,xm为待测点m的x坐标数值,
×
表示乘法。
[0119]
(3)基于傅里叶变换的拟合重构曲线
[0120]
计算出以待测点m左右角点为界的一段曲线上每一个离散拟合点mj的y坐标数值yj,其中j表示待测点m的左右两个角点间从左到右的第j列,公式如下:
[0121][0122][0123][0124][0125]
其中表示离散拟合点mj左右两个角点的x坐标数值差,表示离散拟合点mj右角点的x坐标数值,表示离散拟合点mj左角点的x坐标数值,表示离散拟合点mj所在的那一列曲线的最下方像素和最上方像素的y坐标数值差,表示离散拟合点mj所在的那一列曲线上最下方像素的y坐标数值,表示离散拟合点mj所在的那一列曲线上最上方像素的y坐标数值,表示离散拟合点mj的x坐标数值与离散拟合点mj左角点的x坐标数值差,
xj表示离散拟合点mj的x坐标数值,表示离散拟合点mj左角点的y坐标数值,表示离散拟合点mj右角点的y坐标数值,
×
表示乘法。
[0126]
这样就得到了一段曲线上离散拟合点的x坐标数值和y坐标数值,再将这段曲线上离散拟合点的x坐标数值和y坐标数值进行离散傅里叶变换,得到一段连续的曲线函数f
fft
;将待测点m的x坐标数值代入曲线函数f
fft
中得到待测点m的y坐标数值ym。
[0127]
前述步骤s14具体包括:
[0128]
用步骤s2中的方法将识别出来的坐标轴数字d
axis
分为x坐标轴数字和y坐标轴数字,x坐标轴数字的位置信息p为x坐标数值,y坐标轴数字的位置信息p为y坐标数值。对y坐标轴数字中相邻数字的位置间隔求平均得到y坐标数值平均差gi,并对y坐标轴数字中相邻数字的绝对差求平均得到y坐标读数平均差gn。
[0129]
前述步骤s15具体包括:
[0130]
如果待测点m的y坐标数值ym位于ocr识别出来的两个相邻y坐标轴数字va、vb的y坐标数值ya和yb之间,且ya》yb,则待测点m的y坐标读数vm为:
[0131][0132]
如果待测点m的y坐标数值ym不在任何ocr识别出来的两个相邻y坐标轴数字的y坐标数值之间,那么就需要用到y坐标数值平均差gi和y坐标读数平均差gn来插值。所有ocr识别出来的y坐标轴数字的y坐标数值的最大值是y
max
,最大y坐标轴数字是v
max
,当待测点m的y坐标数值ym大于或等于y
max
时,则待测点m的y坐标读数vm为:
[0133][0134]
其中gi为y坐标数值平均差,gn为y坐标读数平均差。
[0135]
所有ocr识别出来的y坐标轴数字的y坐标数值的最小值是y
min
,最小y坐标轴数字是v
min
,当待测点m的y坐标数值ym小于或等于y
min
时,则待测点m的y坐标读数vm为:
[0136][0137]
其中gi为y坐标数值平均差,gn为y坐标读数平均差。
[0138]
在符合本领域常识的基础上,上述各优选条件,可以相互组合,得到具体实施方式。
[0139]
本发明的有益效果为:
[0140]
本发明的目的是在于提供一种全自动的图表转换方法,它是一种基于深度学习和计算机视觉将绘制的曲线图逆向转化为数据的算法。它可以用于曲线图数据抽样、人工智能和大数据等领域。本发明创新地提出了自动提取掩膜图、函数拟合重构曲线、角点间二分拟合重构曲线和角点间傅里叶变换拟合重构曲线,不同于需要人工繁琐地标记特定点、输入特定点坐标等一系列繁杂步骤的传统方法,本发明创新地将所有识别步骤全部自动化,这使得用户仅需要输入待测点的x坐标数值,即可以优于现有方法的极高准确率和极强鲁棒性获得输入待测点的y坐标数值。本发明创新性地设计曲线拟合方法,更符合实际情况。本发明基于深度学习框架和计算机视觉设计,可以自动计算出待测点的坐标,兼具运行速
度快、运行的智能性和准确性等优势,有较大的应用价值和市场前景。
[0141]
本发明为实现上述目的而采用了上述技术方案,弥补了现有技术的不足,设计合理,操作方便。
附图说明
[0142]
旨在为使得本领域技术人员更加迅速明确的了解本技术的上述和/或其他目的、特征、优点与实例,提供了部分附图,应当指出的是,构成本技术的说明书附图、示意性实施例及其说明用来提供对本技术的进一步理解,并不构成对本技术的不当限定;应当理解的是,本技术附图2~10旨在表明从曲线图到数据的全自动转换方法中部分独立步骤的效果,并非对单独一张附图从曲线图到数据的转换展示。
[0143]
图1为本发明方案的算法流程图;
[0144]
图2为曲线图的灰度图;
[0145]
图3为去除曲线图中的坐标轴数字的效果对比图(图3a是去除坐标轴数字前,图3b是去除坐标轴数字后);
[0146]
图4为去除曲线图中的网格背景的效果对比图(图4a是去除背景前,图4b是去除背景后);
[0147]
图5为去除曲线图中的网格线的效果对比图(图5a是去除网格线前,图5b是去除网格线后);
[0148]
图6为去除曲线图中的边框的效果对比图(图6a是去除边框前,图6b是去除边框后);
[0149]
图7为大津法otsu的效果对比图(图7a是使用大津法otsu前,图7b是使用大津法otsu后);
[0150]
图8为去除曲线图中的极小连通区域的效果对比图(图8a是去除极小连通区域前,图8b是去除极小连通区域后);
[0151]
图9为角点检测的结果可视化图;
[0152]
图10为对曲线四等分的五个点进行数据转换的结果可视化图。
具体实施方式
[0153]
本领域技术人员可以借鉴本文内容,适当替换和/或改动工艺参数实现,然而特别需要指出的是,所有类似的替换和/或改动对本领域技术人员来说是显而易见的,它们都被视为包括在本发明。本发明所述内容已经通过较佳实例进行了描述,相关人员明显能在不脱离本发明内容、精神和范围内对本文所述的内容进行改动或适当变更与组合,来实现和应用本发明技术。
[0154]
应该指出,以下详细说明都是示例性的,旨在对本技术提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本技术所属技术领域的普通技术人员通常理解的相同含义。
[0155]
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制本技术的技术方案。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明
存在特征、步骤、操作、器件、组件和/或它们的组合。
[0156]
以下详细描述本发明。
[0157]
实施例1:
[0158]
如图1所示,提供一种从曲线图到数据的全自动转换方法,具体包括以下步骤。
[0159]
(1)如图2所示,将输入图像i转换成灰度图i
gray
,公式如下:
[0160]igray
(p)=0.2989
×
ir(p)+0.5870
×
ig(p)+0.1140
×
ib(p)
[0161]
其中ir(p)、ig(p)和ib(p)分别表示图像i中像素p在红色通道r、绿色通道g和蓝色通道b上的亮度值,i
gray
(p)表示灰度化图像中像素p的亮度值。
[0162]
再用双线性插值法将其分辨率改变成3000
×
2000,然后使用开源ocr模型paddleocr识别出曲线图中的坐标轴数字d
axis
及其位置信息p。
[0163]
(2)如图3所示,分别取灰度图i
gray
和红色通道r、绿色通道g、蓝色通道b图片左上角像素的亮度值为曲线图边框外的背景色,为了提高坐标轴数字位置信息p的准确度,缩小坐标轴数字位置信息p的范围,在灰度图i
gray
中对识别出的每一个坐标轴数字位置信息p依次从上下左右四个方向向内遍历,直至检测到第一个与背景色不同的像素,并更新坐标轴数字位置信息p的范围。再根据这些坐标轴数字位置信息p的x坐标数值和y坐标数值是否在一定的范围内,此处使用的阈值为3,将识别出来的数字分为x坐标轴数字和y坐标轴数字。找到所有y坐标轴数字的坐标轴数字位置信息p的最右边,并分别将灰度图i
gray
和红色通道r、绿色通道g、蓝色通道b图片该处往左所有的像素填充为对应的背景色;找到所有x坐标轴的坐标轴数字位置信息p的最上边,并分别将灰度图i
gray
和红色通道r、绿色通道g、蓝色通道b图片该处往下所有的像素填充为对应的背景色。
[0164]
(3)统计整张灰度图i
gray
的亮度值,记录出现次数最多的两种亮度值b
max1
和b
max2
及其出现的次数,并将出现次数最多的两种亮度值所在像素都填充上步骤(2)中的背景色,如图4所示。
[0165]
(4)用canny边缘检测算子预处理步骤(3)得到的结果,再进行极坐标变换,使用基于霍夫变换的直线检测方法检测出曲线图网格背景中的直线,并分类出水平线和垂直线,记录它们的位置,用于后续计算。h
l
表示网格线中水平线的左端,hr表示网格线中水平线的右端,hu表示网格线中水平线的上端,hd表示网格线中水平线的下端,v
l
表示网格线中垂直线的左端,vr表示网格线中垂直线的右端,vu表示网格线中垂直线的上端,vd表示网格线中垂直线的下端。检测的水平线和垂直线应该满足以下三个条件:(1)水平线和垂直线的长度至少为曲线图长度和宽度的10%;(2)在累加平面中至少需要有100个交点,累加平面是将输入图像中所有非零像素按投票贡献相加转化成输出图像中的点集;(3)最大允许间断是1个像素。
[0166]
统计直线上所有像素的亮度值,记录出现次数最多的两种亮度值l
max1
和l
max2
及其出现次数n
max1
和n
max2
,并判断l
max1
是否为网格线中水平线和垂直线的亮度值,如果不是网格线中水平线和垂直线的亮度值,则将l
max1
赋值为网格线中的水平线出现次数最多的亮度值,公式如下:
[0167]
[0168]
其中h
max
表示网格线中的水平线出现次数最多的亮度值,表示网格线中的水平线出现次数最多的亮度值出现的次数。
[0169]
再将识别出的网格线上亮度值为l
max1
和l
max2
所在像素填充上步骤(2)中的背景色即可,如图5所示。
[0170]
(5)用步骤(4)计算得到的结果截取曲线图垂直方向1/3到2/3处与原图覆盖,统计重叠区域的亮度值,出现频率最高的亮度值暂定为曲线的亮度值c
p

[0171]
(6)对曲线图上下左右四个方向分别向内遍历,以下判断皆使用原点在左上角、x轴从左向右、y轴从上到下的opencv默认坐标系。
[0172]
(6.1)左边框,左边框取曲线图垂直方向1/6到5/6处从左往右遍历直到检测到第一个与步骤(2)中的背景色不一样的像素为止,并记录它们的x坐标数值,出现次数最多的x坐标数值记为b
lm1
,出现次数最多的亮度值为b
lc
;再向右遍历直到检测到第一个与b
lc
亮度值不一样的像素为止,并记录它们的x坐标数值,出现次数最多的x坐标数值记为b
lm2
。只有b
lm1
比b
lm2
向左偏移至少6个像素时,预测的左边框x坐标数值b
lt
被赋值为b
lm1
,否则被赋值为b
lm2
,以上判断方法符合以下公式:
[0173][0174]
左边框x坐标数值b
l
取预测的左边框x坐标数值b
lt
、步骤(4)中检测出所有水平线的最左端h
l
、垂直线最左端v
l
的x坐标数值最小值,即b
l
=min{b
lt
,min(h
l
),min(v
l
)}。
[0175]
(6.2)上边框,上边框取曲线图水平方向1/6到5/6处从上往下遍历直到检测到第一个与步骤(2)中的背景色不一样的像素为止,并记录它们的y坐标数值,出现次数最多的y坐标数值记为b
um1
,出现次数最多的亮度值为b
uc
;再向下遍历直到检测到第一个与b
uc
亮度值不一样的像素为止,并记录它们的y坐标数值,出现次数最多的y坐标数值记为b
um2
。只有b
um1
比b
um2
向上偏移至少6个像素时,预测的上边框y坐标数值b
ut
被赋值为b
um1
,否则被赋值为b
um2
,以上判断方法符合以下公式:
[0176][0177]
上边框y坐标数值bu取预测的上边框y坐标数值b
ut
、步骤(4)中检测出所有水平线的最上端hu、垂直线最上端vu的y坐标数值最小值,即bu=min{b
ut
,min(hu),min(vu)}。
[0178]
(6.3)右边框,右边框取曲线图垂直方向1/6到5/6处从右往左遍历直到检测到第一个与步骤(2)中的背景色不一样的像素为止,并记录它们的x坐标数值,出现次数最多的x坐标数值记为b
rm1
,出现次数最多的亮度值为b
rc
;再向左遍历直到检测到第一个与b
rc
亮度值不一样的像素为止,并记录它们的x坐标数值,出现次数最多的x坐标数值记为b
rm2
。只有b
rm1
比b
rm2
向上偏移至少6个像素时,预测的右边框x坐标数值b
rt
被赋值为b
rm1
,否则被赋值为b
rm2
,以上判断方法符合以下公式:
[0179][0180]
右边框x坐标数值br取预测的右边框x坐标数值b
rt
、步骤(4)中检测出所有水平线的最右端hr、垂直线最右端vr的x坐标数值最大值,即br=max{b
rt
,max(hr),max(vr)}。
[0181]
(6.4)下边框,下边框取曲线图水平方向1/6到5/6处从下往上遍历直到检测到第
一个与步骤(2)中的背景色不一样的像素为止,并记录它们的y坐标数值,出现次数最多的y坐标数值记为b
dm1
,出现次数最多的亮度值为b
dc
;再向上遍历直到检测到第一个与b
dc
亮度值不一样的像素为止,并记录它们的y坐标数值,出现次数最多的y坐标数值记为b
dm2
。只有b
dm1
比b
dm2
向下偏移至少6个像素时,预测的下边框y坐标数值b
dt
被赋值为b
dm1
,否则被赋值为b
dm2
,以上判断方法符合以下公式:
[0182][0183]
下边框y坐标数值bd取预测的下边框y坐标数值b
dt
、步骤(4)中检测出所有水平线的最下端hd、垂直线最下端vd的y坐标数值最大值,即bd=max{b
dt
,max(hd),max(vd)}。
[0184]
之后将曲线图边框外除了暂定的曲线亮度值c
p
剩下的所有亮度值所在像素都填充上步骤(2)中的背景色,如图6所示。
[0185]
(7)如图7所示,用大津法otsu对步骤(6)的结果计算得到一个阈值th,将曲线图中亮度值小于th的像素的亮度值设置为0,将曲线图中亮度值大于或等于th的像素的亮度值设置为255,以此来去除步骤(6)处理后曲线图中网格线的弱干扰。
[0186]
(8)通过去除极小连通区域来剔除曲线图坐标轴上部分残留的刻度线;经过统计,在大部分图表中,曲线的面积占整幅曲线图的0.5%~15%,为了最大程度地避免提取的曲线中存在像素不连续的情况,将最小阈值下调到原来的1/50,即为0.01%;计算出步骤(7)得到的结果中每一个连通区域的面积,并将小于曲线图总面积0.01%的连通区域所在像素都填充上步骤(2)中的背景色,如图8所示。
[0187]
(9)前述步骤(3)~(8)都是对灰度图i
gray
进行计算,这里先判断灰度图i
gray
的计算结果是否符合坐标提取标准,坐标提取标准的判断分为以下三个模块,即曲线图的网格线是否被去除干净、曲线图的边框是否去除干净、曲线图中是否有较为完整的曲线。
[0188]
(9.1)检测曲线图的网格线是否被去除干净,选择曲线图水平方向1/3到2/3的部分统计每一列从上往下的所有像素里亮度值变化了多少次,即有多少个间断点b
p
;如果一列上的间断点b
p
出现次数大于15次,那么说明该列可能包含离散的网格线;如果有大于10列都被认定为该列可能包含离散的网格线,那么认定该图的计算结果包含离散的网格线。
[0189]
(9.2)检测曲线图的边框是否去除干净,先从曲线图左右两边垂直方向的1/3到2/3处向内遍历,记录最先与步骤(2)中的背景色不同的像素的x坐标数值,左边和右边出现次数最多的x坐标数值的个数分别为n
bl
和n
br
,检测左右边框是否去除干净的函数公式如下:
[0190][0191][0192]
其中1表示边框去除干净,0表示边框未去除干净,h表示曲线图的宽度。
[0193]
从曲线图上下两边水平方向的1/3到2/3处向内遍历,记下最先与步骤(2)中的背景色不同的像素的y坐标数值,上边和下边出现次数最多的y坐标数值的个数分别为n
bu
和n
bd
,检测上下边框是否去除干净的函数公式如下:
[0194][0195][0196]
其中1表示边框去除干净,0表示边框未去除干净,w表示曲线图的长度。
[0197]
(9.3)检测曲线图中是否有较为完整的曲线,从曲线的最左端m
l
向最右端mr的每一列像素依次从上往下遍历,如果该列中所有像素的亮度值都一样,那么说明曲线在该列断开。从曲线最左端到最右端断开的列数为nb,判断是否有较为完整的曲线的函数j3(
·
)公式如下:
[0198][0199]
其中1表示曲线连续,0表示曲线不连续。
[0200]
(10)如果判断灰度图i
gray
的计算结果不符合坐标提取标准,那么将对曲线图的红色通道r、绿色通道g、蓝色通道b图片分别做上述步骤(3)~(8),选择函数会选择灰度图i
gray
和红色通道r、绿色通道g、蓝色通道b图片中最好的计算结果:选择函数会自动剔除有剩余边框的曲线图,检测方法与步骤(9)中检测曲线图的边框是否去除干净的做法相同,并在剩下的曲线图中选择间断点最少的曲线图m。
[0201]
(11)如果网格线和曲线的亮度值在红色通道r、绿色通道g、蓝色通道b图片中都相同,则用基于霍夫变换的直线检测方法为基础,检测的水平线和垂直线应该满足以下三个条件:(1)水平线和垂直线的长度至少为曲线图长度和宽度的10%;(2)在累加平面中至少需要有100个交点,累加平面是将输入图像中所有非零像素按投票贡献相加转化成输出图像中的点集;(3)最大允许间断是5个像素。
[0202]
选择函数返回的间断点最少的曲线图m左上角像素的亮度值为m的背景色,将m检测出的水平线和垂直线所在像素填充为m的背景色。
[0203]
(12)如图9所示,其中圆圈的中心为检测出的角点所在的位置。对选择函数返回的间断点最少的曲线图m检测曲线角点:m左上角像素的亮度值为m的背景色,从曲线的最左端m
l
向最右端mr的每一列像素依次从上往下遍历,直到找到第一个与m的背景色不同的像素位置,记为其中x表示从曲线的最左端m
l
向最右端mr的第x列;从曲线的最左端m
l
向最右端mr的每一列像素依次从下往上遍历,直到找到第一个与m的背景色不同的像素位置,记为其中x表示从曲线的最左端m
l
向最右端mr的第x列。先判断该段曲线呈上升趋势还是下降趋势,基于斜率的曲线趋势判断指标f
ud1
如下:
[0204][0205]
其中表示曲线的最左端m
l
向最右端mr的第x列的f
ud1
的值,1表示该段曲线呈上升趋势,0表示该段曲线呈下降趋势,0.5表示该段曲线情况复杂,当前未知。
[0206]
如果f
ud1
返回的值为0.5,则用基于动量的曲线趋势判断指标f
ud2
进一步判断:
[0207][0208]
其中表示曲线的最左端m
l
向最右端mr的第x列的f
ud2
的值,1表示该段曲线呈上升趋势,0表示该段曲线呈下降趋势,-1表示该段曲线情况复杂,该点无效。
[0209]
判断曲线的最左端m
l
向最右端mr的第x列曲线的趋势呈上升还是下降的最终指标取决于和如果为1或者0,则否则否则再从和取一个值作为角点c
or
的y坐标数值,公式如下:
[0210][0211]
其中ci表示曲线的最左端m
l
向最右端mr的第i个角点c
or
的y坐标数值,曲线的最左端m
l
向最右端mr的第i个角点c
or
的x坐标数值为c
xi
,c
xi
=x,x表示从曲线的最左端m
l
向最右端mr的第x列,表示曲线的最左端m
l
向最右端mr的第x列的f
ud
的值,表示曲线的最左端m
l
向最右端mr的第x+1列的f
ud
的值。
[0212]
最右端的和只与其左边的和比较,判断方法如下:
[0213][0214]
其中表示曲线的最左端m
l
向最右端mr的最右端的f
ud
的值,1表示该段曲线呈上升趋势,0表示该段曲线呈下降趋势,-1表示该段曲线情况复杂,该点无效。
[0215]
(13)用间断点最少的曲线图m和角点c
or
的坐标数值来计算待测点m的y坐标数值,有以下三种方法:
[0216]
(13.1)直接函数拟合重构曲线
[0217]
通过步骤(12)得到的角点c
or
坐标数值,并用构建的函数来拟合重构曲线,更精确地计算待测点m的坐标数值;
[0218]
wa=x
cr-x
cl
[0219]
ha=y
dn-y
up
[0220]
[0221][0222]
其中wa表示待测点m的左右两个角点的x坐标数值差,x
cr
表示待测点m右角点的x坐标数值,x
cl
表示待测点m左角点的x坐标数值,ha表示待测点m所在的那一列曲线的最下方像素和最上方像素的y坐标数值差,y
dn
表示待测点m所在的那一列曲线上最下方像素的y坐标数值,y
up
表示待测点m所在的那一列曲线上最上方像素的y坐标数值,y
mid
表示待测点m的左右两个角点的y坐标数值的平均值,x
dmax
表示该段曲线上所有的像素中距离左右角点所在直线最远的像素的x坐标数值,x
per
表示以左右角点为界的曲线上所有像素中距离左右角点所在直线最远的像素的x坐标数值与左角点的x坐标数值差在左右两个角点x坐标数值差中的占比。
[0223]
曲线斜率加速指标y
per
符合以下公式:
[0224][0225]
其中表示以左右角点为界的一段曲线上所有像素中距离左右角点所在直线最远的像素所在的那一列曲线上最下方像素的y坐标数值,y
dmax
表示以左右角点为界的一段曲线上所有像素中距离左右角点所在直线最远的像素的y坐标数值,表示以左右角点为界的一段曲线上所有像素中距离左右角点所在直线最远的像素所在的那一列曲线上最上方像素的y坐标数值,表示曲线的最左端m
l
向最右端mr的第x列的f
ud
的值。
[0226]
曲线左右角点平均点斜率加速指标符合以下公式:
[0227][0228]
其中表示以左右角点为界的一段曲线上所有像素中距离左右角点所在直线最远的像素所在的那一列曲线上最下方像素的y坐标数值,y
mid
表示待测点m左右两个角点y坐标数值的平均值,表示以左右角点为界的一段曲线上所有像素中距离左右角点所在直线最远的像素所在的那一列曲线上最上方像素的y坐标数值,表示曲线的最左端m
l
向最右端mr的第x列的f
ud
的值。
[0229]
拟合函数f1(
·
)符合以下公式:
[0230][0231]
其中x
per
表示以左右角点为界的一段曲线上所有像素中距离左右角点所在直线最
远的像素的x坐标数值与左角点的x坐标数值差在左右两个角点x坐标数值差中的占比,y
per
为曲线斜率加速指标,为曲线左右角点平均点斜率加速指标,表示取a∈{10,11,

,30}中令,30}中令最小的表示取b∈{1,1.1,

,30}中令最小的b,
×
表示乘法。
[0232]
待测点m的y坐标数值ym公式如下:
[0233][0234]
其中y
dn
表示待测点m所在的那一列曲线上最下方像素的y坐标数值,y
up
表示待测点m所在的那一列曲线上最上方像素的y坐标数值,f1(
·
)表示拟合函数,x
per
表示以左右角点为界的一段曲线上所有像素中距离左右角点所在直线最远的像素的x坐标数值与左角点的x坐标数值差在左右两个角点x坐标数值差中的占比,ha表示待测点m所在的那一列曲线的最下方像素和最上方像素的y坐标数值差,
×
表示乘法。
[0235]
(13.2)基于二分法的拟合重构曲线
[0236]
计算以左右角点为界的每一段曲线上所有像素到两个角点所在直线的距离;如果该段曲线呈上升趋势,那么求得位于曲线下边界上距离最远的像素的坐标数值;如果该段曲线呈下降趋势,那么求得位于曲线上边界上距离最远的像素的坐标数值;并将该拟合点坐标数值添加到两个角点之间,组成一个新的点数列;之后每一次都在前一次点数列的基础上,在两点之间新增一个拟合点,直至两个相邻拟合点的x坐标数值差小于2个像素。
[0237]
之后根据点数列的坐标数值求得待测点m的y坐标数值ym,公式如下:
[0238][0239]
其中ym为待测点m的y坐标数值,y
pl
为待测点m左拟合点的y坐标数值,y
pr
为待测点m右拟合点的y坐标数值,x
pr
为待测点m右拟合点的x坐标数值,x
pl
为待测点m左拟合点的x坐标数值,xm为待测点m的x坐标数值,
×
表示乘法。
[0240]
(13.3)基于傅里叶变换的拟合重构曲线
[0241]
计算出以待测点m左右角点为界的一段曲线上每一个离散拟合点mj的y坐标数值yj,其中j表示待测点m的左右两个角点间从左到右的第j列,公式如下:
[0242][0243][0244]
[0245][0246]
其中表示离散拟合点mj左右两个角点的x坐标数值差,表示离散拟合点mj右角点的x坐标数值,表示离散拟合点mj左角点的x坐标数值,表示离散拟合点mj所在的那一列曲线的最下方像素和最上方像素的y坐标数值差,表示离散拟合点mj所在的那一列曲线上最下方像素的y坐标数值,表示离散拟合点mj所在的那一列曲线上最上方像素的y坐标数值,表示离散拟合点mj的x坐标数值与离散拟合点mj左角点的x坐标数值差,xj表示离散拟合点mj的x坐标数值,表示离散拟合点mj左角点的y坐标数值,表示离散拟合点mj右角点的y坐标数值,
×
表示乘法;
[0247]
这样就得到了一段曲线上离散拟合点的x坐标数值和y坐标数值,再将这段曲线上离散拟合点的x坐标数值和y坐标数值进行离散傅里叶变换,得到一段连续的曲线函数f
fft
;将待测点m的x坐标数值代入曲线函数f
fft
中得到待测点m的y坐标数值ym。
[0248]
(14)用步骤(2)中的方法将识别出来的坐标轴数字d
axis
分为x坐标轴数字和y坐标轴数字,x坐标轴数字的位置信息p为x坐标数值,y坐标轴数字的位置信息p为y坐标数值。对y坐标轴数字中相邻数字的位置间隔求平均得到y坐标数值平均差gi,并对y坐标轴数字中相邻数字的绝对差求平均得到y坐标读数平均差gn。
[0249]
(15)如果待测点m的y坐标数值ym位于ocr识别出来的两个相邻y坐标轴数字va、vb的y坐标数值ya和yb之间,且ya》yb,则待测点m的y坐标读数vm为:
[0250][0251]
如果待测点m的y坐标数值ym不在任何ocr识别出来的两个相邻y坐标轴数字的y坐标数值之间,那么就需要用到y坐标数值平均差gi和y坐标读数平均差gn来插值。所有ocr识别出来的y坐标轴数字的y坐标数值的最大值是y
max
,最大y坐标轴数字是v
max
,当待测点m的y坐标数值ym大于或等于y
max
时,则待测点m的y坐标读数vm为:
[0252][0253]
其中gi为y坐标数值平均差,gn为y坐标读数平均差。
[0254]
所有ocr识别出来的y坐标轴数字的y坐标数值的最小值是y
min
,最小y坐标轴数字是v
min
,当待测点m的y坐标数值ym小于或等于y
min
时,则待测点m的y坐标读数vm为:
[0255][0256]
其中gi为y坐标数值平均差,gn为y坐标读数平均差。
[0257]
图10所示为对曲线四等分的五个点进行数据转换的结果可视化图,其中圆圈的中
心标记出了这五个点的y坐标读数在图中的位置。不难看出,曲线图中这五个待测点的y坐标读数精确度较高,具体是36.38471178、49.4403444、41.54806492、14.23611111、40.14357054。y
《q,k》
表示在第q张曲线图上对曲线四等分的五个点中第k个点的y坐标读数计算结果,gt
《q,k》
表示在第q张曲线图上对曲线四等分的五个点中第k个点的y坐标读数真实值,a
cc
表示在1000张曲线图上对曲线四等分的五个点的平均准确率:
[0258][0259]
在1000张曲线图上进行从曲线图到数据全自动转换,本发明达到了99.6%的转换准确率,拥有较高的自动化程度和鲁棒性,尽可能减少用户操作,可以自动计算出待测点的坐标数值,兼具运行速度快、运行的智能性和准确性等优势,有较大的应用价值和市场前景。
[0260]
上述实施例中的常规技术为本领域技术人员所知晓的现有技术,故在此不再详细赘述。
[0261]
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
[0262]
尽管对本发明已作出了详细的说明并引证了一些具体实施例,但是对本领域熟练技术人员来说,只要不离开本发明的精神和范围可作各种变化或修正是显然的。
[0263]
以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
[0264]
本发明未尽事宜均为公知技术。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1