为了提高仪表人为读数的速度和精确度,提出首先对仪表图像进行二值化、滤波等基本处理;然后通过图像分割得到感兴趣的表盘区域,经过坐标平移翻转和极坐标变换的归一化算法,将圆形表盘转化成矩形指针表盘;再利用图像拼接算法得到无指针的表盘刻度矩形图像,并且通过直线扫描出每个刻度线;接着通过模板匹配,将待检测图像与无指针模板对比,从而检测出图像指针位置信息,得出指针读数。实验结果表明,采用这种图像处理技术使得识别速度更快,精确度也更高。
指针式仪表由于其特殊结构具有制造成本低、精确度高、稳定性强,因而在诸多场合得以运用。目前,对于这种仪表自动读数的技术,有的研究人员提出通过角度转换求出指针位置,再用Hu不变矩阵作为图像特征来实现指针读数自动识别,但是这种算法比较复杂,识别速度不是很快;有的研究提出利用快速霍夫变换,通过限制搜索范围来降低霍夫的搜索量,但是这种方法比较复杂,而且识别准确率不是很高,文献提出通过最大灰度的相减来识别指针的位置,这种算法看似简单,但是识别准确率也不是很高,而且对光照强度非常敏感,其通用性不是很高。本文检测的对象是石油化工中常用的耐振压力表,先通过对采集到的压力表图像进行简单预处理,然后创新地运用极坐标变换算法将圆弧形指针图像矩形化,接着通过图像拼接制作出无指针的刻度模板,再通过模板匹配进行读数自动识别。
1.仪表指针识别系统组成
本实验由于对检测的结果要求较高,在图像系统中加入碗状光源,采用GIGE工业相机来获得高清晰图像,采集到的图像通过千兆网口实时传给计算机系统,经过各种算法处理,将最终检测到的压力表的读数显示出来,通过校对机构鉴定系统的误差大小来适当调整识别系统。整个系统(图1)主要分为以下3各部分。
被测压力表和校对压力表固定部分。通过前期调整压力表的方向和位置,使得其和相机处于合适的位置,并将其固定,防止后续拍摄的图像发生偏移而导致检测误差。检测后的结果通过校对压力表进行校对,然后进行算法的改进。
图像采集系统部分。系统采用深圳彩视能科技有限公司的GIGE工业相机,并加入了碗状光源,防止外界自然光的变化对检测结果产生干扰。
计算机处理系统部分。工控机与相机通过千兆以太网通信协议进行通信,图像系统采集到的高清晰图像可以准确实时传送给工控机,工控机通过VS调用相机自带的SDK软件包来控制相机,然后计算机通过各种图像处理算法得到被测压力表的读数,通过MFC界面显示出来。
2.图像处理与指针自动识别系统
指针识别系统主要由5个算法处理模块组成,其流程如图2所示。由于人工安装时的误差,被测压力表和工业相机不可能处于绝对的平行位置,所以在进行图像预处理前需要通过适当的校正。经过灰度化和滤波预处理,然后图像分割得到表盘ROI图像。再通过简单的直角坐标系运算坐标平移和翻转,将表盘指针回转中心和直角坐标原点重合。此时,压力表的圆形图像再经过极坐标转换算法可以转换成一个矩形图像,再由两副不同位置的指针图像经过图像拼接算法得到指针刻度的模板,最后利用直线扫描法,自上至下扫描出刻度线,即可将不同位置指针矩形图像与该模板进行匹配,进而得到指针的读数。
2.1前期处理
在将被测压力表固定到检测台上的时候,由于是人为操作,只能大致保证表盘与相机镜头处于平行的位置,因此,采集到的表盘不会是垂直或者水平的,必然一侧会向镜头有所偏移,若表盘发生偏移,通过图像分割处理时就有可能会将表盘刻度去掉了,而保留了一些无关的背景图像。
因此,在对图像进行预处理之前先要进行图像倾斜校正,可以通过拍摄一幅倾斜的图像经过霍夫圆检测,根据检测到的圆和实际表盘上圆盘位置的区别将镜头调整到完全与表盘平行,这样,在后面的图像分割时就能完整保留表盘刻度。霍夫圆检测就是将表盘上的圆形映射到另一个坐标空间里的一个点形成一个峰值,由此将检测圆形表盘转换为统计峰值。这种变换计算量较小,也可以迅速检测到表盘圆的偏移,从而进行相应的校正。
本研究使用的相机采集到的是24位彩色图像,而这里只需要得到指针对于表盘刻度的相对位置。为了减少计算量,提高图像处理速度,可以首先对图像灰度化,将相机采集到的24位图像转换成8位的灰度图。选用平均值法,计算出相邻3个像素分量的平均值,然后使每个分量值均等于这3个值的平均值,即:R=G=B=(R+G+B')/3由于本研究选择的是仪表指针图像,其细节不是特别多,经过预处理后只要能提取出完整的目标图像即可,因此采用最常用的中值滤波算法。本文先选用3X3的模板,然后再选用5X5,发现3X3的模板就能得到很好的滤波效果。即通过9个像素点的像素值相加求平均值得到3X3模板的正中间的像素值,并替换掉原来的像素值。其公式表示如下:
Np(“i)={pa~i>j—1)+(—i?y)+p(,j—1)+p(aj)+p(>j+i)+p(a+1>j)+p
((+1,j—1)+p(i+1j')+p(i+1,j+1)}/9
2.2图像分割
表盘图像分割是指针自动识别至关重要的预处理,没有正确的分割,指针识别读数就会有较大的误差。图像分割就是从背景图像中分割出指针和刻度线等重要仪表信息,以便后面的指针自动识别。图像分割方法有基于边缘的分割方法和基于阈值的分割方法。
由于感兴趣的部分指针和刻度线均是直线,因此,首先尝试基于边缘的分割方法——霍夫直线变换算法。通过霍夫直线检测能很容易检测到指针和刻度线,但是由于耐震压力表的刻度线很密集,在采用霍夫直线变换时计算量较大,导致处理速度过慢,而且在此检测装置中,要求能实时拍照检测,并自动识别指针读数,这种方法就不是很适合。由于采集到的表盘图像中指针和刻度线的灰度值很接近而且都比较小,故采用基于阈值的分割方法。
在此指针识别系统中,由于压力表的量程有很多种,而且每种表盘的材质和颜色各有不同,再加上环境光照的影响,如果采用固定阈值分割,针对每种量程的压力表可能就要专门设置一个阈值,没有很好的通用性。因此,采用一种自适应的阈值分割方法——最大类间方差法,通过目标与背景的最大方差求得自适应阈值。这种方法的步骤如下:
2.3表盘图像归一化
经过上面的图像处理后得到了指针和刻度线的表盘图像,根据指针和刻度线的扇形分布,在实际中使用圆扫描时会出现较大的误差。首先,由于采用200万高清相机,采集到的图像分辨率会大于指针和刻度线的宽度,导致指针和每个刻度线与扫描圆的交点不止一个,这就会产生识别误差。其次,由于被测的是石油工业的耐震压力表,在表盘里面有一些油液的填充物保证其测量精度,在圆扫描时,由于油液遮挡了垂直向上方向的刻度线的一部分,可能导致某些刻度线扫描不出来。然而图像归一化算法就很容易解决圆扫描所引起的识别误差,因此,图像归一化算法是指针识别系统中至关重要的一部分。
图像采集系统传递给计算机系统的图像一般都是矩阵形式的,假设此矩阵在直角坐标系中表示为J(:r,;y),圆形表盘指针的旋转中心坐标为(X,Y)。首先通过坐标平移,将表盘图像IU,y)平移至使旋转中心坐标和直角坐标系原点重合;然后是坐标翻转,假设经过平移后得到的图像表示为Hy),其翻转后的图像为广(,:y)最后经过极坐标转换,最终图像表示为rpe、。
通过表盘图像归一化处理后,圆形的指针和刻度线图像转变成了矩形图像。为了能够得到刻度线模板,利用图像拼接算法,即在不变的环境条件下,采集处于零刻度时的表盘图像,立刻通过施压装置给压力表施加一定的压力,此时,指针偏转一定的角度,采集此时表盘图像,然后利用图像拼接算法,拼接零刻度图像的后半部分和指针偏转图像的前半部分,即可得到无指针只有刻度线的模板。
由于此时的刻度线模板是矩形的,所有的刻度线均是垂直分布的,利用直线扫描算法从上至下扫描所有的刻度线即可得到刻度线的位置信息。对于任意指针位置的图像,便可以与无指针的刻度线模板进行匹配,得到指针的位置信息,通过与刻度线位置进行对比分析,即可进行读数自动识别。图3是两张检测结果图像。
3.实验结果
本文提出的指针读数自动识别算法,是在vs2010+opencv2.4环境下以石油工业中所用的耐震压力表为例,测试了指针读数自动识别系统的效果。整个系统响应速度快,识别误差率低,能满足工业中实时检测识别的要求。整个实验结果见表1。
4.结论
在指针式仪表自动识别的研究中,本文从机器视觉的研究出发,利用图像分割算法、图像归一化算法、图像拼接算法和模板匹配算法等,实现指针式仪表读数的自动识别。与校对表的测试比对表明,该方案识别速度快,而且准确率高。这种指针式仪表自动识别系统在石油化工生产、电力运行等不允许使用数显表的领域中有广泛的应用。 |