一种指针式水表读数识别方法

文档序号:32617426发布日期:2022-12-20 21:45阅读:110来源:国知局
一种指针式水表读数识别方法

1.本技术涉及仪表读数识别领域,具体涉及一种指针式水表读数识别方法。


背景技术:

2.随着5g时代的到来,在智慧超市、智慧停车场、智慧水务等领域发展迅捷,但在智慧水务的领域中,指针式水表抄表方式仍采用传统人工方式抄表,这种方式实时性得不到保障,而且常常出现错抄、漏抄的情况。智慧水务对用水数据的实时性和准确性要求是十分严苛的,抄表员上门抄表方式已经满足不了当前的需求,用户自主抄表,拍照上传之后,系统需要后台对拍照的图片数据进行人工审核。但无论采用什么方法进行抄表,抄表误差都是无法避免的,由于误差的存在,尤其是较大的误差,处理不当,会造成严重的经济损失。
3.现阶段,对于指针式机械水表常见的处理方法多采用特征匹配算法,即利用待读水表图片的特征点和模板图像的特征点进行匹配,为了将水表表盘进行自动定位,运用聚类算法对特征点进行分类,再利用指针模型对待读图像进行子表盘指针识别。由于水表有多个不同位数的子表盘,因此在对图像进行读数识别时需要确定图像和实际水表中各个子表盘的对应位置关系,以确定各子表盘读数的计算位数,拍摄时水表表盘区域占据的整张图像的面积不定和特征匹配算法对特征提取能力较弱,很难得到较好的结果,如果为了识别出各子表盘的对应位置及位数而引入额外的图像特征提取及识别,不但会增加图像识别错误几率,同时也会增加计算量。
4.例如,中国专利申请号cn201711443684.2公开了一种水表抄表方法和系统,该方法包括:水表监控设备将第1个水表图像上传至服务器;服务器得出第1个水表图像中的指针位置信息和第1个水表图像的旋转角度;将第1个水表图像的指针位置信息发送至水表监控设备;水表监控设备对第i个水表图像进行图像识别,得出第i个水表图像中的指针位置信息;得出第i个水表图像相对于所述第1个水表图像的指针位置变化信息;将指针位置变化信息发送至所述服务器;服务器根据第1个水表图像的旋转角度和指针位置变化信息,得出第i个水表图像中各个指针对应的读数。由于水表有多个不同位数的子表盘,因此在对图像进行读数识别时需要确定各个子表盘的位数,该方案中,通过构建预设基准位置的水表图像,对待处理的水表图像预先确定的表盘角度标识进行识别并与处于预设基准位置的水表图像中的表盘角度标识的坐标和形状数据进行比对得到待处理水表图像的旋转角度,得出所述表盘角度标识的旋转角度,根据该旋转角度,确定水表个位指针、十位指针、百位指针、千位指针等对应的各子表盘及其数值。可见,该方案为了实现水表读数识别,不但要识别各子表盘以读取各子表盘数值,还要另外预设角度标识并进行比对来确定各个子表盘的计数位数,这样就增大了图像处理运算量,会带来时间成本以及可能的硬件成本,因此,在识别出各子表盘后,如何利用实际水表中各子表盘的固有位置关系,分析确定出原始图像和实际水表中各子表盘的对应关系以及相应的计数位数,以减少运算工作量,对于指针式水表读数识别具有重要意义。


技术实现要素:

5.为了快速高效识别确认指针式水表原始图像和实际水表中各子表盘的对应关系,避免引入额外的图像特征识别及运算量,本技术提供一种指针式水表读数识别方法,能够在识别出的各子表盘的基础上,通过对子表盘的位置关系进行分析,确定出各子表盘在原始图像和实际水表中的对应关系,并通过校正图像对各子表盘进行读数识别,从而减少了运算工作量,节约时间成本、提高了图像处理效率,同时也避免了因过多的特征识别所带来的图像识别错误以及识别失败风险。
6.本技术解决其技术问题所采用的技术方案是:一种指针式水表读数识别方法,包括步骤:
7.s1、获取水表原始图像并识别出原始图像中各子表盘的位置;
8.s2、将水表原始图像中各子表盘根据其在实际水表中的位置关系进行排序并建立对应关系;
9.s3、对水表原始图像进行透视变换得到校正图像;
10.s4、识别校正图像中各子表盘的读数,计算得到水表的读数。
11.在一种具体的实施方案中,所述步骤s2中,包括步骤:
12.s201、在原始图像上对识别出的各子表盘选定用于确定其位置的标识,并在原始图像上设立至少一个参考点和至少一个参考数轴;
13.s202、按照各子表盘的标识相对于参考数轴的位置关系,并根据其在参考数轴中的坐标值进行排序,建立各子表盘的标识的相对排序;
14.s203、基于相对排序,计算原始图像中各相邻子表盘的标识和参考点连线的夹角;
15.s204、基于实际表盘中各子表盘的位置关系,确定原始图像中构成夹角最值的子表盘和其在实际水表中的对应关系,从而建立各子表盘在原始图像和实际水表中的对应关系。
16.在一种具体的实施方案中,所述步骤s201中,各子表盘的标识在原始图像上的对应像素坐标(x
child-center-i
,y
child-center-i
),所述参考点的像素坐标(x
basis
,y
basis
)是以各子表盘标识的像素坐标值的均值构成:
17.其中i,n分别为子表盘编号和数量。
18.在一种具体的实施方案中,所述参考数轴通过参考点的像素坐标,并与像素坐标系的其中一个坐标轴平行。
19.在一种具体的实施方案中,所述步骤s203中,计算原始图像中各相邻子表盘的标识和参考点连线夹角α的方法为:
[0020][0021]
其中,相邻子表盘的标识的像素坐标分别为(x
child-center-k1
,y
child-center-k1
)、(x
child-center-k2
,y
child-center-k2
),相邻子表盘的标识和参考点连线的斜率分别为k1、k2。
[0022]
在一种具体的实施方案中,所述步骤s3中,由子表盘标识的几何位置参数与其在原始图像中对应的像素坐标建立透视变换矩阵,将原始图像经透视变换矩阵映射得到校正
图像。
[0023]
在一种具体的实施方案中,所述步骤s1中,将子表盘进行分类,得到子表盘定位数据集,利用对子表盘定位数据集训练完成的第一深度神经网络模型,对原始图像中各子表盘进行识别定位。
[0024]
在一种具体的实施方案中,所述步骤s4中,对子表盘的读数进行分类得到子表盘读数数据集,利用对子表盘读数数据集训练完成的第二深度神经网络模型,对校正图像中的子表盘进行读数识别。
[0025]
在一种具体的实施方案中,所述步骤s4中,对校正图像中的子表盘进行读数识别时:
[0026]
最后位数的子表盘指针位于相邻两个分度值之间无法区分时,选择该相邻两个分度值表征的较大读数;
[0027]
非最后位数的子表盘指针位于相邻两个分度值之间无法区分时,如果其下一位数的子表盘指针在量程的前半部分,则选择该相邻两个分度值中位于计数递增方向的分度值所表征的读数,如果其下一位数的子表盘指针在量程的后半部分,则选择该相邻两个分度值中位于计数递减方向的分度值所表征的读数。
[0028]
在一种具体的实施方案中,指针式水表读数识别方法还包括对水表读数的合理性判断:通过步骤s4中水表读数计算得到的当月用水量m,与之前k个月份用水量的均值m相比较,若m-m的绝对值不大于误差λe则判断为水表读数合理,其中:
[0029]
k为根据需要选定的历史参考月份数,mj为k个月份中的第j个月的用水量,λ为根据实际应用中水表读数合理性判断的漏判和误判情况设置的修正系数。
[0030]
本技术实施例的优点是:
[0031]
1、指针式水表读数识别方法利用实际水表中各子表盘的位置关系,通过对原始图像中识别出的各子表盘构建几何分析模型,确定出各子表盘在原始图像和实际水表中的对应关系,减少了运算工作量,避免了因过多的特征识别所带来的图像识别错误以及识别失败风险。
[0032]
2、指针式水表读数识别方法对原始图像中识别出的各子表盘构建的几何分析模型,可针对不同表盘的子表盘布局来设置参考点和参考数轴,建立各子表盘在原始图像和实际水表中的对应关系,实现各子表盘相对于其在实际水表中位置的绝对排序,从而拓展了本方法的适用范围。
[0033]
3、指针式水表读数识别方法利用子表盘的几何位置参数及其在原始图像中的像素坐标构建透视变换矩阵,可以实现将原始图像进行正投影得到校正图像,从而提高在校正图像中对子表盘的读数识别准确度。
[0034]
4、指针式水表读数识别方法提出的对子表盘指针位于相邻两个分度值之间无法区分时的解决方案,便于图像识别程序执行时的抉择和处理,提高了水表读数识别效率和准确度。
[0035]
5、指针式水表读数识别方法通过引入历史用水数据分析,并与本次识别出的水表
读数的用水量做对比,判断误差是否在合理范围内,以确定水表读数识别是否合理,从而进一步提高了该水表读数识别方法的可靠性。
附图说明
[0036]
图1为本技术的一种指针式水表识别读数方法中的工作流程图;
[0037]
图2为本技术的一种指针式水表识别读数方法中的指针式水表子表盘排序过程示意图;
[0038]
图3为本技术的一种指针式水表识别读数方法中的水表原始图像校正过程示意图;
[0039]
图4为本技术的一种指针式水表识别读数方法中的读数输出流程图;
[0040]
图5为本技术的一种指针式水表识别读数方法中的合理读数判断方法流程图。
具体实施方式
[0041]
本技术实施例通过提供一种指针式水表读数识别方法,能够识别出原始图像中水表的各子表盘,并通过对子表盘的位置关系进行分析,确定出各子表盘在原始图像和实际水表中的对应关系,通过校正图像对各子表盘进行读数识别,减少了运算工作量,节约时间成本、提高了图像处理效率,同时也避免了因过多的特征识别所带来的图像识别错误以及识别失败风险,总体思路如下:
[0042]
请参阅图1,一种指针式水表读数识别方法,包括步骤:
[0043]
s1、获取水表原始图像并识别出原始图像中各子表盘的位置;
[0044]
s2、将水表原始图像中各子表盘根据其在实际水表中的位置关系进行排序并建立对应关系;
[0045]
s3、对水表原始图像进行透视变换得到校正图像;
[0046]
s4、识别校正图像中各子表盘的读数,计算得到水表的读数。
[0047]
本方案通过识别出原始图像中各子表盘位置,并结合其实际位置关系和在原始图像中的位置关系,实现对原始图像中各子表盘的辨别,以确定其相应的计数位数,进一步由子表盘在不同坐标系中的位置关系实现对原始图像的透视变换,以得到便于图像识别的正投影校正图像,对校正图像中的子表盘进行读数识别,最终计算得到水表的读数。
[0048]
步骤s1中,将子表盘进行分类,得到子表盘定位数据集,利用对子表盘定位数据集训练完成的第一深度神经网络模型,对原始图像中各子表盘进行识别定位。具体地,在制作数据集时,以识别水表中各子表盘的位置为主,对于子表盘具有共同形状特征的水表,可将其所有的子表盘标注成同一个类别,得到只有一个分类的子表盘定位数据集,利用对该子表盘定位数据集训练好的第一深度神经网络模型,通过边框回归得到更多的正样本预测框、使用交并比损失函数使预测框宽高更符合实际的目标位置,运用非极大值抑制算法遍历完所有目标预测框,每次保留下来置信度最高的预测框就是最终返回到原始图像上的预测框,从而实现对原始图像中的指针式水表表盘上的各子表盘区域进行定位并保存相关信息。
[0049]
在一些实施例中,步骤s2中,可以具体包括以下子步骤:
[0050]
s201、在原始图像上对识别出的各子表盘选定用于确定其位置的标识,并在原始
图像上设立至少一个参考点和至少一个参考数轴;
[0051]
s202、按照各子表盘的标识相对于参考数轴的位置关系,并根据其在参考数轴中的坐标值进行排序,建立各子表盘的标识的相对排序;
[0052]
s203、基于相对排序,计算原始图像中各相邻子表盘的标识和参考点连线的夹角;
[0053]
s204、基于实际表盘中各子表盘的位置关系,确定原始图像中构成夹角最值的子表盘和其在实际水表中的对应关系,从而建立各子表盘在原始图像和实际水表中的对应关系。
[0054]
请参阅图2,由于在步骤s1中通过第一深度神经网络模型识别出各子表盘区域,为了进一步构建几何模型并进行相关运算,通过步骤s201在原始图像上对识别出的各子表盘选定用于确定其位置的标识,例如本例中水表具有8个子表盘,可将各子表盘的中心作为标识。为了实现对原始图像中各子表盘与其在实际水表中的位置相对应,可进一步完善几何分析模型,在原始图像上设立至少一个参考点和至少一个参考数轴,参考点和参考数轴的设立可以不同水表的子表盘具体布列形式作为依据,例如,本例中的8个子表盘环绕布列在水表表盘周围,因此为便于计算,在原始图像中确定参考点的像素坐标(x
basis
,y
basis
)由各子表盘标识的像素坐标(x
child-center-i
,y
child-center-i
)的坐标值均值构成,以便于进一步对各子表盘标识构建角度分析模型,具体为:
[0055]
其中i,n分别为子表盘编号和数量。
[0056]
对于参考数轴的设立,以不同水表的子表盘具体布列形式作为依据,通过参考数轴,可将各子表盘标识与参考数轴构建不同的几何位置关系,并进一步利用相关子表盘的标识在参考数轴上的坐标来进行排序,本例中8个子表盘环绕布列在水表表盘周围,可选择参考数轴通过参考点的像素坐标,并与像素坐标系的其中一个坐标轴平行,为便于计算,优选地,选择参考数轴与像素坐标系的横轴平行、同向且其原点位于像素坐标系的纵轴上,这样就使得相关子表盘的标识在参考数轴上的坐标与在像素坐标系横轴上的坐标相同;此外,由于本例中子表盘环列分布,因此该参考数轴的设立可使其两侧皆分布有子表盘标识,以避免在根据子表盘标识相对参考数轴的位置进行排序时,待排序子表盘的标识在参考数轴上具有相同的坐标而影响排序。
[0057]
具体地,本例中在原始图像中确定各子表盘的标识相对于参考数轴的位置关系时,按照y
child-center-i
和y
basis
值的大小分为上下两个位置部分,y
child-center-i
小于y
basis
的子表盘标识的像素坐标(x
child-center-i
,y
child-center-i
)存入列表list
child-center-top
中,对应的x
child-center-i
值存入列表listx
child-center-top
中;下部分位置的子表盘标识的像素坐标存入列表list
child-center-bottom
中,对应的x
child-center-i
值存入列表listx
child-center-bottom
中,将列表listx
child-center-bottom
从大到小、列表listx
child-center-top
从小到大排序,从而实现对相应的各子表盘的标识的相对排序。
[0058]
在各子表盘的标识的相对排序基础上,进一步构建几何分析模型,计算(x
basis
,y
basis
)和(x
child-center-i
,y
child-center-i
)连线的斜率,利用相邻连线的斜率以及反正切函数,按照相同的夹角计算方向,分别求得各相邻连线的夹角α,其计算方法可为:
[0059][0060]
其中,相邻子表盘的标识的像素坐标分别为(x
child-center-k1
,y
child-center-k1
)、(x
child-center-k2
,y
child-center-k2
),相邻子表盘的标识和参考点连线的斜率分别为k1、k2。
[0061]
遍历计算两两相邻的子表盘标识的像素坐标和参考点的连线夹角α,根据本例指针式水表的结构特征及构建的几何模型,原始图像中构成夹角最大值的子表盘对应实际水表中的最大计数位数子表盘和最小计数位数子表盘,从而可实现对原始图像中各子表盘的绝对排序,建立各子表盘在原始图像和实际水表中的对应关系,以便于根据其相应的计数位数进行读数识别计算。
[0062]
由于原始图像中往往拍摄视角不同,可能会造成图像识别困难或识别错误,因此本例进一步对原始图像进行透视变换以获取水表的正投影图像:在步骤s3中,由子表盘标识的几何位置参数与其在原始图像中对应的像素坐标建立透视变换矩阵,将原始图像经透视变换矩阵映射得到校正图像。具体地,可通过不少于4个子表盘标识在实际水表中的几何位置坐标,并结合其在原始图像中的像素坐标,求解透视变换矩阵m。例如在本例中,建立各子表盘在原始图像和实际水表中的对应关系,对原始图像中各子表盘进行绝对排序,以最大计数位数的千位子表盘为起始,按顺时针方向依次排序编号,选择排序第1、4、5、8的子表盘的对应标识a、d、c、b,根据其在实际水表中设定坐标系的几何坐标以及在原始图像中的像素坐标,求得相应的透视变换矩阵:
[0063][0064]
(x,y)为原始图像像素坐标,(x=x

/w

,y=y

/w

)为变换之后的校正图像像素坐标。透视变换矩阵公式如下:
[0065][0066]
将原始矩阵拆分为四个低阶矩阵,分别为:
[0067]
表示对指针式水表原始图像线性变换,即发挥旋转、缩放、剪切等作用。
[0068]
t2=[a
13 a
23
]
t
,用于产生指针式水表原始图像透视变换。
[0069]
t3=[a
31 a
32
],表示指针式水表原始图像平移。
[0070]
据此,指针式水表原始图像和透视变换后的校正图像中的对应点转换关系数学表达式如下:
[0071][0072][0073]
转换后,可得到如图3所示的正投影的指针式水表校正图像。
[0074]
本例中,由于指针式水表在读取子表盘读数时不需要保留精度,只需要取整,对指针式水表数据集来说,子表盘的读数共有十种类别:0、1、2、3、4、5、6、7、8、9,所以对校正图像中的子表盘进行读数识别时,可对子表盘的读数进行分类制作数据集,采用的标注原理为类别即读数,得到十种分类的子表盘读数数据集。利用对子表盘读数数据集训练完成的第二深度神经网络模型,对校正图像中的子表盘进行读数识别。对校正图像中的子表盘进行读数识别时,最后位数的子表盘指针位于相邻两个分度值之间无法区分时,选择该相邻两个分度值表征的较大读数;非最后位数的子表盘指针位于相邻两个分度值之间无法区分时,如果其下一位数的子表盘指针在量程的前半部分,则选择该相邻两个分度值中位于计数递增方向的分度值所表征的读数,如果其下一位数的子表盘指针在量程的后半部分,则选择该相邻两个分度值中位于计数递减方向的分度值所表征的读数。
[0075]
在本例中,指针水表n个子表盘的具体数量为8个,每个子表盘的分度值所表征的读数沿顺时针方向递增,基于获得的水表表盘原始图像的参考点坐标(x
basis
,y
basis
)和八个子表盘的标识坐标(x
child-center-i
,y
child-center-i
),将水表原始图像的8个子表盘以表示最大量程子表盘为首,按照同一个方向进行排序编号,排序顺序是以子表盘千位、百位、十位,个位等根据从大到小的读数位数进行子表盘编号,根据此位置顺序进行指针式水表的子表盘识别结果的输出。基于上述排序编号,对校正图像中各子表盘读数规则如图4所示:
[0076]
子表盘编号i如果大于子表盘的最大数量8则读数识别结束。
[0077]
子表盘编号i若不大于8,则判断i是否等于8,若不等于8,则判断第i个子表盘指针是否恰巧出现指向相邻两个读数的分度值之间亦即本例中子表盘的数字中间从而造成无法区分的情况。如果无法区分:若第i+1个子表盘指针指向0~5内,则选取该相邻两个读数右侧较大的读数,否则选取该相邻两个读数左侧较小的读数。如果能够区分,直接选择第i个子表盘读数。
[0078]
子表盘编号i若等于8,则需要判断第i个子表盘指针是否恰巧出现指向两个读数的分度值之间无法区分。如果能够区分,直接选择第i个子表盘读数;如果无法区分,则选择较大的读数。
[0079]
依上述读数规则可实现对各子表盘逐个进行读数识别。
[0080]
进一步地,为了校验水表读数识别是否合理,结合用户历史用水数据进行分析,对当月的指针式水表的读数进行合理性识别,甄别误差大的数据。请参阅图5,在检测水表图像之前,先对该用户水表的历史水表每月读数进行如下操作:获得用户在近几年内每月的用水量,对于不准确的用水量数据予以剔除,然后基于准确的用水量数据对用户的用水量进行均值的求解,通过步骤s4中水表读数计算得到的当月用水量m,m为之前k个月份的每月平均用水量,mj是之前k个月份中的第j个月的用水量,e为之前k个月份的每月用水量误差,则得到:
[0081][0082]
既然读数误差无法避免,只要误差控制在一定范围之内,即认为对当月的水表系统读数是合理的,若m-m的绝对值不大于误差λe则判断为水表读数合理,λ为根据实际应用中水表读数合理性判断的漏判和误判情况设置的修正系数,例如,在实际应用中,将修正系
数的初始值设为1时,当水表读数合理性判断的漏判率较高时,亦即将不合理的水表读数判为合理,此时可将修正系数校正为大于1的数值;当水表读数合理性判断的误判率较高时,亦即将合理的水表读数判为不合理,此时可将修正系数校正为小于1的数值。若m-m的绝对值小于或等于误差值λe,则说明当月的水表读数合理,可通过程序直接存入数据库并将结果返回给手机或是网页,并作为之后每个月的准确水表读数的历史数据;若m-m的绝对值大于误差值λe,则说明当月的水表读数不合理,将该可疑数据存入一个异常数据库,然后人工对异常数据库中的数据记录进行核对,修改异常数据,处理完毕,抄表员将读数输入到系统中,作为之后每个月的准确水表读数的历史数据并将结果返回给手机或是网页。
[0083]
综上,本技术一种指针式水表读数识别方法,可以快速高效识别确认指针式水表原始图像和实际水表中各子表盘的对应关系,避免引入额外的图像特征识别及运算量。本技术在识别出的各子表盘的基础上,通过对子表盘的位置关系进行分析,确定出各子表盘在原始图像和实际水表中的对应关系,并通过校正图像对各子表盘进行读数识别,从而减少了运算工作量,节约时间成本、提高了图像处理效率,同时也避免了因过多的特征识别所带来的图像识别错误以及识别失败风险。
[0084]
最后应说明的是:显然,上述实施例仅仅是为清楚地说明本技术所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本技术的保护范围之中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1