CN107301412A - 一种基于图像处理的指针式仪表读数方法 - Google Patents

一种基于图像处理的指针式仪表读数方法 Download PDF

Info

Publication number
CN107301412A
CN107301412A CN201710317529.XA CN201710317529A CN107301412A CN 107301412 A CN107301412 A CN 107301412A CN 201710317529 A CN201710317529 A CN 201710317529A CN 107301412 A CN107301412 A CN 107301412A
Authority
CN
China
Prior art keywords
mrow
msub
mtd
mtr
represent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710317529.XA
Other languages
English (en)
Other versions
CN107301412B (zh
Inventor
高飞
葛粟
葛一粟
金鸣
金一鸣
卢书芳
张元鸣
陆佳炜
肖刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University of Technology ZJUT
Original Assignee
Zhejiang University of Technology ZJUT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University of Technology ZJUT filed Critical Zhejiang University of Technology ZJUT
Priority to CN201710317529.XA priority Critical patent/CN107301412B/zh
Publication of CN107301412A publication Critical patent/CN107301412A/zh
Application granted granted Critical
Publication of CN107301412B publication Critical patent/CN107301412B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/22Image preprocessing by selection of a specific region containing or referencing a pattern; Locating or processing of specific regions to guide the detection or recognition

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Image Analysis (AREA)
  • Other Investigation Or Analysis Of Materials By Electrical Means (AREA)

Abstract

本发明公开了基于图像处理的指针式仪表读数方法,它通过利用图像识别技术对指针式仪表图像进行标定、图像预处理、目标二次定位和指针识别的基于图像处理,实现仪表指针二次定位,提高仪表指针识别精度;实现自动仪表图像识别,具有精度高、速度快、操作简单和实时监测的特点,不但减少了效率低难管理的人工抄表过程,而且还减少因人工抄表造成的错误问题和管理问题,同时解决了人工抄表劳动强度大、效率低和可靠性差的问题。

Description

一种基于图像处理的指针式仪表读数方法
技术领域
本发明涉及一种基于图像处理的指针式仪表读数方法,尤其涉及利用图像识别技术对指针式仪表图像进行标定、图像预处理、目标二次定位和指针识别的基于图像处理的指针式仪表读数方法。
背景技术
指针式仪表由于其结构简单,价格低廉,维护方便,抗电磁干扰,可防冻防尘防水等特点,在社会生产行业受到广泛应用。但指针式仪表需要工作人员进行现场人工示数读取,而人工读数过程中存在的效率低、易疲劳、难管理等问题,已无法满足实际生产与工作需求。因此基于机器视觉的指针式仪表识别系统成为了一个较好的解决方案。
为了解决指针式仪表示数识别问题,国内外学术界、工业界提出了很多方案。其中与本发明较为接近的技术方案包括:王欣(智能变电站中指针式仪表图像自动识别方法[J].电气技术,2016,17(5):7-10.)该系统针对智能变电站中的指针式仪表实现自动化仪表识别,基于传统的角度法和距离法,提出了新的识别方法,提高了识别的精度;但该方法在仪表矫正步骤中,需要在图像背景噪音较少的情况下进行,在实际应用场景中较不稳定;该方法在指针指向角度识别上有较高的精度,但其主要针对细指针的准确识别,未能解决较粗指针(指针顶部较细,底部较粗)的识别问题。宋伟(基于指针区域特征的仪表读数识别算法[J].仪器仪表学报,2014(S2).)该方法针对仪表读数识别易受光照影响和较粗指针仪表识别率不高的问题,有较好的实验结果,且设计了高斯型同态滤波器,增强仪表识别对光照变化的适应性;在粗指针识面,该算法中通过计算指针图像旋转不同角度在横轴和纵轴上的投影,得到指针指向角度,针对粗指针识别问题,有较高的识别精度;但该方法中在噪音去除的问题上使用了剪影法,其将第一次仪表模板保存于模板库,对后续施工精度要求较高,或在仪表施工时容易造成的旋转问题而影响后续识别精度,不能在保证精度的同时降低施工的难度。发明专利(申请号:CN201510292646.6,名称:指针式仪表的读数识别方法及系统)公开了一种通过接收已输入的仪表类型,调整图像采集识别装置与仪表的相对位置,获取精确的表盘区域图像后,对该图像进行直接识别的指针式仪表识别方法;该方法避免了轮廓跟踪等复杂的图像分析技术,减少了在图像处理上的计算量,提高了识别效率,并且该系统可通过图像采集装置上的识别模块直接对图像进行处理,无需将采集图像发送到计算机进行处理,大大降低了数据传输时间;但由于该系统需要特定的安装装置,并且在采集装置上有图像识别模块,使得采集装置的制造成本较高;该系统的识别模块不能很好的解决粗指针的精确识别问题。
综上所述,当前指针式仪表处理方案中存在如下不足:
(1)多数方法对较粗指针识别的精度较差,但该种指针在实际中却有着较为广泛的应用,指针识别精度不能很好满足实际需求;
(2)方法使用中并未考虑到实际工程施工中造成误差的问题,系统鲁棒性不高,受外界因素响应易造成精度上的丢失;
(3)部分方法需要的硬件设备较多,系统制造成本过高。
粗指针(指针顶部较细,底部较粗)在社会生产行业中有着广泛的应用,在仪表识别方法中,提高该种指针的识别准确率十分重要,而表盘中的文字、图案或噪声会在不同的光照情况下对仪表识别结果造成不同程度的识别误差,在某些情况下,系统容易将干扰部分识别为表盘上的指针部分,造成系统的误检。而本发明中的目标二次定位策略,针对经过简单区域标定后的指针式仪表图像,能较好的识别图像中的指针,并计算指针指向刻度。
发明内容
为了实现指针式仪表的指针识别问题,本发明提供了一种利用图像识别技术对指针式仪表图像进行标定、图像预处理、目标二次定位和指针识别的基于图像处理的指针式仪表读数方法。
所述的基于图像处理的指针式仪表读数方法,其特征在于包括如下步骤:
步骤1:从仪表xml配置文件中读入事先标定的仪表图片文件名、仪表最小刻度值V1、仪表最小值识别区域R1=(x1,y1,W1,H1)、仪表最大刻度值V2、仪表最大值识别区域R2=(x2,y2,W2,H2)、表盘识别区域R3=(x3,y3,W3,H3)和屏蔽区域R4=(x4,y4,W4,H4),其中,(x1,y1)表示仪表最小值识别区域的左上角坐标,W1和H1分别表示仪表最小值识别区域的宽度和高度,(x2,y2)表示仪表最大值识别区域的左上角坐标,W2和H2分别表示仪表最大值识别区域的宽度和高度,(x3,y3)表示表盘识别区域的左上角坐标,W3和H3分别表示表盘识别区域的宽度和高度,(x4,y4)表示屏蔽区域的左上角坐标,W4和H4分别表示屏蔽区域的宽度和高度;
步骤2:读入当前指针式仪表图像F1
步骤3:计算仪表最小值和最大值刻度的斜率Kmin和Kmax,具体为:
步骤3.1:从步骤2)的图像F1中复制R1区域的子图像,设为Fmin
步骤3.2:将步骤3.1)的Fmin转化成灰度图,并采用OTSU方法进行二值化,然后采用Canny算子得到最小刻度的边缘图像FC1
步骤3.3:采用Hough方法进行直线检测,提取步骤3.2)的图像FC1中的线段,得到最小值线段集合L1={li|i=1,2,…,n1},li表示L1中第i条线段,n1表示线段数量;
步骤3.4:计算步骤3.3)的集合L1中线段的斜率和中点,得集合P1={(li,ki,xi,yi)|i=1,2,…,n1},ki表示线段li的斜率,(xi,yi)表示线段li中点的坐标;
步骤3.5:提取步骤3.4)的集合P1中的有效线段构成集合Peff={(lj,kj,xj,yj)|j=1,2,…,m1,(lj,kj,xj,yj)∈P1},m1表示有效线段的数量;其中线段满足条件:(1)αmin≤kj≤βmin,αmin和βmin为事先给定的斜率阈值下限和上限;(2)min(xj,|xj–W1|)≥γ·W1且min(yj,|yj–H1|)≥γ·H1,其中γ为事先给定的线段位置判断系数;
步骤3.6:根据xml配置文件中表盘识别区域R3和最小值区域信息R1,根据式(1)计算最小值识别区域中心到表盘区域中心相连得到的直线的斜率k1,其对应的角度为θ1
步骤3.7:从集合Peff中找到满足刻度区域估计的线段集合Leff={le|e=1,2,3,…,m2},le表示Leff中第e条线段,且满足:le∈Peff且|θ1–θe|≤θthr,θthr为事先给定的角度估计阈值,θe表示线段le与水平向右方向的夹角;m2表示集合Leff中的线段数量;
步骤3.8:求Leff中长度最长线段llmax的斜率,即为最小刻度的斜率Kmin
步骤3.9:根据步骤3.1到步骤3.8相同的方法计算仪表最大值刻度的斜率Kmax
步骤4:从步骤2)的图像F1中复制R3区域的子图像,称为表盘识别区域图像F3,如图6所示;
步骤5:对步骤4)的F3进行双边滤波,然后转化为灰度图,再采用OTSU方法进行二值化,并将其中R4区域信息删除,最后使用Canny算子得到表盘边缘信息图FC3
步骤6:进行指针粗定位,具体如下:
步骤6.1:在表盘边缘信息图FC3中查找连通域,得连通域最小外接矩形集合C1={(xi,yi,wi,hi)|i=1,2,3,…,n3},其中(xi,yi)表示最小外接矩形左上角的坐标,wi和hi分别表示最小外接矩形的宽度和高度,n3表示连通域数量,矩形中点坐标表示为(xci,yci):
步骤6.2:提取仪表量程中的连通域,具体如下:找到集合C1中的有效外接矩形并构成集合Cin={(xj,yj,wj,hj)|j=1,2,3,…,nin},Cin中矩形须满足条件:(1)xcj<Xpc且ycj≥Kmin·(xcj–Xpc)+Ypc,或xcj≥Xpc且ycj≥Kmax·(xcj–Xpc)+Ypc;(2)Lpcjc·W3,Lpcj表示Cin中第j个外接矩形的中心和图像F3的中心的距离,根据式(4)计算:
其中,λc为事先给定的距离判断系数;nin表示集合Cin中的外接矩形数量;(Xpc,Ypc)表示图像F3中心的坐标;
步骤6.3:在集合Cin中找到面积最大的外接矩形,记为rmax=(xmax,ymax,wmax,hmax),(xmax,ymax)为矩形rmax左上角的坐标,wmax和hmax分别为矩形rmax的宽度和高度;
步骤6.4:根据式(5)确定矩形rmax在图像F3中的象限qr
步骤7:对指针进行精确定位,计算指针所在直线的斜率Kp
步骤7.1:从图像F3中复制矩形rmax区域的子图像F5
步骤7.2:根据步骤3.2中的相同方法对图像F5进行图像预处理,得定位后的边缘图像FC5
步骤7.3:采用Hough变换方法对图像FC5进行直线检测,得到指针线段集合LP={li|i=1,2,…,np},其中,li表示LP中第i条线段,np表示检测出的线段数量;
步骤7.4:对LP中线段进行聚类,得到满足式(6)~(10)的q个子集的集合L={Lv|v=1,2,3,…,q},其中第v个子集为Lv={lvi|i=1,2,3,…,qv},qv表示子集Lv中的元素个数,
且当i≠j时
vivj|≤θ0 (7)
uivj|>θ0,u≠v (8)
dis(lvi,lvj)≤λ0,lvi∈Lv,lvj∈Lv (9)
dis(lui,lvj)>λ0,lui∈Lu,lvj∈Lv (10)
其中,θvi表示第v个子集中第i条线段lvi与水平向右方向的夹角,θvj表示第v个子集中第j条线段lvj与水平向右方向的夹角,θui表示第u个子集中第i条线段lui与水平向右方向的夹角,θ0表示事先给定的角度阈值,λ0表示事先给定的线段距离判断阈值;表示线段lui中点到线段lvj的垂直距离,表示线段lvj中点到线段lui的垂直距离;
步骤7.5:按如下步骤进行线段合并:
步骤7.5.1:将Lv中元素按线段最左点的横坐标按从小到大进行排序;对Lv中线段lv1和lv2进行合并,令合并后的线段为lvr,其中,kvr和bvr分别表示lvr的斜率和截距,分别表示线段lvr的左右两个端点的坐标,根据斜率kvr的取值采用式(14)或(15)进行计算;从Lv中删除线段lv1和lv2,并将lvr加入到集合Lv中;
其中,kv1和kv2分别表示线段lv1和lv2的斜率,θv1表示lv1与水平向右方向的夹角,θv2表示lv2与水平向右方向的夹角,dv1和dv2分别表示线段lv1和lv2的长度,bv1和bv2分别表示lv1和lv2的截距;表示lv1的最左点,表示线段lv1和lv2上所有点中的最右点;重复这一过程直到Lv中无线段可合并,得集合Lv合并后线段lv
步骤7.5.2:得到集合Lafter={lv|v=1,2,3,…,q},其中lv即为子集Lv通过步骤7.5.1进行线段合并后得到的线段;
步骤7.6:从Lafter中筛选出长线段并构建集合Llong={(x1j,y1j,x2j,y2j,kj)|j=1,2,3,…,qL},qL表示Llong中的线段数量,其中的长线段满足:(x1j-x2j)2+(y1j-y2j)2≥(λlong·wmax)2,λlong为事先给定的长线段判断系数,(x1j,y1j)表示第j条长线段的起点坐标,(x2j,y2j)表示第j条长线段的终点坐标;kj表示第j条长线段的斜率;
步骤7.7:计算指针所在直线斜率Kp,即长线段集合Llong中的平均斜率:
步骤8:计算指针指向刻度和最小量程之间的角度θ:
步骤9:指针式仪表图像F1中的读数为V:
通过采用上述技术,与现有技术相比,本发明的有益效果如下:本发明通过利用图像识别技术对指针式仪表图像进行标定、图像预处理、目标二次定位和指针识别的基于图像处理,实现仪表指针二次定位,提高仪表指针识别精度;实现自动仪表图像识别,具有精度高、速度快、操作简单和实时监测的特点,不但减少了效率低难管理的人工抄表过程,而且还减少因人工抄表造成的错误问题和管理问题,同时解决了人工抄表劳动强度大、效率低和可靠性差的问题。
附图说明
图1为本发明的实施样例选取的指针式仪表正面拍摄图像;
图2为本发明的经过步骤3.1得到的最小值识别区域图像;
图3为本发明的经过步骤3.2进行Canny算子计算后的最小值识别区域边缘图像;
图4为本发明的经过步骤3.3进行Hough直线提取后的最小值识别区域图像;
图5为本发明的经过步骤3.7直线筛选后的最小值区域图像;
图6为本发明的经过步骤4得到的表盘识别区域图像;
图7为本发明的经过步骤5图像预处理后的表盘边缘信息图像;
图8为本发明的经过步骤6.2连通域提取后的最小外接矩形图像;
图9为本发明的经过步骤7.1粗定位后的指针区域图像;
图10为本发明的经过步骤7.2预处理后的指针区域边缘图像;
图11为本发明的经过步骤7.3直线提取后的指针区域图像;
图12为本发明的经过步骤7.5直线合并后的指针区域图像;
图13为本发明的经过步骤7.6长直线筛选后的指针区域图像。
具体实施方式
下面结合实施实例来详细阐述本发明,但本发明的保护范围并不仅限于此:
如图1-13所示,本发明的基于图像处理的指针式仪表读数方法,包括如下步骤:
步骤1:从仪表xml配置文件中读入事先标定的仪表图片文件名、仪表最小刻度值V1、仪表最小值识别区域R1=(x1,y1,W1,H1)、仪表最大刻度值V2、仪表最大值识别区域R2=(x2,y2,W2,H2)、表盘识别区域R3=(x3,y3,W3,H3)和屏蔽区域R4=(x4,y4,W4,H4),其中,(x1,y1)表示仪表最小值识别区域的左上角坐标,W1和H1分别表示仪表最小值识别区域的宽度和高度,(x2,y2)表示仪表最大值识别区域的左上角坐标,W2和H2分别表示仪表最大值识别区域的宽度和高度,(x3,y3)表示表盘识别区域的左上角坐标,W3和H3分别表示表盘识别区域的宽度和高度,(x4,y4)表示屏蔽区域的左上角坐标,W4和H4分别表示屏蔽区域的宽度和高度;
步骤2:读入当前指针式仪表图像F1,如图1所示;
步骤3:计算仪表最小值和最大值刻度的斜率Kmin和Kmax,具体为:
步骤3.1:从步骤2)的图像F1中复制R1区域的子图像,设为Fmin,为最小值识别区域图像,,如图2所示;
步骤3.2:将步骤3.1)的Fmin转化成灰度图,并采用OTSU方法进行二值化,然后采用Canny算子得到最小刻度的边缘图像FC1,如图3所示;
步骤3.3:采用Hough方法进行直线检测,提取步骤3.2)的图像FC1中的线段,得到最小值线段集合L1={li|i=1,2,…,n1},li表示L1中第i条线段,n1表示线段数量,经过该步骤进行Hough直线提取后的最小值识别区域图像如图4所示;
步骤3.4:计算步骤3.3)的集合L1中线段的斜率和中点,得集合P1={(li,ki,xi,yi)|i=1,2,…,n1},ki表示线段li的斜率,(xi,yi)表示线段li中点的坐标;
步骤3.5:提取步骤3.4)的集合P1中的有效线段构成集合Peff={(lj,kj,xj,yj)|j=1,2,…,m1,(lj,kj,xj,yj)∈P1},m1表示有效线段的数量;其中线段满足条件:(1)αmin≤kj≤βmin,αmin和βmin为事先给定的斜率阈值下限和上限;(2)min(xj,|xj–W1|)≥γ·W1且min(yj,|yj–H1|)≥γ·H1,其中γ为事先给定的线段位置判断系数,在本实例中,γ=0.2;
步骤3.6:根据xml配置文件中表盘识别区域R3和最小值区域信息R1,根据式(1)计算最小值识别区域中心到表盘区域中心相连得到的直线的斜率k1,其对应的角度为θ1
步骤3.7:从集合Peff中找到满足刻度区域估计的线段集合Leff={le|e=1,2,3,…,m2},le表示Leff中第e条线段,且满足:le∈Peff且|θ1–θe|≤θthr,θthr为事先给定的角度估计阈值,θe表示线段le与水平向右方向的夹角;m2表示集合Leff中的线段数量,在本实例中,θthr=5°,经过该步骤直线筛选后的最小值区域图像如图5所示;
步骤3.8:求Leff中长度最长线段llmax的斜率,即为最小刻度的斜率Kmin
步骤3.9:根据步骤3.1到步骤3.8相同的方法计算得仪表最大值刻度的斜率Kmax
步骤4:从图像F1中复制R3区域的子图像,称为表盘识别区域图像F3,如图6所示;
步骤5:对F3进行双边滤波,然后转化为灰度图,再采用OTSU方法进行二值化,并将其中R4区域信息删除,最后使用Canny算子得到表盘边缘信息图FC3,如图7所示;
步骤6:进行指针粗定位,具体如下:
步骤6.1:在图像FC3中查找连通域,得连通域最小外接矩形集合C1={(xi,yi,wi,hi)|i=1,2,3,…,n3},其中(xi,yi)表示最小外接矩形左上角的坐标,wi和hi分别表示最小外接矩形的宽度和高度,n3表示连通域数量,矩形中点坐标表示为(xci,yci):
步骤6.2:提取仪表量程中的连通域,具体如下:找到集合C1中的有效外接矩形并构成集合Cin={(xj,yj,wj,hj)|j=1,2,3,…,nin},Cin中矩形须满足条件:(1)xcj<Xpc且ycj≥Kmin·(xcj–Xpc)+Ypc,或xcj≥Xpc且ycj≥Kmax·(xcj–Xpc)+Ypc;(2)Lpcjc·W3,Lpcj表示Cin中第j个外接矩形的中心和图像F3中心的距离,根据式(4)计算:
其中,λc为事先给定的距离判断系数,在本实例中,λc=0.4;nin表示集合Cin中的外接矩形数量;(Xpc,Ypc)表示图像F3的中心的坐标,经过该步骤连通域提取后的最小外接矩形图像如图8所示;
步骤6.3:在集合Cin中找到面积最大的外接矩形,记为rmax=(xmax,ymax,wmax,hmax),(xmax,ymax)为矩形rmax左上角的坐标,wmax和hmax分别为矩形rmax的宽度和高度;
步骤6.4:根据式(5)确定矩形rmax在图像F3中的象限qr
步骤7:对指针进行精确定位,粗定位后的指针区域图像如图9所示,计算指针所在直线的斜率Kp
步骤7.1:从图像F3中复制矩形rmax区域的子图像F5
步骤7.2:根据步骤3.2中的相同方法对图像F5进行图像预处理,得定位后的边缘图像FC5,如图10所示;
步骤7.3:采用Hough变换方法对图像FC5进行直线检测,得到指针线段集合LP={li|i=1,2,…,np},其中,li表示第i条线段,np表示检测出的线段数量,直线提取后的指针区域图像如图11所示;
步骤7.4:对LP中线段进行聚类,得到满足式(6)~(10)的q个子集的集合L={Lv|v=1,2,3,…,q},其中第v个子集为Lv={lvi|i=1,2,3,…,qv},qv表示子集Lv中的元素个数,
且当i≠j时
vivj|≤θ0 (7)
uivj|>θ0,u≠v (8)
dis(lvi,lvj)≤λ0,lvi∈Lv,lvj∈Lv (9)
dis(lui,lvj)>λ0,lui∈Lu,lvj∈Lv (10)
其中,θvi表示第v个子集中第i条线段lvi与水平向右方向的夹角,θvj表示第v个子集中第j条线段lvj与水平向右方向的夹角,θui表示第u个子集中第i条线段lui与水平向右方向的夹角,θ0表示事先给定的角度阈值,λ0表示事先给定的线段距离判断阈值,在本实例中,θ0=π/45,λ0=1;表示线段lui中点到线段lvj的垂直距离,表示线段lvj中点到线段lui的垂直距离;
步骤7.5:按如下步骤进行线段合并:
步骤7.5.1:将Lv中元素按线段最左点的横坐标按从小到大进行排序;对Lv中线段lv1和lv2进行合并,令合并后的线段为lvr,其中,kvr和bvr分别表示lvr的斜率和截距,分别表示线段lvr的左右两个端点的坐标,根据斜率kvr的取值采用式(14)或(15)进行计算;从Lv中删除线段lv1和lv2,并将lvr加入到集合Lv中;
其中,kv1和kv2分别表示线段lv1和lv2的斜率,θv1表示lv1与水平向右方向的夹角,θv2表示lv2与水平向右方向的夹角,dv1和dv2分别表示线段lv1和lv2的长度,bv1和bv2分别表示lv1和lv2的截距;表示lv1的最左点,表示线段lv1和lv2上所有点中的最右点;重复这一过程直到Lv中无线段可合并,得集合Lv合并后线段lv
步骤7.5.2:得到集合Lafter={lv|v=1,2,3,…,q},其中lv即为子集Lv通过步骤7.5.1进行线段合并后得到的线段,直线合并后的指针区域图像如图12所示;
步骤7.6:从Lafter中筛选出长线段并构建集合Llong={(x1j,y1j,x2j,y2j,kj)|j=1,2,3,…,qL},qL表示Llong中的线段数量,其中的长线段满足:(x1j-x2j)2+(y1j-y2j)2≥(λlong·wmax)2,λlong为事先给定的长线段判断系数,在本实例中,λlong=0.8;(x1j,y1j)表示第j条长线段的起点坐标,(x2j,y2j)表示第j条长线段的终点坐标;kj表示第j条长线段的斜率,长直线筛选后的指针区域图像如图13所示;
步骤7.7:计算指针所在直线斜率Kp,即长线段集合Llong中的平均斜率:
步骤8:计算指针指向刻度和最小量程之间的角度θ:
步骤9:指针式仪表图像F1中的读数为V:
本说明书实施例所述的内容仅仅是对发明构思的实现形式的列举,本发明的保护范围的不应当被视为仅限于实施例所陈述的具体形式,本发明的保护范围也及于本领域技术人员根据本发明构思所能够想到的等同技术手段。

Claims (4)

1.基于图像处理的指针式仪表读数方法,其特征在于包括如下步骤:
步骤1:从仪表xml配置文件中读入事先标定的仪表图片文件名、仪表最小刻度值V1、仪表最小值识别区域R1=(x1,y1,W1,H1)、仪表最大刻度值V2、仪表最大值识别区域R2=(x2,y2,W2,H2)、表盘识别区域R3=(x3,y3,W3,H3)和屏蔽区域R4=(x4,y4,W4,H4),其中,(x1,y1)表示仪表最小值识别区域的左上角坐标,W1和H1分别表示仪表最小值识别区域的宽度和高度,(x2,y2)表示仪表最大值识别区域的左上角坐标,W2和H2分别表示仪表最大值识别区域的宽度和高度,(x3,y3)表示表盘识别区域的左上角坐标,W3和H3分别表示表盘识别区域的宽度和高度,(x4,y4)表示屏蔽区域的左上角坐标,W4和H4分别表示屏蔽区域的宽度和高度;
步骤2:读入当前指针式仪表图像F1
步骤3:计算仪表最小值和最大值刻度的斜率Kmin和Kmax
步骤4:从步骤2)的图像F1中复制R3区域的子图像,称为表盘识别区域图像F3
步骤5:对步骤4)的F3进行双边滤波,然后转化为灰度图,再采用OTSU方法进行二值化,并将其中R4区域信息删除,最后使用Canny算子得到表盘边缘信息图FC3
步骤6:进行指针粗定位;
步骤7:对指针进行精确定位,计算指针所在直线的斜率Kp
步骤8:计算指针指向刻度和最小量程之间的角度θ:
<mrow> <mi>&amp;theta;</mi> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>&amp;pi;</mi> <mo>-</mo> <msup> <mi>tan</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mrow> <mo>(</mo> <msub> <mi>K</mi> <mi>p</mi> </msub> <mo>)</mo> </mrow> <mo>+</mo> <msup> <mi>tan</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mrow> <mo>(</mo> <msub> <mi>K</mi> <mi>min</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>i</mi> <mi>f</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>q</mi> <mi>r</mi> </msub> <mo>=</mo> <mn>1</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msup> <mi>tan</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mrow> <mo>(</mo> <msub> <mi>K</mi> <mi>p</mi> </msub> <mo>)</mo> </mrow> <mo>+</mo> <msup> <mi>tan</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mrow> <mo>(</mo> <msub> <mi>K</mi> <mi>min</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>i</mi> <mi>f</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>q</mi> <mi>r</mi> </msub> <mo>=</mo> <mn>2</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <msup> <mi>tan</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mrow> <mo>(</mo> <msub> <mi>K</mi> <mi>p</mi> </msub> <mo>)</mo> </mrow> <mo>+</mo> <msup> <mi>tan</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mrow> <mo>(</mo> <msub> <mi>K</mi> <mi>min</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>i</mi> <mi>f</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>q</mi> <mi>r</mi> </msub> <mo>=</mo> <mn>3</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>&amp;pi;</mi> <mo>+</mo> <msup> <mi>tan</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mrow> <mo>(</mo> <msub> <mi>K</mi> <mi>p</mi> </msub> <mo>)</mo> </mrow> <mo>+</mo> <msup> <mi>tan</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mrow> <mo>(</mo> <msub> <mi>K</mi> <mi>min</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>i</mi> <mi>f</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>q</mi> <mi>r</mi> </msub> <mo>=</mo> <mn>4</mn> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>17</mn> <mo>)</mo> </mrow> </mrow>
步骤9:指针式仪表图像F1中的读数为V:
<mrow> <mi>V</mi> <mo>=</mo> <mfrac> <mi>&amp;theta;</mi> <mrow> <mo>(</mo> <msup> <mi>tan</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mo>(</mo> <msub> <mi>K</mi> <mrow> <mi>m</mi> <mi>i</mi> <mi>n</mi> </mrow> </msub> <mo>)</mo> <mo>+</mo> <msup> <mi>tan</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mo>(</mo> <msub> <mi>K</mi> <mrow> <mi>m</mi> <mi>a</mi> <mi>x</mi> </mrow> </msub> <mo>)</mo> <mo>+</mo> <mi>&amp;pi;</mi> <mo>)</mo> </mrow> </mfrac> <mo>&amp;CenterDot;</mo> <mrow> <mo>(</mo> <msub> <mi>V</mi> <mn>2</mn> </msub> <mo>-</mo> <msub> <mi>V</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>V</mi> <mn>1</mn> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>18</mn> <mo>)</mo> </mrow> <mo>.</mo> </mrow>
2.根据权利要求1所述的基于图像处理的指针式仪表读数方法,其特征在于步骤3)中的计算仪表最小值和最大值刻度的斜率Kmin和Kmax,具体为:
步骤3.1:从步骤2)的图像F1中复制R1区域的子图像,设为Fmin
步骤3.2:将步骤3.1)的Fmin转化成灰度图,并采用OTSU方法进行二值化,然后采用Canny算子得到最小刻度的边缘图像FC1
步骤3.3:采用Hough方法进行直线检测,提取步骤3.2)的图像FC1中的线段,得到最小值线段集合L1={li|i=1,2,…,n1},li表示L1中第i条线段,n1表示线段数量;
步骤3.4:计算步骤3.3)的集合L1中线段的斜率和中点,得集合P1={(li,ki,xi,yi)|i=1,2,…,n1},ki表示线段li的斜率,(xi,yi)表示线段li中点的坐标;
步骤3.5:提取步骤3.4)的集合P1中的有效线段构成集合Peff={(lj,kj,xj,yj)|j=1,2,…,m1,(lj,kj,xj,yj)∈P1},m1表示有效线段的数量;其中线段满足条件:(1)αmin≤kj≤βmin,αmin和βmin为事先给定的斜率阈值下限和上限;(2)min(xj,|xj–W1|)≥γ·W1且min(yj,|yj–H1|)≥γ·H1,其中γ为事先给定的线段位置判断系数;
步骤3.6:根据xml配置文件中表盘识别区域R3和最小值区域信息R1,根据式(1)计算最小值识别区域中心到表盘区域中心相连得到的直线的斜率k1,其对应的角度为θ1
<mrow> <msub> <mi>k</mi> <mn>1</mn> </msub> <mo>=</mo> <mfrac> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mn>3</mn> </msub> <mo>-</mo> <msub> <mi>y</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>H</mi> <mn>3</mn> </msub> <mo>-</mo> <msub> <mi>H</mi> <mn>1</mn> </msub> </mrow> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mn>3</mn> </msub> <mo>-</mo> <msub> <mi>x</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>W</mi> <mn>3</mn> </msub> <mo>-</mo> <msub> <mi>W</mi> <mn>1</mn> </msub> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>
步骤3.7:从集合Peff中找到满足刻度区域估计的线段集合Leff={le|e=1,2,3,…,m2},le表示Leff中第e条线段,且满足:le∈Peff且|θ1–θe|≤θthr,θthr为事先给定的角度估计阈值,θe表示线段le与水平向右方向的夹角;m2表示集合Leff中的线段数量;
步骤3.8:求Leff中长度最长线段llmax的斜率,即为最小刻度的斜率Kmin
步骤3.9:根据步骤3.1到步骤3.8相同的方法计算仪表最大值刻度的斜率Kmax
3.根据权利要求1所述的基于图像处理的指针式仪表读数方法,其特征在于步骤6)中对进行指针粗定位具体过程如下:
步骤6.1:在表盘边缘信息图FC3中查找连通域,得连通域最小外接矩形集合C1={(xi,yi,wi,hi)|i=1,2,3,…,n3},其中(xi,yi)表示最小外接矩形左上角的坐标,wi和hi分别表示最小外接矩形的宽度和高度,n3表示连通域数量,矩形中点坐标表示为(xci,yci):
<mrow> <msub> <mi>x</mi> <mrow> <mi>c</mi> <mi>i</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>+</mo> <mfrac> <msub> <mi>w</mi> <mi>i</mi> </msub> <mn>2</mn> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>
<mrow> <msub> <mi>y</mi> <mrow> <mi>c</mi> <mi>i</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>+</mo> <mfrac> <msub> <mi>h</mi> <mi>i</mi> </msub> <mn>2</mn> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow>
步骤6.2:提取仪表量程中的连通域,具体如下:找到集合C1中的有效外接矩形并构成集合Cin={(xj,yj,wj,hj)|j=1,2,3,…,nin},Cin中矩形须满足条件:(1)xcj<Xpc且ycj≥Kmin·(xcj–Xpc)+Ypc,或xcj≥Xpc且ycj≥Kmax·(xcj–Xpc)+Ypc;(2)Lpcjc·W3,Lpcj表示Cin中第j个外接矩形的中心和图像F3的中心的距离,根据式(4)计算:
<mrow> <msub> <mi>L</mi> <mrow> <mi>p</mi> <mi>c</mi> <mi>j</mi> </mrow> </msub> <mo>=</mo> <msqrt> <mrow> <msup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mrow> <mi>c</mi> <mi>j</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>X</mi> <mrow> <mi>p</mi> <mi>c</mi> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mrow> <mi>c</mi> <mi>j</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>Y</mi> <mrow> <mi>p</mi> <mi>c</mi> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow> </msqrt> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>
其中,λc为事先给定的距离判断系数;nin表示集合Cin中的外接矩形数量;(Xpc,Ypc)表示图像F3中心的坐标;
步骤6.3:在集合Cin中找到面积最大的外接矩形,记为rmax=(xmax,ymax,wmax,hmax),(xmax,ymax)为矩形rmax左上角的坐标,wmax和hmax分别为矩形rmax的宽度和高度;
步骤6.4:根据式(5)确定矩形rmax在图像F3中的象限qr
<mrow> <msub> <mi>q</mi> <mi>r</mi> </msub> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mn>1</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>i</mi> <mi>f</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>x</mi> <mi>max</mi> </msub> <mo>+</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <mo>&amp;CenterDot;</mo> <msub> <mi>w</mi> <mi>max</mi> </msub> <mo>&gt;</mo> <msub> <mi>X</mi> <mrow> <mi>p</mi> <mi>c</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>y</mi> <mi>max</mi> </msub> <mo>+</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <mo>&amp;CenterDot;</mo> <msub> <mi>h</mi> <mi>max</mi> </msub> <mo>&lt;</mo> <msub> <mi>Y</mi> <mrow> <mi>p</mi> <mi>c</mi> </mrow> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>i</mi> <mi>f</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>x</mi> <mi>max</mi> </msub> <mo>+</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <mo>&amp;CenterDot;</mo> <msub> <mi>w</mi> <mi>max</mi> </msub> <mo>&lt;</mo> <msub> <mi>X</mi> <mrow> <mi>p</mi> <mi>c</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>y</mi> <mi>max</mi> </msub> <mo>+</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <mo>&amp;CenterDot;</mo> <msub> <mi>h</mi> <mi>max</mi> </msub> <mo>&lt;</mo> <msub> <mi>Y</mi> <mrow> <mi>p</mi> <mi>c</mi> </mrow> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>3</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>i</mi> <mi>f</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>x</mi> <mi>max</mi> </msub> <mo>+</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <mo>&amp;CenterDot;</mo> <msub> <mi>w</mi> <mi>max</mi> </msub> <mo>&lt;</mo> <msub> <mi>X</mi> <mrow> <mi>p</mi> <mi>c</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>y</mi> <mi>max</mi> </msub> <mo>+</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <mo>&amp;CenterDot;</mo> <msub> <mi>h</mi> <mi>max</mi> </msub> <mo>&gt;</mo> <msub> <mi>Y</mi> <mrow> <mi>p</mi> <mi>c</mi> </mrow> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>4</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>i</mi> <mi>f</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>x</mi> <mi>max</mi> </msub> <mo>+</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <mo>&amp;CenterDot;</mo> <msub> <mi>w</mi> <mi>max</mi> </msub> <mo>&gt;</mo> <msub> <mi>X</mi> <mrow> <mi>p</mi> <mi>c</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>y</mi> <mi>max</mi> </msub> <mo>+</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <mo>&amp;CenterDot;</mo> <msub> <mi>h</mi> <mi>max</mi> </msub> <mo>&gt;</mo> <msub> <mi>Y</mi> <mrow> <mi>p</mi> <mi>c</mi> </mrow> </msub> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> <mo>.</mo> </mrow>
4.根据权利要求1所述的基于图像处理的指针式仪表读数方法,其特征在于步骤7)中计算指针所在直线的斜率Kp的具体过程为:
步骤7.1:从图像F3中复制矩形rmax区域的子图像F5
步骤7.2:根据步骤3.2中的相同方法对图像F5进行图像预处理,得定位后的边缘图像FC5
步骤7.3:采用Hough变换方法对图像FC5进行直线检测,得到指针线段集合LP={li|i=1,2,…,np},其中,li表示LP中第i条线段,np表示检测出的线段数量;
步骤7.4:对LP中线段进行聚类,得到满足式(6)~(10)的q个子集的集合L={Lv|v=1,2,3,…,q},其中第v个子集为Lv={lvi|i=1,2,3,…,qv},qv表示子集Lv中的元素个数,
且当i≠j时Li∩Lj=φ,Li∈L,Lj∈L,
vivj|≤θ0 (7)
uivj|>θ0,u≠v (8)
dis(lvi,lvj)≤λ0,lvi∈Lv,lvj∈Lv (9)
dis(lui,lvj)>λ0,lui∈Lu,lvj∈Lv (10)
<mrow> <mi>d</mi> <mi>i</mi> <mi>s</mi> <mrow> <mo>(</mo> <msub> <mi>l</mi> <mrow> <mi>u</mi> <mi>i</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>l</mi> <mrow> <mi>v</mi> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mi>m</mi> <mi>i</mi> <mi>n</mi> <mrow> <mo>(</mo> <msub> <mi>d</mi> <mrow> <msub> <mi>l</mi> <mrow> <mi>u</mi> <mi>i</mi> </mrow> </msub> <mo>&amp;RightArrow;</mo> <msub> <mi>l</mi> <mrow> <mi>v</mi> <mi>j</mi> </mrow> </msub> </mrow> </msub> <mo>,</mo> <msub> <mi>d</mi> <mrow> <msub> <mi>l</mi> <mrow> <mi>v</mi> <mi>j</mi> </mrow> </msub> <mo>&amp;RightArrow;</mo> <msub> <mi>l</mi> <mrow> <mi>u</mi> <mi>i</mi> </mrow> </msub> </mrow> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>11</mn> <mo>)</mo> </mrow> </mrow>
其中,θvi表示第v个子集中第i条线段lvi与水平向右方向的夹角,θvj表示第v个子集中第j条线段lvj与水平向右方向的夹角,θui表示第u个子集中第i条线段lui与水平向右方向的夹角,θ0表示事先给定的角度阈值,λ0表示事先给定的线段距离判断阈值;表示线段lui中点到线段lvj的垂直距离,表示线段lvj中点到线段lui的垂直距离;
步骤7.5:按如下步骤进行线段合并:
步骤7.5.1:将Lv中元素按线段最左点的横坐标按从小到大进行排序;对Lv中线段lv1和lv2进行合并,令合并后的线段为lvr,其中,kvr和bvr分别表示lvr的斜率和截距,分别表示线段lvr的左右两个端点的坐标,根据斜率kvr的取值采用式(14)或(15)进行计算;从Lv中删除线段lv1和lv2,并将lvr加入到集合Lv中;
<mrow> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> </msub> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>t</mi> <mi>a</mi> <mi>n</mi> <mrow> <mo>(</mo> <msub> <mi>&amp;theta;</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mo>,</mo> </mrow> </mtd> <mtd> <mtable> <mtr> <mtd> <mrow> <mi>i</mi> <mi>f</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>&amp;theta;</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> </msub> <mo>=</mo> <msub> <mi>&amp;theta;</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> </msub> </mrow> </mtd> </mtr> </mtable> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>tan</mi> <mrow> <mo>(</mo> <mfrac> <mrow> <msub> <mi>&amp;theta;</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> </msub> <mo>&amp;CenterDot;</mo> <msub> <mi>d</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msub> <mi>&amp;theta;</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> </msub> <mo>&amp;CenterDot;</mo> <msub> <mi>d</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> </msub> </mrow> <mrow> <msub> <mi>d</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msub> <mi>d</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> </msub> </mrow> </mfrac> <mo>)</mo> </mrow> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>e</mi> <mi>l</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>12</mn> <mo>)</mo> </mrow> </mrow>
<mrow> <msub> <mi>b</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> </msub> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mfrac> <mrow> <msub> <mi>b</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> </msub> <mo>&amp;CenterDot;</mo> <msub> <mi>d</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msub> <mi>b</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> </msub> <mo>&amp;CenterDot;</mo> <msub> <mi>d</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> </msub> </mrow> <mrow> <msub> <mi>d</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msub> <mi>d</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> </msub> </mrow> </mfrac> <mo>,</mo> </mrow> </mtd> <mtd> <mtable> <mtr> <mtd> <mrow> <mi>i</mi> <mi>f</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> </msub> <mo>=</mo> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> </msub> </mrow> </mtd> </mtr> </mtable> </mtd> </mtr> <mtr> <mtd> <mrow> <mfrac> <mrow> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> </msub> <mo>&amp;CenterDot;</mo> <msub> <mi>b</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> </msub> <mo>&amp;CenterDot;</mo> <msub> <mi>b</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> </msub> </mrow> <mrow> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> </msub> </mrow> </mfrac> <mo>-</mo> <mfrac> <mrow> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> </msub> <mo>&amp;CenterDot;</mo> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>b</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> </msub> </mrow> </mfrac> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>e</mi> <mi>l</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>13</mn> <mo>)</mo> </mrow> </mrow>
<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msubsup> <mi>x</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> <mi>c</mi> </msubsup> <mo>=</mo> <msubsup> <mi>x</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> <mi>c</mi> </msubsup> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msubsup> <mi>x</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> <mi>d</mi> </msubsup> <mo>=</mo> <msubsup> <mi>x</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> <mi>d</mi> </msubsup> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msubsup> <mi>y</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> <mi>c</mi> </msubsup> <mo>=</mo> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> </msub> <mo>&amp;CenterDot;</mo> <msubsup> <mi>x</mi> <mrow> <mi>v</mi> <mi>l</mi> </mrow> <mi>c</mi> </msubsup> <mo>+</mo> <msub> <mi>b</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msubsup> <mi>y</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> <mi>d</mi> </msubsup> <mo>=</mo> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> </msub> <mo>&amp;CenterDot;</mo> <msubsup> <mi>x</mi> <mrow> <mi>v</mi> <mi>l</mi> </mrow> <mi>d</mi> </msubsup> <mo>+</mo> <msub> <mi>b</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> </msub> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> </msub> <mo>&amp;Element;</mo> <mrow> <mo>(</mo> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>14</mn> <mo>)</mo> </mrow> </mrow> 3
<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msubsup> <mi>y</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> <mi>c</mi> </msubsup> <mo>=</mo> <msubsup> <mi>y</mi> <mrow> <mi>v</mi> <mn>1</mn> </mrow> <mi>c</mi> </msubsup> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msubsup> <mi>y</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> <mi>d</mi> </msubsup> <mo>=</mo> <msubsup> <mi>y</mi> <mrow> <mi>v</mi> <mn>2</mn> </mrow> <mi>d</mi> </msubsup> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msubsup> <mi>x</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> <mi>c</mi> </msubsup> <mo>=</mo> <mfrac> <mrow> <msubsup> <mi>y</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> <mi>c</mi> </msubsup> <mo>-</mo> <msub> <mi>b</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> </msub> </mrow> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> </msub> </mfrac> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msubsup> <mi>x</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> <mi>d</mi> </msubsup> <mo>=</mo> <mfrac> <mrow> <msubsup> <mi>y</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> <mi>d</mi> </msubsup> <mo>-</mo> <msub> <mi>b</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> </msub> </mrow> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> </msub> </mfrac> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <msub> <mi>k</mi> <mrow> <mi>v</mi> <mi>r</mi> </mrow> </msub> <mo>&amp;Element;</mo> <mrow> <mo>(</mo> <mo>-</mo> <mi>&amp;infin;</mi> <mo>,</mo> <mo>-</mo> <mn>1</mn> <mo>&amp;rsqb;</mo> <mo>&amp;cup;</mo> <mo>&amp;lsqb;</mo> <mn>1</mn> <mo>,</mo> <mo>+</mo> <mi>&amp;infin;</mi> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>15</mn> <mo>)</mo> </mrow> </mrow>
其中,kv1和kv2分别表示线段lv1和lv2的斜率,θv1表示lv1与水平向右方向的夹角,θv2表示lv2与水平向右方向的夹角,dv1和dv2分别表示线段lv1和lv2的长度,bv1和bv2分别表示lv1和lv2的截距;表示lv1的最左点,表示线段lv1和lv2上所有点中的最右点;重复这一过程直到Lv中无线段可合并,得集合Lv合并后线段lv
步骤7.5.2:得到集合Lafter={lv|v=1,2,3,…,q},其中lv即为子集Lv通过步骤7.5.1进行线段合并后得到的线段;
步骤7.6:从Lafter中筛选出长线段并构建集合Llong={(x1j,y1j,x2j,y2j,kj)|j=1,2,3,…,qL},qL表示Llong中的线段数量,其中的长线段满足:(x1j-x2j)2+(y1j-y2j)2≥(λlong·wmax)2,λlong为事先给定的长线段判断系数,(x1j,y1j)表示第j条长线段的起点坐标,(x2j,y2j)表示第j条长线段的终点坐标;kj表示第j条长线段的斜率;
步骤7.7:计算指针所在直线斜率Kp,即长线段集合Llong中的平均斜率:
<mrow> <msub> <mi>K</mi> <mi>p</mi> </msub> <mo>=</mo> <mfrac> <mrow> <msubsup> <mi>&amp;Sigma;</mi> <mn>1</mn> <msub> <mi>q</mi> <mi>L</mi> </msub> </msubsup> <msub> <mi>k</mi> <mi>j</mi> </msub> </mrow> <msub> <mi>q</mi> <mi>L</mi> </msub> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>16</mn> <mo>)</mo> </mrow> <mo>.</mo> </mrow> 4
CN201710317529.XA 2017-05-08 2017-05-08 一种基于图像处理的指针式仪表读数方法 Active CN107301412B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710317529.XA CN107301412B (zh) 2017-05-08 2017-05-08 一种基于图像处理的指针式仪表读数方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710317529.XA CN107301412B (zh) 2017-05-08 2017-05-08 一种基于图像处理的指针式仪表读数方法

Publications (2)

Publication Number Publication Date
CN107301412A true CN107301412A (zh) 2017-10-27
CN107301412B CN107301412B (zh) 2019-12-17

Family

ID=60137108

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710317529.XA Active CN107301412B (zh) 2017-05-08 2017-05-08 一种基于图像处理的指针式仪表读数方法

Country Status (1)

Country Link
CN (1) CN107301412B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108764257A (zh) * 2018-05-23 2018-11-06 郑州金惠计算机系统工程有限公司 一种多视角的指针式仪表识别方法
CN109583324A (zh) * 2018-11-12 2019-04-05 武汉大学 一种基于单点多盒检测器的指针仪表读数自动识别方法
CN110909772A (zh) * 2019-11-06 2020-03-24 华中科技大学 一种高精度实时多尺度表盘指针检测方法和系统
CN111126371A (zh) * 2019-11-22 2020-05-08 重庆大学 一种基于图像处理的粗指针表盘示数读取方法
CN112489071A (zh) * 2020-11-03 2021-03-12 辽宁长江智能科技股份有限公司 一种指针水表识别方法与系统
CN115222817A (zh) * 2022-08-31 2022-10-21 成都千嘉科技股份有限公司 一种指针式压力表的指针定位方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101055619A (zh) * 2007-05-11 2007-10-17 刘军海 一种机械仪表窗口显示数字的图像识别方法和装置
CN102521560A (zh) * 2011-11-14 2012-06-27 上海交通大学 高鲁棒仪表指针图像识别方法
CN103714329A (zh) * 2013-12-31 2014-04-09 长安大学 一种仪表指针识别的检测算法
CN104392206A (zh) * 2014-10-24 2015-03-04 南京航空航天大学 一种指针式仪表读数自动识别的图像处理方法
CN105550683A (zh) * 2015-12-07 2016-05-04 重庆大学 基于视觉的指针式仪表自动读取系统和方法
CN105740829A (zh) * 2016-02-02 2016-07-06 暨南大学 一种基于扫描线处理的指针式仪表自动读数方法
CN106295665A (zh) * 2016-08-13 2017-01-04 国网福建省电力有限公司 一种变电站指针式仪表读数自动识别方法
CN106529559A (zh) * 2016-12-30 2017-03-22 山东鲁能软件技术有限公司 一种指针式圆形多仪表盘实时读数识别方法
CN106599897A (zh) * 2016-12-09 2017-04-26 广州供电局有限公司 基于机器视觉的指针式仪表读数识别方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101055619A (zh) * 2007-05-11 2007-10-17 刘军海 一种机械仪表窗口显示数字的图像识别方法和装置
CN102521560A (zh) * 2011-11-14 2012-06-27 上海交通大学 高鲁棒仪表指针图像识别方法
CN103714329A (zh) * 2013-12-31 2014-04-09 长安大学 一种仪表指针识别的检测算法
CN104392206A (zh) * 2014-10-24 2015-03-04 南京航空航天大学 一种指针式仪表读数自动识别的图像处理方法
CN105550683A (zh) * 2015-12-07 2016-05-04 重庆大学 基于视觉的指针式仪表自动读取系统和方法
CN105740829A (zh) * 2016-02-02 2016-07-06 暨南大学 一种基于扫描线处理的指针式仪表自动读数方法
CN106295665A (zh) * 2016-08-13 2017-01-04 国网福建省电力有限公司 一种变电站指针式仪表读数自动识别方法
CN106599897A (zh) * 2016-12-09 2017-04-26 广州供电局有限公司 基于机器视觉的指针式仪表读数识别方法及装置
CN106529559A (zh) * 2016-12-30 2017-03-22 山东鲁能软件技术有限公司 一种指针式圆形多仪表盘实时读数识别方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
袁卫 等: "Ports模式下CY7C68013和FPGA的数据通信", 《新器件新技术》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108764257A (zh) * 2018-05-23 2018-11-06 郑州金惠计算机系统工程有限公司 一种多视角的指针式仪表识别方法
CN108764257B (zh) * 2018-05-23 2022-03-04 郑州金惠计算机系统工程有限公司 一种多视角的指针式仪表识别方法
CN109583324A (zh) * 2018-11-12 2019-04-05 武汉大学 一种基于单点多盒检测器的指针仪表读数自动识别方法
CN110909772A (zh) * 2019-11-06 2020-03-24 华中科技大学 一种高精度实时多尺度表盘指针检测方法和系统
CN110909772B (zh) * 2019-11-06 2022-04-01 华中科技大学 一种高精度实时多尺度表盘指针检测方法和系统
CN111126371A (zh) * 2019-11-22 2020-05-08 重庆大学 一种基于图像处理的粗指针表盘示数读取方法
CN112489071A (zh) * 2020-11-03 2021-03-12 辽宁长江智能科技股份有限公司 一种指针水表识别方法与系统
CN115222817A (zh) * 2022-08-31 2022-10-21 成都千嘉科技股份有限公司 一种指针式压力表的指针定位方法

Also Published As

Publication number Publication date
CN107301412B (zh) 2019-12-17

Similar Documents

Publication Publication Date Title
CN107301412A (zh) 一种基于图像处理的指针式仪表读数方法
CN112906694B (zh) 变电站倾斜式指针式仪表图像的读数矫正系统及方法
CN110580480B (zh) 基于图像处理的表计读数识别方法
CN103759758B (zh) 一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法
CN105091922B (zh) 一种基于虚拟表盘的指针表读数识别方法
CN101660932A (zh) 一种指针式汽车仪表自动校验方法
CN108918526A (zh) 一种柔性ic封装基板线路的缺口缺陷检测方法
CN105930837A (zh) 基于自主巡检机器人的变电站仪表设备图像识别方法
CN108764234B (zh) 一种基于巡检机器人的液位仪表读数识别方法
CN111507186B (zh) 一种变电站指针式仪表读数识别方法
CN107729853A (zh) 一种适用于变电站窄刻度指针式仪表的自动识别方法
CN108921165B (zh) 基于水尺图像的水位识别方法
CN111368906A (zh) 一种基于深度学习的指针式油位计读数识别方法
CN107862690A (zh) 一种基于特征点匹配的电路板元器件定位方法和定位装置
CN110211178B (zh) 一种利用投影计算的指针式仪表识别方法
CN102609712A (zh) 用于移动机器人的类圆形指针式仪表读数方法
CN113469178B (zh) 一种基于深度学习的电力表计识别方法
CN103322918B (zh) 测量车辆高度的设备及其测量方法
CN117152727A (zh) 一种用于巡检机器人的指针式仪表自动读数方法
CN114994060A (zh) 一种机器视觉下的磁环外观缺陷智能检测系统及方法
CN114459564A (zh) 一种基于机器视觉的河道水位测量装置及方法
CN113408519B (zh) 一种基于模板旋转匹配的指针仪表读数的方法及系统
CN109359637B (zh) 基于机器视觉的指针式仪表读值方法
CN110991233B (zh) 指针式压力表的自动读数方法
CN113869112A (zh) 一种基于机器视觉的仪表自动读数方法装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant