一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

指针式仪表读数识别方法及装置、存储介质及电子设备与流程

2021-10-24 06:44:00 来源:中国专利 TAG:读数 识别 仪表 指针式 电子设备


1.本公开涉及图像处理技术领域,具体而言,涉及一种指针式仪表读数识别方法、指针式仪表读数识别装置、计算机可读存储介质以及电子设备。


背景技术:

2.指针式仪表由于其结构简单,维护便捷等优点,目前在许多领域中仍然被广泛应用。因此指针式仪表的数值读取仍然至关重要。
3.相关技术中,主要采取人工的方式对指针式仪表的读数进行识别。然而,这种人工读取指针式仪表的读数的方式,会影响读数的准确性,且效率低下。
4.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.本公开的目的在于提供一种指针式仪表的读数识别方法及装置、计算机可读存储介质及电子设备,进而至少在一定程度上改善指针式仪表的读数的准确性、以及提高指针式仪表的数值读取效率。
6.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
7.根据本公开的第一方面,提供了一种指针式仪表读数识别方法,包括:
8.获取包含指针式仪表的待识别图像,通过深度学习模型在所述待识别图像中检测出所述指针式仪表的表盘区域,并确定出所述指针式仪表所属的仪表类型;
9.基于所述仪表类型获取所述指针式仪表的量程范围,根据量程范围为霍夫变换直线检测算法添加检测角度约束条件;
10.基于所述仪表类型获取所述指针式仪表的指针真实长度与表盘真实尺寸之间的比例关系,并根据所述表盘区域确定出表盘检测尺寸,以通过所述比例关系和所述表盘检测尺寸确定出所述霍夫变换直线检测算法对应的直线长度约束条件;
11.根据所述检测角度约束条件和所述直线长度约束条件,利用所述霍夫变换直线检测算法在所述表盘区域中进行直线检测,得到待处理直线集合;
12.基于所述待处理直线集合中的直线,确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置,以根据所述目标位置得到所述指针式仪表的读数。
13.在本公开的一种示例性实施例中,基于前述方案,所述根据所述待处理直线集合中的直线,确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置,包括:
14.根据所述仪表类型,确定出所述指针式仪表的指针边缘轮廓的两条直线之间的真实斜率差;
15.计算待处理集合中的每条直线的斜率值,根据所述斜率值对所述直线进行分组,确定各组中的直线数量,其中,每组中的直线具有相同的斜率值;
16.根据各组中的直线数量和所述真实斜率差对所述待处理直线集合中的直线进行过滤,以确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置。
17.在本公开的一种示例性实施例中,基于前述方案,所述根据各组中的直线数量和所述真实斜率差对所述待处理直线集合中的直线进行过滤,以确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置,包括:
18.确定直线数量最多的两组直线对应的斜率值之间的第一斜率差;
19.在所述第一斜率差与所述真实斜率差之间的关系满足第一预设条件时,确定直线数量最多的两组直线之间的交点;
20.根据所述交点,确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置。
21.在本公开的一种示例性实施例中,基于前述方案,所述方法还包括:
22.在所述第一斜率差与所述真实斜率差之间的关系不满足第一预设条件时,针对每组直线,分别确定其对应的斜率值与其它组直线对应的斜率值之间的第二斜率差,以得到第二斜率差集合;
23.在所述第二斜率差集合中存在目标第二斜率差时,确定所述目标第二斜率差对应的两组直线之间的交点,其中,所述目标第二斜率差包括与所述真实斜率差之间的关系满足所述第一预设条件的第二斜率差;
24.根据所述交点,确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置。
25.在本公开的一种示例性实施例中,基于前述方案,根据量程范围为霍夫变换直线检测算法添加角度约束条件,包括:
26.获取所述量程范围中的最小量程值对应的刻度线在所述指针式仪表中的第一偏转角度;
27.获取所述量程范围中的最大量程值对应的刻度线在所述指针式仪表中的第二偏转角度;
28.根据所述第一偏转角度和所述第二偏转角度,为霍夫变换直线检测算法添加检测角度约束条件。
29.在本公开的一种示例性实施例中,基于前述方案,所述表盘真实尺寸包括表盘在第一方向的第一真实尺寸和表盘在第二方向的第二真实尺寸,所述表盘检测尺寸包括表盘在第一方向的第一检测尺寸和表盘在第二方向的第二检测尺寸,其中,所述第一方向和所述第二方向垂直;
30.所述比例关系包括所述指针真实长度和所述第一真实尺寸之间的第一比例关系以及所述指针真实长度和所述第二真实尺寸之间的第二比例关系;
31.所述通过所述比例关系和所述表盘检测尺寸确定出所述霍夫变换直线检测算法对应的直线长度约束条件,包括:
32.根据所述第一比例关系、所述第一检测尺寸、所述第二比例关系、所述第二检测尺寸确定出所述霍夫变换直线检测算法对应的直线长度约束条件。
33.在本公开的一种示例性实施例中,基于前述方案,所述直线长度约束条件用于表征指针检测长度的取值范围,所述直线长度约束条件通过以下公式确定:
[0034][0035]
其中,β1表示第一比例平衡参数、β2表示第二比例平衡参数、l表示指针真实长度、w表示第一真实尺寸、h表示第二真实尺寸、w表示第一检测尺寸、h表示第二检测尺寸、l表示指针检测长度。
[0036]
在本公开的一种示例性实施例中,基于前述方案,所述根据所述目标位置得到所述指针式仪表的读数,包括:
[0037]
在所述待识别图像中识别出所述指针式仪表的表盘中心、所述指针式仪表的量程范围中的最小量程值对应的第一刻度线;
[0038]
基于所述仪表类型,确定出所述指针式仪表的量程范围对应的最小量程值和最大量程值之间的第一夹角角度;
[0039]
根据所述表盘中心和所述目标位置的最短连线,确定出所述指针式仪表的指针射线;
[0040]
计算所述指针射线与所述第一刻度线之间的第二夹角角度;
[0041]
基于所述第二夹角角度与所述第一夹角角度之间的比值和所述指针式仪表的量程得到所述指针式仪表的读数。
[0042]
在本公开的一种示例性实施例中,基于前述方案,所述方法还包括:
[0043]
对所述指针式仪表的读数进行加密处理,并将加密处理后的读数存储至区块链中。
[0044]
根据本公开的第二方面,提供了一种指针式仪表读数识别装置,包括:
[0045]
图像识别模块,被配置为获取包含指针式仪表的待识别图像,通过深度学习模型在所述待识别图像中检测出所述指针式仪表的表盘区域,并确定出所述指针式仪表所属的仪表类型;
[0046]
第一约束条件确定模块,被配置为基于所述仪表类型,获取所述指针式仪表的量程范围,根据所述量程范围为霍夫变换直线检测算法添加检测角度约束条件;
[0047]
第二约束条件确定模块,被配置为基于所述仪表类型,获取所述指针式仪表的指针真实长度与表盘真实尺寸之间的比例关系,并根据所述表盘区域确定出表盘检测尺寸,以通过所述比例关系和所述表盘检测尺寸确定出所述霍夫变换直线检测算法对应的直线长度约束条件;
[0048]
直线检测模块,被配置为根据所述检测角度约束条件和所述直线长度约束条件,利用所述霍夫变换直线检测算法在所述表盘区域中进行直线检测,得到待处理直线集合;
[0049]
读数确定模块,被配置为基于所述待处理直线集合中的直线,确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置,以根据所述目标位置得到所述指针式仪表的读数。
[0050]
根据本公开的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中第一方面所述的指针式仪表读数识别方法。
[0051]
根据本公开实施例的第四方面,提供了一种电子设备,包括:处理器;以及,存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中第一方面所述的指针式仪表读数识别方法。
[0052]
由上述技术方案可知,本公开示例性实施例中的指针式仪表的读数识别方法、指针式仪表的读数识别装置,以及实现指针式仪表的读数识别方法的计算机可读存储介质及电子设备,至少具备以下优点和积极效果:
[0053]
在本公开的一些实施例所提供的技术方案中,首先,获取包含指针式仪表的待识别图像,通过深度学习模型检测出指针式仪表的表盘区域,并确定出仪表类型;其次,基于识别出的仪表类型和表盘区域,可以确定出霍夫变换直线检测算法对应的角度约束条件和直线长度约束条件;然后,根据检测角度约束条件和直线长度约束条件,利用所述霍夫变换直线检测算法在所述表盘区域中进行直线检测,最后,基于直线检测结果得到指针式仪表的读数。与相关技术相比,一方面,通过量程值为霍夫变换添加角度约束条件、通过仪表的指针实际长度和表盘实际尺寸的比例关系为霍夫变换添加直线长度约束条件,可以提高霍夫变换检测出的指针边缘线的准确度,进而提高读数识别的准确性;另一方面,本公开通过对霍夫变换直线检测方法添加角度约束条件,缩小了霍夫变换的直线检测范围,从而提高了霍夫变换的检测效率,进而提高了指针式仪表读数的识别效率。
[0054]
本公开应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
[0055]
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0056]
图1示出本公开一示例性实施例中的指针式仪表读数识别方法的流程示意图;
[0057]
图2示出本公开一示例性实施例中的确定深度学习模型的方法的流程示意图;
[0058]
图3示出本公开一示例性实施例中的第一偏转角度和第二偏转角度的示意图;
[0059]
图4示出本公开一示例性实施例中确定直线长度约束条件的方法的流程示意图;
[0060]
图5示出本公开一示例性实施例中确定指针顶点所在位置的方法的流程示意图;
[0061]
图6示出本公开一示例性实施例中确定指针读数的方法的流程示意图;
[0062]
图7示出本公开一示例性实施例中的图像识别和区块链结合进行指针式仪表读数识别的方法的流程示意图;
[0063]
图8示出本公开一示例性实施例中的另一种指针式仪表读数识别方法的流程示意图;
[0064]
图9示出一示例性实施例中可以应用本公开的指针式仪表读数识别方法及装置的示例性系统的架构示意图;
[0065]
图10示出本公开一示例性实施例中指针式仪表读数识别装置的结构示意图;
[0066]
图11示出本公开示例性实施例中计算机存储介质的结构示意图;
[0067]
图12示出本公开示例性实施例中电子设备的结构示意图。
具体实施方式
[0068]
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
[0069]
本说明书中使用用语“一个”、“一”、“该”和“所述”用以表示存在一个或多个要素/组成部分/等;用语“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”和“第二”等仅作为标记使用,不是对其对象的数量限制。
[0070]
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。
[0071]
指针式仪表由于其结构简单,维护便捷等优点,目前在许多领域中仍然被广泛应用。因此指针式仪表的数值读取仍然至关重要。
[0072]
相关技术中,主要采取人工的方式对指针式仪表的读数进行识别。
[0073]
然而,传统的人眼识别对指针式仪表的数值进行读取,存在着许多不足。例如,当人眼的观测角度与仪表平面不呈垂直关系以及人眼长时间工作产生视觉疲劳时,均会影响到所读取数值的准确度。此外,人工读取仪表数值的工作效率较低,且所需要的人力成本也更加昂贵。
[0074]
在本公开的实施例中,首先提供了一种指针式仪表的读数识别方法,至少在一定程度上克服上述相关技术中存在的缺陷。
[0075]
图1示出本公开一示例性实施例中指针式仪表的读数识别方法的流程示意图。参考图1,该方法包括:
[0076]
步骤s110,获取包含指针式仪表的待识别图像,通过深度学习模型在所述待识别图像中检测出所述指针式仪表的表盘区域,并确定出所述指针式仪表所属的仪表类型;
[0077]
步骤s120,基于所述仪表类型获取所述指针式仪表的量程范围对应的偏转角度范围,根据量程范围为霍夫变换直线检测算法添加检测角度约束条件;
[0078]
步骤s130,基于所述仪表类型确定出所述指针式仪表的指针真实长度与表盘真实尺寸之间的比例关系,并根据所述表盘区域确定出表盘检测尺寸,以通过所述比例关系和所述表盘检测尺寸确定出所述霍夫变换直线检测算法对应的直线长度约束条件;
[0079]
步骤s140,根据所述检测角度约束条件和所述直线长度约束条件,利用所述霍夫变换直线检测算法在所述表盘区域中进行直线检测,得到待处理直线集合;
[0080]
步骤s150,基于所述待处理直线集合中的直线,确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置,以根据所述目标位置得到所述指针式仪表的读数。
[0081]
在图1所示实施例所提供的技术方案中,在本公开的一些实施例所提供的技术方
案中,首先,获取包含指针式仪表的待识别图像,通过深度学习模型在待识别图像中检测出指针式仪表的表盘区域,并确定出指针式仪表所属的仪表类型;其次,基于识别出的仪表类型和表盘区域,可以确定出指针式仪表的确定出霍夫变换直线检测算法对应的角度约束条件和直线长度约束条件;然后,根据所述检测角度约束条件和所述直线长度约束条件,利用所述霍夫变换直线检测算法在所述表盘区域中进行直线检测,最后,基于直线检测结果确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置,以根据所述目标位置得到所述指针式仪表的读数。与相关技术相比,一方面,通过量程值为霍夫变换添加角度约束条件、通过仪表的指针实际长度和表盘实际尺寸的比例关系为霍夫变换添加直线长度约束条件,可以提高霍夫变换检测出的指针边缘线的准确度,进而提高读数识别的准确性;另一方面,本公开通过对霍夫变换直线检测方法添加角度约束条件和直线约束条件,缩小了霍夫变换的直线检测范围,从而提高了霍夫变换的检测效率,进而提高了指针式仪表读数的识别效率。
[0082]
以下对图1所示实施例中各个步骤的具体实施方式进行详细阐述:
[0083]
在步骤s110中,获取包含指针式仪表的待识别图像,通过深度学习模型在所述待识别图像中检测出所述指针式仪表的表盘区域,并确定出所述指针式仪表所属的仪表类型。
[0084]
在示例性的实施方式中,本公开中的深度学习模型可以包括yolo v3目标检测网络模型。其中,yolo是you only look once的简称,yolo v3是yolo系列目标检测算法中的第三版本。yolo v3的模型结构可以参照现有技术,此处不再进行赘述。
[0085]
举例而言,在本公开中,可以通过预先采集的多个包含指针式仪表的待识别图像对yolo v3模型进行训练,从而得到步骤s110中的深度学习模型,进而使用该深度学习模型进行指针式仪表读数识别。
[0086]
示例性的,图2示出本公开一示例性实施例中的确定深度学习模型的方法的流程示意图。参考图2,该方法可以包括步骤s210至步骤s250。
[0087]
在步骤s210中,对摄像机采集的指针式仪表图像进行标注,以生成训练样本。
[0088]
举例而言,可以预先使用摄像机采集指针式仪表图像,并对采集的指针式仪表图像进行翻转、旋转、裁剪、缩放等处理,以得到指针式仪表数据集。然后,使用labelimg对仪表数据集中的图像进行标注,从而得到与图像对应的xml格式的文件,该xml格式的文件可以作为训练样本文件。
[0089]
其中,可以使用工业摄像机采集不同类型的指针式仪表图像,在进行图像标注时,可以对仪表类型、表盘中心点、表盘在图像中的区域信息、仪表的起始刻度线信息等进行标注,从而生成标签数据集,将该标签数据集作为训练样本。具体的,表盘在图像中的区域信息可以包括表盘在第一方向的尺寸信息、高度信息可以理解为表盘在第二方向的尺寸信息。例如,第一方向可以为水平方向、第二方向可以为垂直方向,对应的表盘在第一方向的尺寸信息可以理解为表盘的宽度信息、表盘在第二方向的尺寸信息可以理解为表盘的高度信息。
[0090]
在步骤s220中,基于生成的训练样本,利用预设损失函数对一初始模型进行训练。
[0091]
在示例性的实施方式中,初始模型可以包括上述的yolov3目标检测模型。yolov3模型在进行目标检测时,首先需要将待识别图像分割成s*s个网格单元,其中每个网格单元
产生b个候选框。
[0092]
在相关技术中,yolov3的损失函数可以用如下的公式(1)进行表示,其主要由包括3个部分,分别为坐标损失、置信度损失以及分类损失。
[0093][0094]
在公式(1)中,λ
coord
表示坐标损失所占的权重系数,为坐标损失所包括的边界框的中心坐标误差,为坐标损失中包括的边界框的宽高坐标误差。表示分类损失,公式(1)的其余部分表示置信度损失。表示第i个网格单元中存在目标物体且第i个网格单元中的第j个边界框负责预测该目标;则表示第i个网格单元中的第j个边界框并不负责预测该目标。
[0095]
对于置信度损失而言,可以使用交叉熵来表示,且无论候选框是否负责某个目标,都会计算其置信度损失,因此,置信度损失包含两部分,包含物体时的置信度损失和未包含物体时的置信度损失。λ
noobj
表示网格单元不包含待检测目标时,置信度损失所占的权重系数。对于一幅图像而言,一般大部分内容时不包含待检测物体的,这样会导致没有物体的计算部分贡献会大于有物体的计算部分,这会导致网络倾向于预测单元格不含有物体。因此,通过添加系数λ
noobj
减少没有物体计算部分的贡献权重。ci表示的是参数置信度,取值是通过网络单元中的边界框有没有负责预测某个对象决定的,如果负责,其值为1;否则,其值为0。pi表示的是分类概率。
[0096]
如上述公式(1)所示,在相关技术中,yolov3的损失函数中的坐标损失采用的是中心点坐标和宽高的均方误差损失的形式,这种损失函数在实进行仪表盘区域的检测时存在以下不足:
[0097]
(1)由于均方误差损失函数是基于距离来评价预测边界框的准确程度的,其不具有尺度不变性,因此不能很好地解决相同类型的仪表盘在不同图像中尺度大小不同的情况;
[0098]
(2)yolov3算法是通过假设边界框对应的四个坐标参数x、y、w、h((x,y)表示边界框的中心点坐标、w和h分别表示边界框的宽和高)相互独立来获取坐标损失,将导致预测的边界框精度不足;
[0099]
(3)yolov3使用的是iou(即预测边界框与真实边界框的重叠区域)的值来评价两个边界框的相似度,但其进行训练时的损失函数中的坐标损失却使用的是边界框对应的四个坐标参数x、y、w、h来进行计算的,其坐标损失的计算值与评价值是不匹配的,且由于相同的均方差损失,两个边界框可能有着不同的重叠方式,即iou的值可能会有所不同,显然,其会影响yolov3模型的训练精度,进而影响其目标检测的精度。
[0100]
为了提高yolov3模型对表盘区域检测的准确性,在本公开中使用预设损失函数代替yolov3中的坐标损失函数,以对yolov3模型进行训练,从而得到可以用于对指针式仪表的表盘区域以及仪表类型可以进行精确识别的深度学习模型。
[0101]
在示例性的实施方式中,预设损失函数可以通过以下公式(2)进行确定,其中,:
[0102][0103]
式(2)中,使用l
ciou
损失函数代替了式(1)中的坐标损失,从而生成yolov3模型训练中的新的损失函数,提高模型的预测精度。式(2)中的置信度损失和分类损失与式(1)中的完全相同,此处不再对各变量及其含义进行赘述。下面,对式(2)中的l
ciou
损失函数进行进一步的说明。
[0104]
在示例性的实施方式中,l
ciou
损失函数可以通过以下公式(3)进行确定:
[0105][0106]
式(3)中,b和b
gt
分别表示预测边界框和真实边界框的中心点位置,ρ(
·
)表示两个边界框中心点之间的欧式距离,c表示两个边界框最小外接矩形的对角线长度。iou用于衡量预测边界框与真实边界框之间的重叠程度,它的值可以通过预测边界框与真实边界框的交集面积和并集面积的比值所得到,即两个区域的重叠部分intersection除以两个区域的集合部分union,如iou可以通过如下公式(4)进行确定:
[0107]
[0108]
α代表一个用于平衡边界框的长宽比之间的相似程度的正权衡参数,其可以通过如下公式(5)进行确定:
[0109][0110]
v可以用于表示描述预测边界框的长宽比和真实边界框长宽比之间的相似程度的参数,其可以通过如下公式(6)确定:
[0111][0112]
式(6)中,w
gt
和h
gt
分别表示真实边界框的宽度和高度,w和h分别表示预测边界框的宽度和高度。
[0113]
通过上述的公式(3)至(6)可以看出,l
ciou
损失函数不仅考虑到两个边界框的重叠面积,还考虑到两个边界框中心点之间的距离、同时考虑到了边界框的长宽比,因此其可以保留尺度不变性,进而提高yolov3模型对表盘区域的检测精度。
[0114]
在确定好预设损失函数后,可以使用该预设损失函数和在步骤s210中生成的训练样本对一个初始的yolov3模型进行训练。
[0115]
接下来,在步骤s230中,确定当前训练结果是否满足预设条件,若是,则转至步骤s240,否则转至步骤s250。
[0116]
举例而言,预设条件可以包括预设损失函数的值是否小于某个预设阈值,该预设阈值可以用来衡量模型的预测精度,该预设阈值越小,得到的模型精度会越高,预设阈值可以根据实际的指针式仪表的预测精度需求进行自定义设置,本示例性实施方式对此不做特殊限定。
[0117]
在步骤s240中,确定当前模型为目标深度学习模型。
[0118]
在步骤s250中,对初始模型进行模型网络参数调整,基于生成的训练样本,对调整后的初始模型进行训练,直到训练结果满足预设条件。
[0119]
举例而言,可以调整yolov3模型的学习率、批量样本数量等网络参数,以基于生成的训练样本,对yolov3模型重新进行训练,直到训练结果满足上述的步骤s240中的预设条件。
[0120]
通过上述的步骤s210至步骤s250,可以得到一个基于yolov3模型的可用于对指针式仪表的表盘区域和仪表类型进行图像识别的深度学习模型。然后,在步骤s110中,可以利用该深度学习模型对实时采集到的包含指针式仪表的待识别图像进行识别,以得到指针式仪表的表盘区域和仪表类型,进而基于检测出的表盘区域和仪表类型进行指针式仪表的读数确定。
[0121]
接下来,在步骤s120中,基于所述仪表类型获取所述指针式仪表的量程范围,根据所述量程范围为霍夫变换直线检测算法添加检测角度约束条件。
[0122]
在示例性的实施方式中,量程范围可以包括指针式仪表的起始刻度线和满量程刻度线所确定的量程。其中,起始刻度线对应量程最小值、满量程刻度线对应量程最大值。
[0123]
示例性的,步骤s120的具体实施方式可以包括:获取所述量程范围中的最小量程值对应的刻度线在所述指针式仪表中的第一偏转角度;获取所述量程范围中的最大量程值对应的刻度线在所述指针式仪表中的第二偏转角度;根据所述第一偏转角度和所述第二偏
转角度,为霍夫变换直线检测算法添加检测角度约束条件。
[0124]
举例而言,可以根据仪表类型获取指针式仪表的量程范围对应的偏转角度范围,根据该偏转角度范围为霍夫变换直线检测算法添加检测角度约束条件。具体的,可以预先测量并在数据库中存储不同类型的指针式仪表对应的量程范围中的最小值(即起始刻度线)在表盘中的第一偏转角度和量程范围中的最大值(即满量程刻度线)在表盘中的第二偏转角度。这样,在步骤s110中识别出表盘类型后,可以直接在数据库中查找并获取该表盘类型对应的量程范围中的最小值在表盘中的第一偏转角度以及最大值在表盘中的第二偏转角度,进而基于第一偏转角度和第二偏转角度,为霍夫变换直线检测算法添加检测角度约束条件。
[0125]
其中,以图3中的测量温度的指针式仪表盘为例,在图3中,量程范围为[

10℃,110℃],即起始刻度线对应的量程值为

10℃,满量程刻度线对应的量程值为110℃,第一偏转角度和第二偏转角度分别如图3中的θ1和θ2所示。
[0126]
当然,也可以只在数据库中存储不同类型的指针式仪表对应的量程范围。在通过深度学习模型识别出仪表类型后,可以获取该仪表类型对应的量程范围,然后根据量程范围中的最小量程值在表盘区域中识别出起始刻度线,根据量程范围中的最大量程值在表盘区域中识别出满量程刻度线,基于起始刻度线以及识别出的表盘区域的中心确定出第一偏转角度,基于满量程刻度线以及识别出的表盘区域的中心确定出第二偏转角度,进而基于确定的第一偏转角度和第二偏转角度为霍夫变换直线检测方法添加检测角度约束条件。以量程范围为[30,100]为例,可以通过上述的深度学习模型检测数字30对应的直线和数字100对应的直线,从而识别出起始刻度线和满量程刻度线,进而确定出第一偏转角度和第二偏转角度。也可以通过其它的方式基于量程范围确定出第一偏转角度和第二偏转角度,本示例性实施方式对此不做特殊限定。
[0127]
对于相同类型的指针式仪表,其所能够测量的物理值的最小值和最大值相同,即它们的量程一致。根据这一特征,本公开使用检测角度参数对霍夫变换直线检测算法进行检测角度约束。
[0128]
以指针式仪表的最小量程和最大量程(即起始刻度线和满量程刻度线)所对应的偏转角度分别为α1和α2为例,则可以通过角度约束限定霍夫变换的检测范围在α1和α2内,通过角度参数对霍夫变换的直线检测范围进行约束的检测角度约束条件可以如下公式(7)所示。
[0129][0130]
在本公开中,通过检测角度约束条件对霍夫变换进行约束,从而使得不必对检测出的表盘区域整个进行直线检测,只在角度范围内进行直线检测即可,进而可以减少计算时间以及系统资源,以提高指针式仪表的读数识别效率。且由于通过量程对霍夫变换进行了角度约束,可以减少非量程范围内的直线对检测结果的影响,进而提高了指针式仪表的读数识别的准确性。
[0131]
继续参考图1,在步骤s130中,基于所述仪表类型,获取所述指针式仪表的指针真实长度与表盘真实尺寸之间的比例关系,并根据所述表盘区域确定出表盘检测尺寸,以通过所述比例关系和所述表盘检测尺寸确定出所述霍夫变换直线检测算法对应的直线长度
约束条件。
[0132]
在示例性的实施方式中,表盘真实尺寸包括表盘在第一方向的第一真实尺寸和表盘在第二方向的第二真实尺寸,所述表盘检测尺寸包括表盘在第一方向的第一检测尺寸和表盘在第二方向的第二检测尺寸;所述比例关系包括所述指针真实长度和所述第一真实尺寸之间的第一比例关系以及所述指针真实长度和所述第二真实尺寸之间的第二比例关系。其中,所述第一方向和所述第二方向垂直。以第一方向为水平访问为例,第二方向可以为垂直方向,第一真实尺寸可以理解为表盘的宽度、第二真实尺寸可以理解为表盘的高度。
[0133]
通过所述比例关系和所述表盘检测尺寸确定出所述霍夫变换直线检测算法对应的直线长度约束条件,包括:根据所述第一比例关系、所述第一检测尺寸、所述第二比例关系、所述第二检测尺寸确定出所述霍夫变换直线检测算法对应的直线长度约束条件。
[0134]
示例性的,直线长度约束条件用于表征指针检测长度的取值范围,其中,直线长度约束条件通过以下公式(8)确定:
[0135][0136]
在式(8)中,β1表示第一比例平衡参数、β2表示第二比例平衡参数、l表示指针真实长度、w表示第一真实尺寸、h表示第二真实尺寸、w表示第一检测尺寸、h表示第二检测尺寸、l表示指针检测长度。
[0137]
其中,β1和β2可以理解为用于确定指针检测长度的允许误差范围的参数,β1小于或β2。换言之,通过β1和β2,可以限定在进行指针式仪表读数识别时,霍夫变换检测的直线长度的范围应该满足上述的公式(8)。β1和β2可以根据检测精度需求进行自定义设置或者在实际中,预先经过多次参数调整得到在某组β1和β2下的最优指针长度检测结果。
[0138]
对于不同类型的指针式仪表而言,指针的长度不尽相同。且本公开的发明人在实践中发现,由于采集指针式仪表图像时所使用的摄像机摆放位置与指针式仪表的实际位置之间的相对位置的不同,即使是相同类型的指针式仪表,其指针的长度在采集到的图像中也可能会有所不同。基于此,如果直接使用指针实际长度从霍夫变换检测到的直线中筛选出可以代表指针位置的直线是不严谨且不合理的,会影响指针位置确定的准确性。
[0139]
为了解决这一问题,本公开的发明人想到,虽然相同类型的指针式仪表在采集到的不同图像中对应的指针显示长度可能不相同,但是指针长度相对于表盘的长度的第一比例以及指针长度相对于表盘的宽度的第二比例是一致的,是不会随着采集角度或采集位置的不同而改变的。因此,可以基于这一特性,对霍夫变换检测到的直线进行直线长度阈值设定,以提高指针位置确定的准确性。与此同时,如前所述,本公开在进行yolov3模型的训练时,使用了l
ciou
损失函数代替了yolov3中现有的坐标损失,而l
ciou
中考虑到了边界框的长宽比,保留了尺度不变性,可以提高表盘区域检测的准确性。因此,l
ciou
损失函数和霍夫变换的直线长度约束条件相结合,可以提高指针位置检测的准确性。
[0140]
接下来,结合图4对上述的步骤s130进行进一步的说明。图4示出本公开一示例性实施例中确定直线长度约束条件的方法的流程示意图。参考图4,该方法可以包括步骤s410
至步骤s430。
[0141]
在步骤s410中,基于仪表类型,在数据库中查找与该仪表类型对应的第一比例关系和第二比例关系;
[0142]
举例而言,可以预先测量指针式仪表的表盘真实宽度、表盘真实高度、以及指针真实长度。其中,表盘真实宽度可以理解为表盘在第一方向的第一真实尺寸,表盘真实高度可以理解为表盘在第二方向的第二真实尺寸。其中,第一方向和第二方向垂直,第一方向可以为水平方向,第二方向可以为垂直方向。如果表盘为圆形时,第一真实尺寸可以等于第二真实尺寸。
[0143]
然后,计算指针真实长度和表盘真实宽度之间的第一比例关系、计算指针真实长度和表盘真实高度之间的第二比例关系,并将仪表类型和其对应的第一比例关系以及第二比例关系存储至数据库中。这样,当识别出仪表类型后,可以根据识别出的仪表类型在数据库中直接查找当前仪表类型对应的第一比例关系以及第二比例关系。
[0144]
需要说明的是,也可以不在数据库中存储第一比例关系和第二比例关系,而在数据库中直接存储仪表类型对应的指针真实长度、表盘真实宽度、表盘真实高度,然后基于仪表类型获取指针真实长度、表盘真实宽度、表盘真实高度,然后在线计算第一比例关系和第二比例关系。
[0145]
在步骤s420中,根据检测出的表盘区域确定出表盘检测宽度和表盘检测高度。
[0146]
举例而言,在步骤s110中检测出表盘区域后,可以根据检测出的表盘区域直接确定出表盘检测宽度和表盘检测高度。
[0147]
接下来。在步骤s430中,根据第一比例关系、第二比例关系、表盘检测宽度、表盘检测高度确定出霍夫变换直线检测算法对应的直线长度约束条件。
[0148]
举例而言,可以根据如上的公式(8),根据第一比例关系、第二比例关系、表盘检测宽度、表盘检测高度确定出霍夫变换直线检测算法对应的直线长度约束条件。
[0149]
接下来,继续参考图1,在步骤s140中,根据所述检测角度约束条件和所述直线长度约束条件,利用所述霍夫变换直线检测算法在所述表盘区域中进行直线检测,得到待处理直线集合。
[0150]
示例性的,可以基于检测角度约束条件和直线长度约束条件,利用霍夫变换直线检测算法在检测出的表盘区域中进行直线检测,将检测出的多条直线对应的直线集合确定为待处理直线集合。其中,霍夫变换如何进行直线检测可以参照现有技术,此处不再对霍夫变换具体如何进行直线检测进行赘述。
[0151]
虽然通过角度约束条件可以缩小霍夫变换进行直线检测的区域范围,即只在角度约束条件范围内的表盘区域中进行直线检测,通过直线长度约束条件可以在霍夫变换检测出的直线中排除掉大部分无关的干扰直线对确定表盘指针位置的影响。但可能因表盘上的刻度线、表盘上的文字信息以及其它噪声干扰等因素,使得利用直线长度约束条件进行了一次过滤筛选后,仍然存在多条符合直线长度约束条件的直线,即待处理直线集合中可能会存在数量大于2的多条直线,从而无法准确的确定出指针顶点所在的位置。因此,还需要对待处理直线集合中的直线进行再次过滤处理,以准确的确定出指针顶点当前所在的位置。
[0152]
继续参考图1,在步骤s150中,基于所述待处理直线集合中的直线,确定出所述指
针式仪表的指针顶点在所述表盘区域中的目标位置,以根据所述目标位置得到所述指针式仪表的读数。
[0153]
如上所述,由于待处理直线集合中可能存在多条直线,而指针顶点是通过指针轮廓边缘的两条直线的交点确定的,也就是只需要两条直线就可以准确的确定出指针顶点在检测出的表盘区域中的目标位置。而指针边缘轮廓的两条直线有着固定的斜率差,即指针边缘的两条直线对应的斜率差具有不变性,因此,可以基于这一特性,对待处理集合中的直线进行斜率过滤处理,从而确定出指针顶点的目标位置。
[0154]
示例性的,图5示出本公开一示例性实施例中确定指针顶点所在位置的方法的流程示意图。参考图5,该方法可以包括步骤s510至步骤s530。其中:
[0155]
在步骤s510中,根据所述仪表类型,确定出所述指针式仪表的指针边缘轮廓的两条直线之间的真实斜率差。
[0156]
举例而言,可以预先确定出不同类型的指针式仪表的指针边缘轮廓的两条直线之间的真实斜率差,将根据仪表类型与真实斜率差的对应关系在数据库中进行数据的预先存储。这样,在识别出仪表类型后,可以在数据库中查找并获取当前识别出的仪表类型对应的指针边缘轮廓的两条直线之间的真实斜率差。
[0157]
接下来,在步骤s520中,计算待处理集合中的每条直线的斜率值,根据所述斜率值对所述直线进行分组,确定各组中的直线数量,其中,每组中的直线具有相同的斜率值。
[0158]
举例而言,可以对计算待处理直线集合中的每条直线对应的斜率值,然后,基于相同的斜率值对待处理直线集合中的每条直线进行分组,以使得具有相同斜率值的直线处于同一组。然后,确定出各组中的直线数量。也就是说,每组对应一个斜率值,每个斜率值可以对应多条直线,即待处理直线集合中的某几条直线可能具有相同的斜率值。
[0159]
接下来,在步骤s530中,根据各组中的直线数量和所述真实斜率差对所述待处理直线集合中的直线进行过滤,以确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置。
[0160]
示例性的,步骤s530的具体实施方式可以包括:确定直线数量最多的两组直线对应的斜率值之间的第一斜率差;在所述第一斜率差与所述真实斜率差之间的关系满足第一预设条件时,确定直线数量最多的两组直线之间的交点;根据所述交点,确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置。
[0161]
在所述第一斜率差与所述真实斜率差之间的关系不满足第一预设条件时,针对每组直线,分别确定其对应的斜率值与其它组直线对应的斜率值之间的第二斜率差,以得到第二斜率差集合;在所述第二斜率差集合中存在目标第二斜率差时,确定所述目标第二斜率差对应的两组直线之间的交点;根据所述交点,确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置。其中,所述目标第二斜率差包括与所述真实斜率差之间的关系满足所述第一预设条件的第二斜率差。
[0162]
在示例性的实施方式中,第一预设条件可以理解为:第一斜率差或第二斜率差与真实斜率差之间的误差允许范围。也就是说,在第一斜率差与真实斜率差之间的差值在误差允许范围内时,则第一斜率差与第二斜率差之间的关系满足第一预设条件。
[0163]
在一种示例性的实施方式中,第一预设条件通过以下公式(9)进行确定:
[0164]
λ1k<k
d
<λ2k
ꢀꢀꢀ
(9)
[0165]
式(9)中,λ1和λ2分别为斜率约束因子,k为真实斜率差,k
d
为第一斜率差或第二斜率差,即k
d
为计算出的待处理直线集合中的任意两条直线之间的斜率差。
[0166]
λ1和λ2可以理解为用于确定检测出的直线的斜率允许误差范围的参数。因为检测出的指针边缘的两条直线不一定和指针的边缘轮廓的两条直线的实际位置是完全重合,因此允许检测出的直线之间的斜率差(即待处理集合中的任意两条直线之间的斜率差)与真实斜率差之间存在一定的误差范围,而这个误差范围可以通过λ1和λ2的取值确定,λ1和λ2的具体取值可以根据实际需求进行自定义或者通过实际的检测结果进行多次参数调整以确定合适的取值。
[0167]
举例而言,首先,可以基于仪表类型,在数据库中获取该仪表类型对应的实际仪表盘指针边缘轮廓的两条直线所存在的实际斜率差,可以将该斜率差记为k。然后,对待处理直线集合中的所有直线进行斜率计算,并按照计算的先后顺序对所求得的斜率进行标记,如k={k1,k2,k3,...,k
n
}。接下来,可以统计不同直线斜率分别出现的次数,并k={k1,k2,k3,...,k
n
}中的斜率按照出现次数的降序顺序进行排列,记为n={n1,n2,n3,...,n
m
},即斜率n1在k={k1,k2,k3,...,k
n
}中的出现次数最多,斜率n2次之。其次,可以对斜率出现次数最多的前两个斜率求取斜率差,即计算斜率n1和n2之间的斜率差,即得到上述的第一斜率差,可以将该斜率差记为k
d
,判断k
d
的值与真实斜率差k的之间的误差是否在预设允许范围内,即k
d
和k之间的大小关系是否满足上述的公式(9)。
[0168]
如果k
d
的值与真实斜率差k的之间的误差在预设允许范围内,则斜率n1和n2所对应的直线即为指针边缘的两条直线,它们的延长线的交点即为指针顶点(即指针针尖)所在的位置。
[0169]
如果k
d
的值与真实斜率差k的之间的误差超出预设允许范围,则说明则斜率n1和n2所对应的直线不是指针边缘的两条直线,则可以将n={n1,n2,n3,...,n
m
}中的直线斜率两两进行相减求取斜率差k
ij
。若存在某个k
ij
与真实斜率差之间的误差在预设允许范围内,则斜率n
i
和n
j
对应的直线分别为指针边缘轮廓的两条直线,它们的延长线的交点确定为指针顶点所在的位置。
[0170]
在示例性的实施方式中,若存在多个目标第二斜率差,则可以确定各目标第二斜率差中与真实斜率差的误差最小的目标第二斜率差确定为最终的目标第二斜率差,该目标第二斜率差对应的两条直线即为指针轮廓边缘的两条直线,它们的交点即为指针顶点在检测出的表盘区域中的目标位置。
[0171]
在上述的步骤s510至步骤s530中,可以通过斜率差对霍夫变换检测出的直线进行进一步的过滤,准确的确定出指针边缘轮廓的两条直线,进而基于确定出的指针边缘轮廓的两条直线的交点准确的确定出指针顶点在检出的表盘区域中的目标位置。
[0172]
且由于在实际检测过程中,相比于噪声,指针边缘两条直线所占用的像素点要远远多于噪声。因此检测出来的直线大部分是与指针边缘两条直线共线的。因此,通过相同斜率值对直线进行分组,基于各分组中的直线数量,先计算直线数量最多的两组直线之间的斜率差,以确定该两组直线是否为指针边缘轮廓的两条直线,在结果为否时,才计算两两不同斜率之间的差值,以进一步确定指针边缘轮廓的两条直线。从而可以提高指针顶点位置的确定效率,进而提高指针读数的识别效率。
[0173]
在确定出指针顶点在检测出的表盘区域中的目标位置后,可以基于该目标位置确
定出指针式仪表的当前读数。
[0174]
示例性的,图6示出本公开一示例性实施例中确定指针读数的方法的流程示意图。参考图6,该方法可以包括步骤s610至步骤s650。其中:
[0175]
在步骤s610中,在所述待识别图像中识别出所述指针式仪表的表盘中心、所述指针式仪表的量程范围中的最小量程值对应的第一刻度线。
[0176]
在示例性的实施方式中,第一刻度线可以理解为起始刻度线。如前所述,在训练yolov3模型时,可以在采集到的训练样本图像中进行表盘中心位置标注、起始刻度线位置信息标注以生成训练标签样本。也就是说在进行训练时,yolov3模型的输入为带有标签的样本图像,输出可以包括:表盘区域信息、表盘中心位置信息、表盘起始刻度线位置、仪表类型。
[0177]
yolov3模型训练完成后,将待识别图像输入到训练好的yolov3模型中,其可以对输入的待识别图像进行处理,输出表盘区域信息、表盘中心位置信息、表盘起始刻度线位置、仪表类型。
[0178]
在另一种示例性的实施方式中,还可以通过阈值分割以及边缘检测等技术在表盘区域中识别出起始刻度线。本示例性实施方式对此不做特殊限定。
[0179]
接下来,在步骤s620中,基于所述仪表类型,确定出所述指针式仪表的量程范围对应的最小量程值和最大量程值之间的第一夹角角度。
[0180]
示例性的,可以预先测量不同类型的指针式仪表的量程范围中的最小量程值对应的起始刻度线和最大量程值对应的满量程刻度线之间的夹角角度,即第一夹角角度,如图3中的β,然后将仪表类型和第一夹角角度的对应关系存储在数据库中。
[0181]
当识别出仪表类型后,可以在数据库中查找并获取当前仪表类型的量程范围对应的起始刻度线和满量程刻度线之间的第一夹角角度。
[0182]
在步骤s630中,根据所述表盘中心和所述目标位置的最短连线,确定出所述指针式仪表的指针射线。
[0183]
示例性的,在确定出指针的顶点在表盘区域中的目标位置后,可以以表盘中心为起点,将表盘中心至目标位置之间的最短连线确定为指针射线,进而确定出指针的指向和位置
[0184]
接下来,在步骤s640中,计算所述指针射线与所述第一刻度线之间的第二夹角角度。
[0185]
在确定出指针射线后,可以计算指针射线与识别出的第一刻度线(即起始刻度线)之间的第二夹角角度。
[0186]
在步骤s650中,基于所述第二夹角角度与所述第一夹角角度之间的比值和所述指针式仪表的量程得到所述指针式仪表的读数。
[0187]
示例性的,基于仪表类型可以确定出当前的量程范围。进而基于第二夹角角度α和第一夹角角度β之间的比值、量程范围以及最小量程值确定出当前的指针读数。具体的,可以通过如下公式(10)得到指针读数:
[0188][0189]
式(10)中,ds为指针读数,α为第二夹角角度、β为第一夹角角度、ls为量程,ls
min

最小量程值,ls的取值为最大量程值和最小量程值之间的差值。如α为10
°
,β为100
°
,量程为[

10℃,50℃]时,基于公式(10),最终确定的读数为

4℃。
[0190]
示例性的,在确定出指针式仪表的读数后,还可以对所述指针式仪表的读数进行加密处理,并将加密处理后的读数存储至区块链中。
[0191]
举例而言,在本公开中,可以将自动识别出的指针式仪表盘的当前读数实时的存储至区块链模块中,从而防止人为对读数进行篡改。
[0192]
区块链的本质是一种互联网共享数据库,也是一种不可篡改的数字账本,它极大地保护了存储在区块内数据的安全。区块链技术与现有的互联网中心化决策的管理模式不同,它是一种以密码学作为算法基础的分布式多方账本,其本质是一种线上多方共享数据库,具有数据不可篡改、安全性高、自治等特性,将传统的中心化管理模式变成了多方共同参与的共识模式,它在技术层面上解决了现有互联网时代存在的多方信任问题,使得参与方不需要第三方提供信用支撑。
[0193]
虽然区块链可以保护存储在区块内数据的安全,然而,区块链技术本身无法保证数据的来源是否真实准确。而在本公开中,将图像识别技术与区块链技术相结合,在利用区块链技术存储设备数据的同时使用工业相机实时监控仪表,并将准确识别后的仪表数值加密上传至区块链系统,可以保障区块链数据来源准确的同时,有效防止人为伪造数据等现象的发生,从根源上杜绝了后期非法篡改数据等现象发生,保障了数据安全。
[0194]
在一种示例性的实施方式中,本公开中的区块链主要包括用户注册、设备相关信息存储、用户数据访问以及系统管理维护等功能。
[0195]
下面,结合图7对本公开一示例性实施例中的图像识别和区块链结合进行指针式仪表读数识别的方法进行说明,参考图7,该方法可以包括步骤s701至步骤s723。
[0196]
在步骤s701中,采集仪表图像;在步骤s702中,检测表盘区域;在步骤s703中,图像预处理;在步骤s704中,提取指针轮廓;在步骤s705中,检测指针直线;在步骤s706中,提取仪表盘主刻度线;在步骤s707中,角度法读取指针读数。
[0197]
其中,步骤s703中的图像预处理可以包括图像进行灰度化和/或降噪处理等。步骤s704中的指针轮廓提取可以通过阈值分割以及边缘检测等技术实现、步骤s705中的仪表盘主刻度线提取主要包括表盘区域中的起始刻度线和满量程刻度线提取,其可以通过阈值分割以及边缘检测等技术实现。提取出起始刻度线和满量程刻度线后,可以确定起始刻度线和满量程刻度线之间的第一夹角角度,以及提取的指针与起始刻度线之间的第二夹角角度,进而基于第一夹角角度和第二夹角角度以及仪表量程在步骤s707中使用角度法确定出指针读数。
[0198]
通过步骤s701至步骤s707实现通过图像识别技术确定出指针的当前读数。
[0199]
在步骤s708中,客户端系统进行初始化;在步骤s709中,接收用户的注册信息;在步骤s710中,接收用户选择的待存储仪表设备标识;在步骤s711中,将步骤s707中读取的待存储设备标识对应的指针读数发送至客户端;在步骤s712中,生成指针读数对应的加密文件,并获取加密文件对应的哈希值;在步骤s713中,将加密文件存入云端,加密文件对应的哈希值存入区块链中;在步骤s714中,接收数据拥有者下载加密文件的请求;在步骤s715中,对加密文件进行私钥解密;在步骤s716中,获取明文文件;在步骤s717中,接收其它用户的加密文件访问请求;在步骤s718中,进行用户身份及访问目的验证,验证通过则转至步骤
s719或s720,否则转至步骤s722;在步骤s719中,获取加密文件,管理员进行数字签名;在步骤s720中,判断数据拥有者是否给该用户进行授权,如果是,则转至步骤s721,否则转至步骤s722;在步骤s721中,进行私钥解密;在步骤s722中,确定无法访问数据;在步骤s723中,保存获取的明文文件。
[0200]
举例而言,用户通过在客户端上进行身份注册得到属于自己的公钥和私钥。用户可以使用系统生成的公钥对指针式表盘自动识别系统识别出的仪表盘数值进行加密处理,由于系统使用了非对称加密技术,在未得到数据拥有者解密秘钥的情况下,无法对数据进行暴力破解,确保了数据安全。随后,可将加密处理后的信息上传至区块链系统,根据区块链技术公开透明、不可篡改、可追溯性的特性,其它用户均可通过区块链系统验证数据的真实有效性。此外,依托系统各参与方共同商议决定的共识算法,能够保证数据及时的上传以及安全有效的更新。在数据共享方面,系统其他用户要想获取数据,必须经过身份认证、系统管理员数字签名以及数据拥有者的同意,才能获取权限从平台上下载数据,同时需要获取数据拥有者的解密秘钥,才能对所下载的数据进行解密查阅。以上的相关操作均会被区块链所记录,保证数据的安全以及精细化的共享授权。
[0201]
接下来,图8示出本公开一示例性实施例中的另一种指针式仪表读数识别方法的流程示意图。参考图8,该方法可以包括步骤s810至步骤s840。
[0202]
在步骤s810中,获取工业摄像机采集的仪表图像。
[0203]
举例而言,可以采用稳定可靠的工业相机采集仪表图像,以尽可能保证采集图像的质量,避免图像受外界因素干扰过大,降低后续识别工作所耗费的时间,提高识别结果的准确度。
[0204]
在步骤s820中,基于深度学习模型对采集的仪表图像进行识别,以确定出仪表表盘区域和仪表类型。
[0205]
可以通过预先训练得到的深度学习模型对进行预处理的仪表图像进行识别,从而确定出表盘区域,以在表盘区域中进一步进行读数识别。这样,可以摒弃复杂背景图像对整个读数识别工作的干扰,只针对表盘区域进行识别,无需对整幅图像进行处理,减少图像识别工作量,降低干扰,提高读数识别工作的精度;通过确定仪表类型,能够让系统在识别出不同仪表的前提下,依据不同的仪表盘类型,采用不同的约束条件利用霍夫变换进行直线检测,提高系统的普适性。
[0206]
在步骤s830中,进行指针式仪表的指针提取。
[0207]
在进行指针提取之前,可以进行图像预处理,如灰度化处理和降噪处理。这样,可以减少噪声、光照等自然因素对图像的干扰,提高图像质量,增强相关特征信息,使得目标特征信息更为明显,以快速的进行指针提取操作。
[0208]
进行图像预处理后,可以通过阈值分割技术和canny边缘检测算法对仪表图像进行进一步处理,以提取到指针轮廓;然后基于提取的指针轮廓进行指针直线检测,以进一步的确定出指针针尖所在位置。具体的,可以通过上述的角度约束条件和直线长度约束条件,利用霍夫变换对指针直线检测,以确定出指针针尖(指针顶点)在检测出的表盘区域中的位置。
[0209]
在步骤s840中,对仪表读数进行识别。
[0210]
举例而言,在识别出指针顶点在表盘区域中的位置的基础上,利用阈值分割等技
术进行仪表的起始刻度线和满量程刻度线的识别。确定提取的指针与起始刻度线之间的第一夹角角度,以及起始刻度线和满量程刻度线的第二夹角角度,进而基于上述的公式(10)确定出指针读数。
[0211]
图9示出一示例性实施例中可以应用本公开的指针式仪表读数识别方法及装置的示例性系统的架构示意图。
[0212]
在图9中,首先,由指针式仪表识别子系统利用工业摄像机91采集需要识别的指针式仪表92的图像,指针式仪表识别子系统对采集到的图像进行处理以识别出指针读数。然后,将识别出的指针读数发送至区块链平台93中,区块链平台93对接收的指针读数进行加密,将加密后文件传输至云端服务器94中,将加密后的文件哈希值存储至区块链中。用户可以通过共享管理系统区块链95对区块链存储的指针数据进行访问,同时可以对用户的访问权限等进行设定。
[0213]
通过将读数识别与区块链技术结合,可以从根源上杜绝后期非法篡改数据等现象发生,保证了数据安全。
[0214]
本领域技术人员可以理解实现上述实施方式的全部或部分步骤被实现为由cpu执行的计算机程序。在该计算机程序被cpu执行时,执行本发明提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
[0215]
此外,需要注意的是,上述附图仅是根据本发明示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
[0216]
图10示出本公开示例性实施例中的指针式仪表读数识别装置的结构示意图。参考图10,该装置1000可以包括图像识别模块1010、第一约束条件确定模块1020、第二约束条件确定模块1030、直线检测模块1040、读数确定模块1050。其中:
[0217]
图像识别模块1010,被配置为获取包含指针式仪表的待识别图像,通过深度学习模型在所述待识别图像中检测出所述指针式仪表的表盘区域,并确定出所述指针式仪表所属的仪表类型;
[0218]
第一约束条件确定模块1020,被配置为基于所述仪表类型,获取所述指针式仪表的量程范围,根据所述量程范围为霍夫变换直线检测算法添加检测角度约束条件;
[0219]
第二约束条件确定模块1030,被配置为基于所述仪表类型,获取所述指针式仪表的指针真实长度与表盘真实尺寸之间的比例关系,并根据所述表盘区域确定出表盘检测尺寸,以通过所述比例关系和所述表盘检测尺寸确定出所述霍夫变换直线检测算法对应的直线长度约束条件;
[0220]
直线检测模块1040,被配置为根据所述检测角度约束条件和所述直线长度约束条件,利用所述霍夫变换直线检测算法在所述表盘区域中进行直线检测,得到待处理直线集合;
[0221]
读数确定模块1050,被配置为基于所述待处理直线集合中的直线,确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置,以根据所述目标位置得到所述指针式仪表的读数。
[0222]
在本公开一些示例性的实施方式中,基于前述实施例,上述的读数确定模块1050包括第一确定单元、直线数量确定单元、过滤单元:
[0223]
所述第一确定单元被配置为根据所述仪表类型,确定出所述指针式仪表的指针边缘轮廓的两条直线之间的真实斜率差;
[0224]
所述直线数量确定单元被配置为计算待处理集合中的每条直线的斜率值,根据所述斜率值对所述直线进行分组,确定各组中的直线数量,其中,每组中的直线具有相同的斜率值;
[0225]
所述过滤单元被配置为根据各组中的直线数量和所述真实斜率差对所述待处理直线集合中的直线进行过滤,以确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置。
[0226]
在本公开一些示例性的实施方式中,基于前述实施例,所述过滤单元还被具体配置为:
[0227]
确定直线数量最多的两组直线对应的斜率值之间的第一斜率差;
[0228]
在所述第一斜率差与所述真实斜率差之间的关系满足第一预设条件时,确定直线数量最多的两组直线之间的交点;
[0229]
根据所述交点,确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置。
[0230]
在本公开一些示例性的实施方式中,基于前述实施例,所述过滤单元还被具体配置为:
[0231]
在所述第一斜率差与所述真实斜率差之间的关系不满足第一预设条件时,针对每组直线,分别确定其对应的斜率值与其它组直线对应的斜率值之间的第二斜率差,以得到第二斜率差集合;
[0232]
在所述第二斜率差集合中存在目标第二斜率差时,确定所述目标第二斜率差对应的两组直线之间的交点,其中,所述目标第二斜率差包括与所述真实斜率差之间的关系满足所述第一预设条件的第二斜率差;
[0233]
根据所述交点,确定出所述指针式仪表的指针顶点在所述表盘区域中的目标位置。
[0234]
在本公开一些示例性的实施方式中,基于前述实施例,所述第一约束条件确定模块1020还被具体配置为:
[0235]
获取所述量程范围中的最小量程值对应的刻度线在所述指针式仪表中的第一偏转角度;
[0236]
获取所述量程范围中的最大量程值对应的刻度线在所述指针式仪表中的第二偏转角度;
[0237]
根据所述第一偏转角度和所述第二偏转角度,为霍夫变换直线检测算法添加检测角度约束条件。
[0238]
在本公开一些示例性的实施方式中,基于前述实施例,所述表盘真实尺寸包括表盘在第一方向的第一真实尺寸和表盘在第二方向的第二真实尺寸,所述表盘检测尺寸包括表盘在第一方向的第一检测尺寸和表盘在第二方向的第二检测尺寸,其中,所述第一方向和所述第二方向垂直;
[0239]
所述比例关系包括所述指针真实长度和所述第一真实尺寸之间的第一比例关系以及所述指针真实长度和所述第二真实尺寸之间的第二比例关系;
[0240]
所述通过所述比例关系和所述表盘检测尺寸确定出所述霍夫变换直线检测算法对应的直线长度约束条件,包括:
[0241]
根据所述第一比例关系、所述第一检测尺寸、所述第二比例关系、所述第二检测尺寸确定出所述霍夫变换直线检测算法对应的直线长度约束条件。
[0242]
在本公开一些示例性的实施方式中,基于前述实施例,所述直线长度约束条件用于表征指针检测长度的取值范围,所述直线长度约束条件通过以下公式确定:
[0243][0244]
其中,β1表示第一比例平衡参数、β2表示第二比例平衡参数、l表示指针真实长度、w表示第一真实尺寸、h表示第二真实尺寸、w表示第一检测尺寸、h表示第二检测尺寸、l表示指针检测长度。
[0245]
在本公开一些示例性的实施方式中,基于前述实施例,所述读数确定模块1050还被具体配置为:
[0246]
在所述待识别图像中识别出所述指针式仪表的表盘中心、所述指针式仪表的量程范围中的最小量程值对应的第一刻度线;
[0247]
基于所述仪表类型,确定出所述指针式仪表的量程范围对应的最小量程值和最大量程值之间的第一夹角角度;
[0248]
根据所述表盘中心和所述目标位置的最短连线,确定出所述指针式仪表的指针射线;
[0249]
计算所述指针射线与所述第一刻度线之间的第二夹角角度;
[0250]
基于所述第二夹角角度与所述第一夹角角度之间的比值和所述指针式仪表的量程得到所述指针式仪表的读数。
[0251]
在本公开一些示例性的实施方式中,基于前述实施例,所述装置还包括数据存储模块,所述数据存储模块被配置为:
[0252]
对所述指针式仪表的读数进行加密处理,并将加密处理后的读数存储至区块链中。
[0253]
上述指针式仪表读数的识别装置中各模块的具体细节已经在对应的指针式仪表读数识别方法中进行了详细的描述,因此此处不再赘述。
[0254]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0255]
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/
或者将一个步骤分解为多个步骤执行等。
[0256]
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd

rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
[0257]
在本公开示例性实施方式中,还提供了一种能够实现上述方法的计算机存储介质。其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
[0258]
参考图11所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品1100,其可以采用便携式紧凑盘只读存储器(cd

rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0259]
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0260]
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0261]
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
[0262]
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0263]
此外,在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
[0264]
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
[0265]
下面参照图12来描述根据本公开的这种实施方式的电子设备800。图12显示的电子设备1200仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0266]
如图12所示,电子设备1200以通用计算设备的形式表现。电子设备1200的组件可以包括但不限于:上述至少一个处理单元1210、上述至少一个存储单元1220、连接不同系统组件(包括存储单元1220和处理单元1210)的总线1230以及显示单元1240。
[0267]
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1210执行,使得所述处理单元1210执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元1210可以执行如图1中所示的各个步骤。
[0268]
存储单元1220可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)12201和/或高速缓存存储单元12202,还可以进一步包括只读存储单元(rom)12203。
[0269]
存储单元1220还可以包括具有一组(至少一个)程序模块12205的程序/实用工具12204,这样的程序模块12205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0270]
总线1230可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
[0271]
电子设备1200也可以与一个或多个外部设备1300(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1200交互的设备通信,和/或与使得该电子设备1200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1250进行。并且,电子设备1200还可以通过网络适配器1260与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1260通过总线1230与电子设备1200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0272]
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd

rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
[0273]
此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
[0274]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其
他实施例。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜