一种基于模板匹配的变电站多表盘多指针识别方法

文档序号:31040721发布日期:2022-08-06 04:14阅读:93来源:国知局
一种基于模板匹配的变电站多表盘多指针识别方法

1.本发明涉及图像处理技术领域,特别涉及一种基于模板匹配的变电站多表盘多指针识别方法。


背景技术:

2.计算机视觉可以被广泛地应用在安保行业、网页端的图像和视频处理、游戏交互、现代化工厂和产品等某些方面的质检工作。常见的采集设备信息的方法有基于物联网传感器的信息采集和基于计算机视觉的信息采集。因为后者有不用进入设备内部、方便安装和成本低等优势,因此基于计算机视觉的信息采集被工业界认可。指针仪表识别是计算机视觉在工业领域的一个经典应用。
3.现有对指针仪表识别的研究多集中在单表盘单指针识别、多表盘单指针识别,以及单表盘多指针识别,但是,对于多表盘多指针的识别研究相对较少。多表盘多指针仪表的人工读数具有成本高和精度低等问题。
4.因此,在现有指针仪表识别技术的基础上,如何提高多表盘多指针仪表表盘定位的准确度,自动精准识别出多表盘多指针仪表的读数,成为本领域技术人员亟需解决的问题。


技术实现要素:

5.鉴于上述问题,本发明提出了一种至少解决上述部分技术问题的基于模板匹配的变电站多表盘多指针识别方法,该方法可自动精准识别出变电站内多表盘多指针仪表的读数。
6.本发明实施例提供一种基于模板匹配的变电站多表盘多指针识别方法,包括如下步骤:
7.s1、获取待读数的变电站内的表盘图像,根据预设规则在所述表盘图像内建立直角坐标系;对所述表盘图像进行中值滤波;
8.s2、将中值滤波后的所述表盘图像进行模板匹配,根据模板匹配结果,划分所述表盘图像中的各个表盘区域;
9.s3、分别提取各个所述表盘区域内的兴趣区域;通过hsv颜色模型提取各个所述兴趣区域内的指针,得到提取后的图像;
10.s4、通过霍夫变换检测各个所述提取后的图像中的直线,获取各个所述兴趣区域内的指针的坐标;根据所述指针的坐标,识别各个所述表盘区域内的指针的读数。
11.进一步地,所述步骤s2包括:
12.s21、将预设模板在中值滤波后的所述表盘图像内移动,进行标准差值平方和匹配,获得匹配结果的最大值和最小值;获取所述最小值所对应的最小坐标和最大坐标;
13.s22、根据所述最小坐标和最大坐标,定位所述预设模板所对应的特征点在所述表盘图像中的位置;
14.s23、根据所述特征点在所述表盘图像中的位置,划分所述表盘图像中的各个表盘区域。
15.进一步地,所述步骤s3包括:
16.s31、分别提取各个所述表盘区域内的兴趣区域,获取各个表盘的边框,将所述边框内部置为同一标识色;
17.s32、通过hsv颜色模型提取各个所述兴趣区域内的指针;通过闭运算消除非指针部分,并填补所述指针内的孔洞,得到提取后的图像。
18.进一步地,所述步骤s3还包括:
19.s33、对所述提取后的图像中的指针区域进行细化,得到图像的骨架。
20.进一步地,所述闭运算包括:
21.采用膨胀操作使各个所述兴趣区域内的指针图像通过膨胀核沿边界向外扩张,在所述指针图像的边缘添加新像素;
22.采用腐蚀操作使各个所述膨胀操作后的指针图像通过腐蚀核沿边界向内收缩;所述腐蚀核为由n个像素组成的像素块;所述像素块包含一个核心;所述腐蚀核在所述指针图像的边缘移动,消除与所述腐蚀核重合且没有越过所述核心的像素点。
23.进一步地,所述步骤s4包括:
24.s41、通过霍夫变换,确定霍夫坐标系的直线与笛卡尔坐标系的点之间的映射关系,判断各个所述提取后的图像中的点是否构成直线,提取构成的直线;
25.s42、根据所述直线,确定各个所述兴趣区域内的指针的坐标;
26.s43、根据各个所述指针的坐标,依次计算所述指针的斜率、反正切值和角度,识别各个所述表盘区域内的指针的读数。
27.进一步地,通过如下公式依次计算所述指针的斜率、反正切值和角度,识别各个所述表盘区域内的指针的读数:
[0028][0029]
上式中,k表示指针两端点坐标构成的直线的斜率;(x1,y1)和(x2,y2)分别表示指针的两端坐标;r表示k的反正切值;d表示指针相对于表盘零刻度旋转的角度;a表示从表盘的最右侧刻度逆时针旋转到表盘零刻度时的旋转角度;%表示取余;max表示表盘量程的最大值;num表示最终读数;s表示表盘区域内指针的最大可旋转角度。
[0030]
进一步地,如果所述表盘区域内指针的最大可旋转角度小于180度,则所述指针的读数即为所述最终读数。
[0031]
进一步地,如果所述表盘区域内指针的最大可旋转角度大于或等于180度;
[0032]
当所述表盘区域内指针的指向在0-180度区域内,所述指针的读数即为所述最终
读数;
[0033]
当所述表盘区域内指针的指向在0-180度区域外,所述指针的读数为所述最终读数与补全最大量程值的一半相加;所述补全最大量程值为将所述表盘区域内指针的最大可旋转角度增加到360度时,此时表盘量程的最大值。
[0034]
进一步地,当同一所述表盘区域内存在多个指针时,根据所述表盘区域内指针的坐标,分别计算各个指针的长度,根据所述各个指针的长度,区分所述表盘区域内的不同指针。
[0035]
本发明实施例提供的上述技术方案的有益效果至少包括:
[0036]
本发明实施例提供的一种基于模板匹配的变电站多表盘多指针识别方法,包括:获取待读数的变电站内的表盘图像,根据预设规则在所述表盘图像内建立直角坐标系;对表盘图像进行中值滤波;将中值滤波后的表盘图像进行模板匹配,根据模板匹配结果,划分表盘图像中的各个表盘区域;分别提取各个表盘区域内的兴趣区域;通过hsv颜色模型提取各个兴趣区域内的指针,得到提取后的图像;通过霍夫变换检测各个提取后的图像中的直线,获取各个兴趣区域内的指针的坐标;根据指针的坐标,识别各个表盘区域内的指针的读数。该方法可自动识别出变电站内多表盘多指针仪表的读数,显著提高了多表盘多指针仪表指针识别的准确度。
[0037]
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
[0038]
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
[0039]
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0040]
图1为本发明实施例提供的基于模板匹配的变电站多表盘多指针识别方法流程图;
[0041]
图2为本发明实施例提供的流程图;
[0042]
图3为本发明实施例提供的图像采集的原图;
[0043]
图4为本发明实施例提供的半圆弧模板在图中的位置示意图;
[0044]
图5为本发明实施例提供的上指针区域在图中的位置示意图;
[0045]
图6为本发明实施例提供的下指针区域在图中的位置示意图;
[0046]
图7为本发明实施例提供的通过hsv提取出的上指针区域图;
[0047]
图8为本发明实施例提供的闭运算操作后生成的上指针区域图像;
[0048]
图9为本发明实施例提供的细化操作后的上指针区域图像;
[0049]
图10为本发明实施例提供的下指针兴趣区域提取结果示意图;
[0050]
图11为本发明实施例提供的闭运算前的下指针区域图像;
[0051]
图12为本发明实施例提供的闭运算后的下指针区域图像;
[0052]
图13为本发明实施例提供的孔洞填充后的下指针区域图像;
[0053]
图14为本发明实施例提供的细化操作后的下指针区域图像;
[0054]
图15为本发明实施例提供的下指针区域hough变换结果示意图;
[0055]
图16为本发明实施例提供的所需要识别的表盘结构示意图。
具体实施方式
[0056]
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0057]
本发明实施例提供一种基于模板匹配的变电站多表盘多指针识别方法,参照图1所示,包括如下步骤:
[0058]
s1、获取待读数的变电站内的表盘图像,根据预设规则在所述表盘图像内建立直角坐标系;对表盘图像进行中值滤波;
[0059]
s2、将中值滤波后的表盘图像进行模板匹配,根据模板匹配结果,划分表盘图像中的各个表盘区域;
[0060]
s3、分别提取各个表盘区域内的兴趣区域;通过hsv颜色模型提取各个兴趣区域内的指针,得到提取后的图像;
[0061]
s4、通过霍夫变换检测各个提取后的图像中的直线,获取各个兴趣区域内的指针的坐标;根据指针的坐标,识别各个表盘区域内的指针的读数。
[0062]
本实施例,可以通过对获取的变电站内表盘图像进行处理,自动精准识别出变电站内多表盘多指针仪表的读数,显著提高了多表盘多指针仪表表盘定位的准确度。
[0063]
下面通过一个具体的实施例对本基于模板匹配的变电站多表盘多指针识别方法进行详细说明:
[0064]
参照图2所示,为整个方法的流程图。待识别的表盘图像一般由摄像头进行拍摄,参照图3所示,为采集的原图,这张图像在计算中保存的格式是png。在这张图像中,有两个表盘,需要分别读取上面表盘的指针(为淡黄色指针) 的读数和下面表盘中两个指针的读数。
[0065]
首先,对获取的表盘图像进行预处理,在尽量保存原始图像信息的情况下,对图像进行平滑处理,去除图像内的噪声,降低细节层次信息。实现图像平滑处理最常见的工具是滤波器。通过调节滤波器的参数,可以控制图像的平滑程度。可以通过中值滤波器将所有图像中的像素值进行排序,把最中间的像素值取出来,赋值给中心像素。滤波核的边长越长,处理后的图像越模糊。
[0066]
其次,通过模板匹配选取定位点,划分表盘图像中的各个表盘区域,将多表盘进行划分,并获取各个表盘内指针的读数。模板是被查找的目标图像(即特征点),模板匹配就是查找模板在表盘图像中的哪个位置。本获取的表盘图像中的特征是上面指针区域的半圆弧,以它作为预设模板,半圆弧模板在图中的位置如图4所示。
[0067]
在模板匹配的过程中,预设模板会在表盘图像中移动。预设模板会与重叠区域内的各个像素进行对比,最后将结果保存到数组中。在本实施例中,模板匹配用到的方法是cv2.tm_sqdiff_normed,它是标准差值平方和匹配,也叫标准平方差匹配。匹配程度越高,计算结果越小。完全匹配的结果为0。模板匹配后,获得匹配结果的最大值和最小值,以及最
小值所对应的半圆弧的最小坐标和最大坐标。本实施例一共有三个坐标系:原始表盘图片坐标系,上指针区域坐标系和下指针区域坐标系。它们的原点都是各自区域的左上角,向右为x轴正方向,向下为y轴正方向。模板匹配时的坐标系是根据原始表盘图片创建的,此时坐标原点是原始图片的左上角。模板匹配后得到两个兴趣区域,即上指针区域和下指针区域。把上指针区域和下指针区域分别扣出来作为新图片,坐标原点分别是两个新图片的左上角。把兴趣区域抠出来单独操作可防止背景对提取指针操作的影响。虽然分别建立了三个坐标系,但对最终读数结果无影响。
[0068]
在上一步模板匹配中,得到了半圆弧的最小坐标和最大坐标,计算最大坐标和最小坐标的差得到半圆弧的长和宽。根据半圆弧这个特征的最小坐标和长宽,就可以定位上指针区域和下指针区域。上指针区域在图中的位置如图5所示,下指针区域在图中的位置如图6所示。
[0069]
获取上指针区域内指针的读数:
[0070]
在上指针区域(上表盘的指针区域)中,有绿色、黄色和红色三条标准线,指针的取值区间是[0,3],指针的颜色是淡黄色,可以通过调整hsv的取值范围来提取淡黄色区域,把淡黄色指针区域单独抠出来。hsv(hue,saturation, value)是根据颜色的直观特性由a.r.smith在1978年创建的一种颜色表达方法。hsv色彩空间是基于色调、饱和度和亮度所构建的。其中,色调(h)指的是光的颜色,色调的取值区间是[0,180]。例如,红色的色调是0,黄色的色调是30,绿色的色调是60,蓝色的色调是120。饱和度(s)指的是色彩的深浅。饱和度的取值区间是[0,255]。例如,当饱和度是0时,图像将转化为灰度图像。亮度(v)指的是光的明暗。亮度的取值区间和饱和度一样,都是[0, 255]。亮度值越大,图像就越亮。例如,当亮度是0时,图像就是纯黑的。通过调整hsv的取值范围,最终得到了上指针区域中的淡黄色指针,如图7所示。
[0071]
通过闭运算消除指针图像内的细节,以方便后续精准读取读数。可通过腐蚀和膨胀这两种操作清除或强化图像中的细节。闭运算就是将指针图像先进行膨胀操作,后进行腐蚀操作。膨胀操作是让指针图像沿着自己的边界向外扩张,通过核(膨胀核)来操作,当核在图像边缘移动时,会在图像的边缘添加新的像素。指针图像在膨胀操作后,可以放大一些外部的细节。核的行列数越大,处理后的效果就越粗糙,反之,核的行列数越小,处理后的效果就越精细。
[0072]
腐蚀操作和膨胀操作相反,腐蚀操作能使指针图像沿着自己的边界向内收缩,通过核(腐蚀核)来实现收缩,核是由n个像素组成的像素块,像素块包含一个核心(核心通常处于中心位置)。核会在指针图像的边缘移动,将图像边缘与核重合但又没有越过核心的像素点都消除。指针图像经过腐蚀操作后,可以清除掉一些外部的细节。核的行列数越大,处理后的效果就越粗糙,反之,核的行列数越小,处理后的效果就越精细。
[0073]
在上一步通过hsv颜色模型得到指针图像后,由于黄色标准线和淡黄色指针颜色相近,会出现误提取现象。这就需要闭运算来进行调整。参照图8所示,为闭运算操作后生成的指针图像,相比于闭运算前的指针图像,经过闭运算操作,消除了非指针部分并填补了指针内的孔洞。
[0074]
由于得到的指针区域比较粗,需要用skimage库morphology子模块中的骨架提取函数skeletonize()对得到的指针区域进行细化,得到图像的骨架,从而提高读数的精度。
对闭运算后的指针图像进行细化指二值图像的骨架化,经过一层层的剥离,从指针图像中去掉一些点,但仍要保持图像原来的形状,直到得到图像的骨架,也就是图像的中轴。细化操作后如图9所示。
[0075]
通过霍夫变换(hough变换)检测细化操作后指针图像中的直线,获取指针的坐标。霍夫变换是一种特征检测,通过算法识别图像的特征,从而判断出图像中的特殊形状,通过霍夫坐标系的直线与笛卡尔坐标系的点之间的映射关系来判断图像中的点是否构成直线。通过hough变换检测图像中的直线,得到直线的坐标,也即指针的坐标。
[0076]
经过hough变换,得到指针的坐标(x1,y1),(x2,y2)。其中,坐标系的原点位于图像的左上角,横轴为x轴,取向右的方向为x轴正方向,纵轴为y轴,取向下的方向为y轴正方向。计算斜率k、反正切值r和角度d,最终就可以得到指针的读数num,具体公式如下:
[0077][0078]
式(1)中,x1、y1、x2、y2是hough变换得到的坐标,k等于y2和y1的差除以x2和x1的差,k表示指针两端点坐标构成的直线的斜率。式(2)中,r是k的反正切函数值,表示k的反正切值。式(3)中,d等于r乘以180除以π,d表示指针相对于表盘零刻度旋转的角度;a表示从表盘的最右侧刻度逆时针旋转到表盘零刻度时的旋转角度;%表示取余,目的是让d的范围保持在0-180之间; s表示表盘区域内指针的最大可旋转角度,此时取180。如果计算出d是负数,需要将d加180。本实施例中,当上区域淡黄色指针指向1.5-3的区间时,d会出现负值,此时需要把d加180再赋值给d。式(4)中,num表示最终读数(指针的读数),max表示表盘量程的最大值,在上指针区域中,max是3。num等于max乘以d除以180,最终num的读数就是指针的读数。
[0079]
可选地,如果表盘区域内指针的最大可旋转角度小于180度,则指针的读数即为所述最终读数。
[0080]
如果表盘区域内指针的最大可旋转角度大于或等于180度,读数发生冲突,需要判断指针的位置;当表盘区域内指针的指向在0-180度区域内,指针的读数即为最终读数;当表盘区域内指针的指向在0-180度区域外,指针的读数为最终读数与补全最大量程值的一半相加;补全最大量程值为将表盘区域内指针的最大可旋转角度增加到360度时,此时表盘量程的最大值,即补全360度表盘时,表盘能达到的最大读数。
[0081]
具体地,如果上指针表盘的最大可旋转角度为360度,最大量程是6,计算num的分母需调整为360;同时需判断指针中心是在表盘上方还是下方,如果在表盘上方,则读数不变;如果在表盘下方,则最终读数需要加3。
[0082]
获取下指针区域内指针的读数:
[0083]
参照图6所示,在下指针区域(下表盘的指针区域)中,有一长一短两个指针,这个仪表的取值范围是[0,10]。对下指针区域检测所有轮廓,找到面积最大的轮廓,也就是仪表
(表盘)的边框,将它的内部置为白色。这样就提取出了兴趣区域,减少了仪表边框对后续操作的影响,兴趣区域提取结果如图10 所示。
[0084]
通过闭运算清除掉指针外的一些细节,比如刻度、数字和汉字。最终只保留了指针区域。闭运算前如图11所示,闭运算后如图12所示。
[0085]
经过闭运算操作后,指针内部和表盘的中心位置处有孔洞,为了避免这些孔洞对后续操作的影响,采用孔洞填充填补这些孔洞,孔洞填充结果如图13 所示。下指针区域的细化和上指针区域一样,目的是得到图像的骨架,提升读数精度。细化操作后如图14所示。
[0086]
下指针区域的hough变换和上指针区域类似。经过hough变换,得到两条线,即两个指针,hough变换结果如图15所示。
[0087]
下指针区域的读数与上指针区域的读数类似,先计算式(1)、式(2)和式(3),因为下指针表盘的零刻度是在正上方,而上指针表盘的零刻度是在左侧,当将零刻度从左侧转换到正上方时,需要逆时针旋转90度(从表盘的最右侧刻度逆时针旋转到当前表盘零刻度时的旋转角度),所以d需要加上90再赋值给d。然后计算式(4),因为下指针表盘量程的最大值是10,所以将式(4)中的max修改为10。且下指针的最大可旋转角度是360度,所以将分母的180修改为360。然而在360度指针中,角度相同的指针它们的读数一样。例如,当下指针读数是2和7时,它们的角度是一样的,此时需要来判断它是属于2还是7。通过确定下表盘内指针的中点相对于表盘中轴线的位置,来判断指针的中点属于左边还是右边。如果指针的中点属于右边(位于中轴线的右侧),则将最后的num 加5(表盘量程的最大值的一半)赋值给num;如果指针的中点属于左边(位于中轴线的左侧),则num不变。最终得到的num就是指针的读数。
[0088]
通过计算各个指针的长度,区分下表盘区域内的不同指针:
[0089][0090]
其中,式(5)是两点的距离公式,dst等于根号下x2和x1差的平方加y2和y1差的平方。(x1,y1),(x2,y2)分别表示指针的两端坐标。计算这两条直线(代表两条指针)的长度和读数。如果长度大于设定的阈值,将标签置为“long”,否则,将标签置为“short”,将读数和标签存放数组中。标签为“long”的读数对应长指针的读数,标签为“short”的读数对应短指针的读数。
[0091]
可选地,当识别如图16所示的表盘指针时,根据公式(1)-(4),此时a为 225,从表盘的最右侧刻度逆时针旋转到表盘零刻度时需要旋转225度。max 为6,最大量程是6。s为270,指针是270度可旋转。因为指针在0-90度区域和180-270度区域时读数有冲突,指针在90-180度区域时读数无冲突。判断指针是在0-90度区域内还是在180-270度区域内,即判断指针中心在表盘左侧还是在表盘右侧。如果指针在0-90度区域内,则最终读数不变;如果指针在 90-180度区域内,此时读数无冲突,则最终读数不变;如果指针在180-270度时,此时读数与指针在0-90度区域内的读数有冲突,则最终读数需要加4,即将指针的最大可旋转角度补全到360度时,此时表盘量程的最大值(最大读数) 是8,它的一半是4。
[0092]
最后,通过实验验证本基于模板匹配的变电站多表盘多指针识别方法的准确性:
[0093]
使用pycharm开发环境,图像处理的核心是opencv库函数,实现多表盘多指针仪表的自动读数。实验数据均来自真实场景下指针在不同位置时拍摄的图片,共有六张,对这六
张实验数据进行如上方法所提供的操作。
[0094]
以下表格中的真实值是由10名工作人员分别读取仪表上的读数,然后取平均值得到。上指针区域的实验结果如表1所示,下指针区域的长指针实验结果如表2所示,下指针区域的短指针实验结果如表3所示。
[0095]
表1 上指针区域的实验结果
[0096][0097]
表2 下指针区域的长指针实验结果
[0098]
序号真实值自动读数绝对误差准确率17.687.640.0499.60%27.086.950.1398.70%38.228.100.1298.80%42.852.890.0499.60%52.852.860.0199.90%68.808.700.1099.00%
[0099]
表3 下指针区域的短指针实验结果
[0100][0101][0102]
从上述表1、表2和表3中可以看出,上指针区域的绝对误差均小于0.1ma,准确率均大于97%。下指针区域的绝对误差均小于0.15,准确率均大于98%。由此看出,本实施例提供的方法性能好、精度高,具有良好的自动读数性能。此方法可以更加精准的提取出变电站内表盘指针的边缘图像,抗干扰能力强、精度高、运行快,具有一定的推广价值。
[0103]
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围
之内,则本发明也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1