本发明涉及指针式仪表读数识别领域,具体是利用一种图像处理技术与计算机视觉相结合的方式,对指针式单一仪表盘视频进行分析处理进而精确识别出指针式仪表盘读数的方法。
背景技术:
智能指针式仪表自动读数识别系统面向工业指针式仪表,通过图像采集得到指针式仪表图片,利用图像处理与计算机视觉相结合的方式,自动识别出仪表盘读数,以减少人力、提高读数精确度以及效率。随着工业的快速发展,数据量的增加,要求指针式仪表识别系统具有更高的性能和可靠性,因此提出具有更高实时性与可靠性的智能指针式仪表的读数识别方法显得尤为重要。
现有的指针式仪表识别包括如下几方面的技术:图像采集、图像预处理、圆形表盘及指针线识别、指针线角度计算、读数识别五方面的内容。
现有技术中已经公开的方式有:1.《arobustandautomaticrecognitionsystemofanaloginstrumentsinpowersystembyusingcomputervision》,journaloftheinternationalmeasurementconfederation(imeko),measurement92(2016)413-420;2.《automaticalignmentsystembasedoncenterpointrecognitionofanalogmeasuringinstrumentsdial》,industrialelectronicssociety,iecon2013–39thannualconferenceoftheieee;3.《基于机器视觉的指针式仪表读数识别系统研究》,机械设计及理论,吉林大学,2015;4.《智能变电站指针式仪表自动识别方法的研究》,电气工程,2016;5.《automaticcalibrationofanaloganddigitalmeasuringinstrumentsusingcomputervision》,ieeetransactionsoninstrumentationandmeasurement,vol.49,no.1,february2000;6.《computervisionappliedtotheautomaticcalibrationofmeasuringinstruments》,journaloftheinternationalmeasurementconfederation(imeko),measurement28(2000)185-195;7.《ellipsedetectionusingrandomizedhoughtransform》,finalprojectintroductiontocomputervision,2002;8.期刊论文:《goingdeeperwithconvolutions》,computerscience,computervisionandpatternrecognition,2014;9.《novelmethodofautomaticrecognitionforanalogmeasuringinstruments》,internationalconferenceonmanufacturingscienceandengineering(icmse)2015;10.《segmentation-freeapproachesofcomputervisionforautomaticcalibrationofdigitalandanaloginstruments》,internationalmeasurementconfederation,instituteofmeasurementandcontrolelsevier,measurement46(1):177-184,2013。
表盘图像采集是指针式仪表识别的第一个步骤。工业上一般采用摄像头并且固定位置进行图像采集,后来随着红外摄像头的出现和发展,在固定摄像头位置的基础上进行补光拍摄,使得采集到的图像较为清晰。
图像预处理是进行仪表识别的第二个步骤,也是进行表盘检测与指针线检测重要的前驱步骤。它主要包括如下几个步骤:(1)图像去噪:通过某种滤波算法如高斯滤波算法,对采集到的表盘图像进行滤波操作,得到一幅比较清晰的彩色图像。(2)二值化:由于如同rgb这样的彩色图像都是三通道的图像,而对图像的处理一般是基于矩阵的,将彩色三通道图像转换成灰度单通道图像,可以很大程度上减少矩阵运算量,提高后续处理的速度。(3)图像形态学处理及图像细化:通过形态学处理及图像细化操作,使得圆形表盘轮廓和指针线更加突出,方便后续表盘与指针线的检测。
在预处理完成后,第三个步骤便是利用计算机视觉检测圆形表盘轮廓和指针所在的直线。通用的方法是利用hough圆检测和hough直线检测的方式,通过设置圆的大小阈值,找出表盘所在的圆形,通过设置直线长短的阈值,找出指针所在的直线。
找到表盘所在的圆和指针线所在的直线以后,第四个步骤是计算指针线在表盘圆中的斜率,进而计算指针与0刻度的夹角占总的刻度区域的比例。
最后一个步骤是计算读数,通过指针线指向的数在整个量程中所占的比例以及最小刻度值来计算当前读数。
工业上一般采用摄像头以及红外摄像头进行指针式仪表的图像采集,并且采集时摄像头与指针式仪表是一对一的关系。这样采集到的表盘图像较为清晰,轮廓分明,但是花费的成本较高。
当前的指针式仪表读数识别,往往是采集设备通过接口与计算机相连,将采集到的表盘图像数据传输到计算机进行存储,而后利用相关计算机视觉算法进行图像处理、识别读数。这种方式需要将大量的图像信息存储到关系数据库中,需要时再取出进行分析,在一定程度上降低了识别速度,增加了存储开销,当图片分辨率较高时识别速度会受到很大的影响。
工业上许多地方往往要求较高的读数精确度,当前的指针式仪表识别方法的精确度越来越高,但往往达不到工业上高精确度的要求。
技术实现要素:
本发明的目的在于克服现有技术的不足,提供一种成本低、效率高、精确度高的指针式仪表读数识别方法。它是一种基于图像视频采集、图像处理和计算机视觉相结合的方法,采用具有一定分辨率的移动设备进行视频拍摄,在视频拍摄的同时识别表盘读数。该方法具有实时性、高效率、成本低、鲁棒性等特点,避免了利用摄像头拍摄存储然后进行分析的延时性,达到视频与读数显示同时进行的目标,为工业生产提高了效率、减少了开销。
本发明提供了一种利用移动设备的指针式圆形单仪表盘实时识别方法,依次包括如下步骤:
步骤1:利用移动设备实时获取指针式圆形单仪表盘的图像视频;
步骤2:对获取的指针式圆形单仪表盘的图像视频进行分帧预处理;
步骤3:对进行分帧预处理后的每帧图像数据进行边缘检测;
步骤4:利用hough变换检测指针式圆形单仪表盘的圆形表盘所在的圆,如果检测到对应的圆,则进入下一步骤,如果检测不到则返回步骤2;
步骤5:对表盘感兴趣区域进行分割,分割出圆形表盘所在的外接矩形区域;
步骤6:对图像中的倾斜表盘进行了校正;
步骤7:利用hough变换检测指针所在的直线,如果检测到对应的直线,则进入下一步骤,如果检测不到则返回步骤2;
步骤8:根据检测到的对应的直线的两个端点坐标,利用直线的斜截式方程得到指针线所在的直线的斜率k的值,计算出指针在量程区域内所扫过的角度θ;
步骤9:根据指针线所在的直线的斜率k,最小刻度为vmin,最大刻度为vmax,指针线所指的刻度与最小刻度之间的夹角a,指针扫过的角度θ,待求解的读数为v,利用公式:
v=vmin+(vmax-vmin)×(a÷θ)
计算出当前指针式圆形单仪表盘的读数。
进一步地,步骤2中所述分帧预处理为对每一帧图像依次进行滤波去噪处理、二值化处理、边缘检测处理、形态学处理处理、图像细化处理和图像增强处理。
进一步地,步骤3中所述对进行分帧预处理后的每帧图像数据进行边缘检测是进行canny边缘检测,具体包括:
3.1.求图像与高斯平滑滤波器的卷积,其中s[i,j]为所要求得卷积值,g[i,j;σ]为高斯平滑滤波器,i[i,j]为图像像素点:
s[i,j]=g[i,j;σ]*i[i,j]
3.2.使用一阶有限差分计算偏导数的两个矩阵,其中s[i,j]是步骤3.1中求得的卷积值,p[i,j]和q[i,j]分别是两个需要计算的偏导数矩阵:
p[i,j]≈(s[i,j+1]-s[i,j]+s[i+1,j+1]-s[i+1,j])÷2
q[i,j]≈(s[i,j]-s[i+1,j]+s[i,j+1]-s[i+1,j+1])÷2
3.3.求幅值和方位角,其中m[i,j]为梯度幅值,θ[i,j]为所要求的梯度方向:
θ[i,j]=arctan(q[i,j]÷p[i,j])
3.4.对步骤3.3处理后得到的数据进行非极大值抑制处理;
3.5.取阈值,将低于阈值的所有值赋零,得到图像的边缘阵列。
进一步地,步骤4包括对步骤2中预处理后的每帧图像利用hough变换检测圆,通过设置与图像像素相关的表盘圆的大小阈值,找到圆形表盘所在的圆和该圆的圆心坐标。
进一步地,采用校正圆形表盘上倾斜字符的方式来获取表盘的倾斜角度。
进一步地,所述获取表盘的倾斜角度是通过利用旋转矩形区域抠出表盘上部分倾斜的字符,分别进行倾斜角度的计算,再进行权衡得出旋转角度。
进一步地,步骤7具体为当检测到0条或者3条及以上的指针线时,说明没有完全找到指针线信息,返回进行下一帧处理,当检测到1条或者2条指针线时,说明找到了指针线,进行相应算法计算真正的指针线以及指针线角度。
进一步地,如果检测到2条指针线,则求出两条直线的交点,把交点与圆心的连线所形成的线段作为真实的指针线。
本发明的利用移动设备的指针式圆形单仪表盘实时识别方法,可以实现:
1.本发明在图像采集方面是基于视频的,有效的提高了采集图像的清晰度和识别过程的实时性,并且,本方法中主要使用移动设备、平板等具有拍照功能的设备进行图像视频的采集,相对于传统的采用昂贵的摄像头拍摄相比,有效的降低了图像采集成本。并且,工业上一般采用一个摄像头对应一个指针式仪表,而工业生产中一般有几十个甚至上百个摄像头,并且摄像头使用时需要进行繁琐的布线等设置,如果采用这种传统的一对一的方式,会大大增加工业生产成本。本系统只需要一个简单的手持设备或平板即可,很大程度上降低了工业成本。
2.本发明在视频图像采集以后,不需要对视频或者图像文件进行存储,而是在视频图像进行采集以后,直接处理加工采集到的视频,进而获取仪表读数,传统的仪表识别方法则需要对采集到的图像信息进行存储,占用了大量存储空间,开销很大,利用直接处理图像信息的方法可以大大降低工业生产开销,提高工业效益。
3.本发明是基于图像处理与机器视觉的,通过设置适当的阈值参数,可以使仪表识别精度达到很高的水平,相比较当前各种仪表识别不高的识别精度而言,本发明所采用的方法可以满足工业上对精度的较高要求。
4.本发明基于机器视觉,面向底层,有效的提高了表盘检测与识别的速度,当前工业中,大部分的仪表识别系统运行速度受环境、存储容量的影响很大速度较低,相比较而言,本发明的执行速度由于不受存储与外部读写的操作的影响,因此具有很高的执行速度。
5.在利用手持设备或平板进行图像视频采集的过程中,由于拍摄角度等因素的影响往往会使图像中的表盘倾斜,不利于后续指针线角度的计算。因此,本发明中加入了图像处理中对图像进行旋转校正的步骤,可以对任意拍摄角度造成的图像倾斜问题加以矫正,使其恢复标准表盘图像,更加提高了准确度。
附图说明
图1为利用移动设备的指针式圆形单仪表盘实时识别方法流程图
图2为指针线角度计算的流程图
图3为倾斜表盘旋转校正流程图
图4为hough检测指针直线的流程图
具体实施方式
下面详细说明本发明的具体实施,有必要在此指出的是,以下实施只是用于本发明的进一步说明,不能理解为对本发明保护范围的限制,该领域技术熟练人员根据上述本发明内容对本发明做出的一些非本质的改进和调整,仍然属于本发明的保护范围。
本发明是一种适用于工业中的指针式仪表读数自动识别的方法,它基于图像视频采集、视频分析、机器视觉等多种前沿技术,对拍摄到的指针式仪表盘视频进行分析处理,从而识别出指针式仪表读数。该发明方法主要包括视频图像采集、图像预处理、hough变换检测圆、hough变换检测直线、指针线角度计算以及读数识别六个步骤。
图1为本发明方法的读数识别的流程图,主要包括以下九个步骤:
步骤1:图像视频采集。
利用手持设备的拍照摄像功能,对场景中的指针式仪表进行图像视频获取,目前,一般的手持设备的图像分辨率均能满足本方法开发的需要。在视频图像获取过程中,摄像头是实时获取的。
步骤2:对表盘视频图像进行分帧预处理。
在这一步骤中,需要将拍摄到的指针式仪表盘视频图像进行分帧预处理。图像的预处理过程包括滤波去噪、二值化、边缘检测、形态学处理、图像细化、图像增强等操作。
在利用手持设备进行视频拍摄的过程中,生成的每一帧图像数据或多或少的都存在噪声,需要对每一帧图像进行图像滤波去噪。
为了提高处理速度,需要将彩色rgb三通道图像进行二值化处理,使其转换为单通道的灰度图。这里我们采用阈值法对图像进行二值化。
步骤3:
对于灰度图,在进行圆及指针线检测之前,需要对每帧图像进行边缘检测,以减少数据量并且剔除认为与所研究的目标无关的对象。
canny边缘检测的算法流程大致如下:
①求图像与高斯平滑滤波器的卷积,其中s[i,j]为所要求得卷积值,g[i,j;σ]为高斯平滑滤波器,i[i,j]为图像像素点:
s[i,j]=g[i,j;σ]*i[i,j](1)
②使用一阶有限差分计算偏导数的两个矩阵,其中s[i,j]是①中求得的卷积值,p[i,j]和q[i,j]分别是两个需要计算的偏导数矩阵:
p[i,j]≈(s[i,j+1]-s[i,j]+s[i+1,j+1]-s[i+1,j])÷2(2)
q[i,j]≈(s[i,j]-s[i+1,j]+s[i,j+1]-s[i+1,j+1])÷2(3)
③求幅值和方位角,其中m[i,j]为梯度幅值,θ[i,j]为所要求的梯度方向:
θ[i,j]=arctan(q[i,j]÷p[i,j])(5)
④非极大值抑制;
⑤取阈值:将低于阈值的所有值赋零,得到图像的边缘阵列。
接下来需要对每帧图像进行形态学处理,突出表盘轮廓及指针线,为后面检测指针式表盘的轮廓和指针线做准备。
步骤4:利用hough变换检测圆形表盘所在的圆。
hough变换是本发明中检测圆形指针式仪表盘所用的关键技术。hough变换检测圆的基本思想是:利用图像空间与参数空间的对偶性。例如检测圆,圆的方程为:(x-a)2+(y-b)2=r2,将其映射到参数中是,变为关于a、b的点的方程。在参数空间中根据参数方程找到的若干点,利用统计学相关方法,对这些点进行统计,找到聚集在某点最多的点所满足的关系,这些点在图像空间中就是需要检测的圆。
对于步骤2中预处理后的每帧图像利用hough变换检测圆的原理,通过设置与图像像素相关的表盘圆的大小阈值,可以找到我们需要的圆形表盘所在的圆和该圆的圆心坐标。如果这一步中找不到我们需要的圆,那么截取视频图像的下一帧返回步骤2进行循环处理。
步骤5:表盘图像分割。
在步骤3中检测到表盘圆以后,对表盘图像进行分割,分割出圆形表盘所在的外接矩形区域。在下一步直线检测时,可以有效的滤掉不在圆形表盘中的直线,也可以有效地计算圆形表盘的圆心坐标,进一步提高了检测与计算的效率。
步骤6:图像校正。
由于拍摄角度等因素的影响,视频图像中的表盘往往是倾斜的,因此在进行图像分割以后,对图像中的倾斜表盘进行了校正,为后面准确计算指针线的角度打下了基础。
本发明是针对圆形表盘,而圆形表盘不存在像矩形表盘那样明确的特征点。因此本发明采用校正圆形表盘上倾斜字符的方式来获取表盘的倾斜角度,从而达到校正倾斜表盘的目的。通过利用旋转矩形抠出表盘上某些倾斜的字符,分别进行倾斜角度的计算,再进行权衡,从而得出旋转角度。
步骤7:hough变换检测指针所在的直线。
与步骤三中hough变换检测圆类似,hough检测直线的原理也是利用图像空间与参数空间的对偶性。不同之处在于此时的圆的方程变为直线的方程:y=kx+b,将该图像从图像空间映射到以k,b为参数的参数空间,进而利用统计规律得到参数空间中在图像空间中为直线的点,以便得到图像空间中相应的直线。
利用这一原理得到直线后,同样得到了直线的两个端点的相应坐标。利用指针所在的直线距离圆形的距离,筛选出真正的指针线。另外,由于有些指针式仪表的指针比较粗,在进行hough直线检测指针线时,往往会检测到多条指针线。本发明针对这一情况做了明确的判断,分别讨论了检测到的指针线条数为0条、1条、2条、3条及3条以上的处理方法。如果在这一步骤中找不到对应的直线,则截取视频图像的下一帧返回步骤2进行循环处理。
步骤8:指针线角度计算。
步骤7中通过hough变换找到直线,并且通过阈值方法筛选出真正的指针线,并且通过分情况讨论检测到的指针线条数以后,最终确定出一条准确的真实的指针线,得到真实指针线线段两端的端点坐标。根据线段两个端点的横纵坐标,利用直线的斜截式方程y1-y2=k(x1-x2)得到直线的斜率k的值,进而计算出指针在量程区域内所扫过地角度。
步骤9:读数识别。
根据步骤8中求出的指针线所在的直线的斜率k,最小刻度为vmin,最大刻度为vmax,指针线所指的刻度与最小刻度之间的夹角a等参数,指针扫过的角度θ,待求解的读数为v,利用公式:
v=vmin+(vmax-vmin)×(a÷θ)(6)
计算出当前指针式仪表的读数。
图2为指针线角度计算的流程图,主要包括以下三部分内容:
步骤1:hough变换检测到1条或者2条指针线。
步骤2:如果检测到1条指针线,则这条指针线即为真实的指针线,根据这条线段两个端点的坐标计算出指针线的斜率;如果检测到2条指针线,则需要求出两条直线的交点,把交点与圆心的连线所形成的线段作为真实的指针线。
步骤3:利用步骤求得的指针线,计算其斜率即角度。
图3为倾斜表盘的图像校正的流程图,主要包括以下五部分内容:
步骤1:在利用hough算法检测到规定数量的仪表盘之后,利用图像分割技术分割出所有的表盘圆。
步骤2:利用旋转矩形算法,找到每个表盘中的数字字符。
步骤3:对倾斜的数字字符进行旋转校正。
步骤4:对校正后的字符求出其原图的旋转角度。
步骤5:利用步骤4中求得的字符旋转角度,也就是仪表盘倾斜的角度,利用旋转算法旋转校正倾斜仪表表盘。
图4为hough变换检测表盘指针线的流程,主要包括以下四部分内容:
步骤1:利用图像分割技术分割出每个表盘;
步骤2:利用hough变换算法检测每个表盘中的直线;
步骤3:当检测到0条或者3条及以上的指针线时,说明没有完全找到指针线信息,返回进行下一帧处理。
步骤4:当检测到1条或者2条指针线时,说明找到了指针线,进行相应算法计算真正的指针线以及指针线角度。
实施例
本实施例以北方某火力发电厂的圆形指针式温度表为识别对象,圆形指针式仪表盘是电厂重要的测量仪器,并且数量较多,人工读数费时费力,符合本发明所针对的指针式仪表盘自动读数识别的特点。通过本实施例的详细阐述,进一步说明本发明的实施过程。
本发明实施例对某电厂指针式圆形温度表的自动判读的实施步骤如下:
步骤1:采集工业现场指针式仪表的视频图像信息。在此之前,需要对待测仪表的相关参数进行设置,相关参数包括仪表最小刻度值、仪表最大刻度值以及指针未覆盖的区域夹角等。设置完成后就可以进行表盘视频图像信息的获取了。
步骤2:完成步骤1的配置以后,开始表盘视频图像的获取。待获取到视频图像后,该发明方法对每一帧获取到的指针式仪表盘图像进行预处理操作,以便后续方便读数识别的分析和计算。
表盘图像预处理技术是针对于图像中除了有被测物体外,往往还有其他无用的信息甚至噪声的情况下提出的。在工业生产中,由于光照等原因,获取到的视频图像信息中会掺杂着大量噪声。应用图像预处理技术,可以有效的光滑噪声、突出待识别物体的主要特征,以便进行读数识别。
步骤3:在完成步骤2的二值化操作后,图像变为二值化图,对该二值化图进行边缘检测,增强表盘轮廓与指针线的清晰度与对比度,方便后续检测圆形表盘轮廓以及指针线。
步骤4:在进行完步骤3的二值化操作后,可以看到表盘轮廓与指针线轮廓清晰分明并且仍然保留需要的表盘信息,这样就可以比较容易的对二值化后的表盘图像进行检测。首先对二值化后的表盘图像进行圆检测,目的是检测到图像中的圆形表盘,采用的基本方法是hough变换检测圆。采用预先设置好的圆的大小阈值,找到二值化图中的圆形表盘轮廓。
步骤5:通过步骤4,已经检测到了表盘圆,接着就是将圆形表盘从图中抠出,称为寻找表盘感兴趣区域。
步骤6:通过步骤5提取出感兴趣区域以后,对感兴趣区域中的圆形表盘进行旋转校正,方法是利用倾斜字符的旋转矩形校正方法。
步骤7:对旋转校正后的圆形表盘进行直线检测,目的是找到指针所在的直线。方法是利用hough变换通过设置直线长度阈值进行直线检测。在这一步骤中,由于指针线比较粗,可能会同时检测到多条指针直线(一般为1条或者2条)。
步骤8:通过步骤7检测到1条或者2条指针线后,对检测到的指针线条数进行分情况讨论。①当检测到1条直线时,把该直线当作指针所在的直线进行指针线角度计算;②当检测到2条直线时,求出这2条直线的交点,把交点与圆心的连线所在的直线当作指针所在的直线进行角度计算。如图2所示。
步骤9:通过步骤8计算出的指针线角度是指针线与0刻度线之间的夹角a,温度表最小刻度与最大刻度之间的夹角为θ,最小刻度值为vmin,最大刻度值为vmax,利用公式(6)即可计算出圆形指针式温度表的当前示数。
事实表明,利用该方法可以快速的识别出表盘圆、指针线以及表盘示数,精确度可以达到96.5%以上,目前工业生产中要求指针数仪表读数的精确度一般在95%左右即可满足工业要求,因此本发明采用的方法所达到的精确度完全符合工业上对读数精确度的要求。
尽管为了说明的目的,已描述了本发明的示例性实施方式,但是本领域的技术人员将理解,不脱离所附权利要求中公开的发明的范围和精神的情况下,可以在形式和细节上进行各种修改、添加和替换等的改变,而所有这些改变都应属于本发明所附权利要求的保护范围,并且本发明要求保护的产品各个部门和方法中的各个步骤,可以以任意组合的形式组合在一起。因此,对本发明中所公开的实施方式的描述并非为了限制本发明的范围,而是用于描述本发明。相应地,本发明的范围不受以上实施方式的限制,而是由权利要求或其等同物进行限定。