一种指针式仪表读数识别方法与流程

文档序号:13513444阅读:1385来源:国知局
一种指针式仪表读数识别方法与流程

本发明属于图像处理技术领域,更具体地,涉及一种指针式仪表读数识别方法。



背景技术:

在测试技术中,指针式仪表因其结构简单,使用方便,被广泛地应用于电力、石油、化工等行业中。在一些测试现场,比如不易观测的室外或对人员具有危害的场所,采用人工对仪表进行读数有一定难度和危险。在条件恶劣,人员稀少或者数据量大的工作环境中,其准确率和工作效率更难以得到保证。将图像处理技术应用于仪表读数的自动识别,能提高读数的准确度,减少人工开销,提高效率。

对于指针式仪表,现有的基于图像处理的指针式仪表读数自动识别算法主要分为表盘区域提取,指针提取,刻度识别及读数三部分。

传统的表盘区域提取方法一般采用的是模板特征匹配的方法,此方法不仅效率较低下,而且准确率在目标背景较复杂时无法保证。

指针提取方法一般有2种:(1)使用区域分割的方法提取表盘特征,采用消影法获得指针图像,对指针图像进行二值化,使用直线提取方法得到指针直线;(2)对图像进行去噪滤波、二值化、形态学滤波等处理以提取指针图像,使用直线提取方法得到指针直线。

指针提取方法(1)要求摄像机与仪表表盘位置固定,方法(2)对摄像机成像质量要求较高且需根据具体情况进行相应的处理。

刻度识别及读数方法一般有5种:(1)摄像机与仪表表盘的相对位置固定,根据两者的位置关系及先验知识由指针偏转角度得到读数;(2)对图像进行去噪滤波、二值化、形态学滤波等处理提取刻度图像,使用直线提取方法得到刻度直线,根据指针与刻度直线的关系得到读数;(3)对刻度数字进行识别以得到读数;(4)建立仪表模板库,对仪表图像的有效识别区域中,利用指针和刻度线笔画特征,提取仪表的指针和刻度线,并且与刻度查询数据库中对应的刻度查询表进行匹配,进行读数自动识别;(5)建立模板库,将模板图中仪表的最大、最小量程刻度线的角度,圆心位置都保存在模板库中,通过指针直线与刻度直线的关系计算得到读数;

刻度识别及读数方法(1)中要求摄像机与仪表表盘的相对位置固定,这在实际应用中受到限制;方法(2)与(5)中需要提取最大最小刻度直线,方法(3)中需要对数字进行识别,由于实际图片受光线、表盘上的污垢等因素影响而模糊不清,造成细小的刻度线、数字等信息识别不到,导致仪表读数自动识别失败;方法(4)、(5)中前期需要建立庞大的数据库,工作量非常重大繁琐。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种指针式仪表读数识别方法,由此解决现有的指针式仪表读数识别方法在摄像机与仪表表盘相对位置不固定,外界环境光线不均匀,摄像机成像质量不高等情况下,识别精度较低的技术问题。

为实现上述目的,本发明提供了一种指针式仪表读数识别方法,包括:

(1)对待识别仪表图像进行定位并提取表盘,同时采用仿射变换的方式矫正表盘得到矫正后的表盘图像;

(2)对矫正后的表盘图像进行圆检测,得到表盘的预测圆心和预测半径,同时利用矫正后的表盘图像的中心对预测结果进行验证;

(3)对矫正后的表盘图像采用霍夫直线检测的方式检测指针,并检测出指针的角度;

(4)基于表盘上刻度连通域的特征,筛选出刻度所在连通域,并对筛选出的连通域分别进行线性拟合得到各连通域对应的拟合直线,根据指针的角度和预测圆心,通过筛选验证拟合直线的交点,确定表盘的圆心;

(5)根据圆心到各拟合直线的距离筛选出满足预设要求的目标拟合直线,计算目标拟合直线对应连通域的质心,通过冒泡法对各质心到圆心的距离进行排序,寻找距离差小于第一预设阈值的最大距离和最小距离,并利用预测半径对最大距离与最小距离之间的距离平均值进行验证,若验证通过,则将距离平均值作为表盘的半径;

(6)根据表盘的圆心和半径得到表盘的圆弧刻度图,通过坐标变换将圆弧刻度图矩形化,得到矩形刻度图;

(7)根据模板仿射点,检测并定位到矩形刻度图的最小刻度与最大刻度,根据最小刻度与最大刻度对矩形刻度图进行剪切,并根据刻度连通域质心的横坐标,对剪切后的矩形刻度图进行还原重建;

(8)根据刻度连通域质心的横坐标的分布对还原重建后的矩形刻度图进行噪点去除,根据刻度段的平均距离,对噪点去除后的矩形刻度图进行刻度的插入得到目标矩形刻度图;

(9)根据指针的角度得到指针在目标矩形刻度图中的横坐标,进而计算表盘的读数。

优选地,步骤(2)具体包括:

(2.1)对矫正后的表盘图像进行霍夫圆检测,得到表盘的预测圆心和预测半径;

(2.2)由对预测圆心进行验证,若均处在偏差范围内,则认为预测圆心准确,否则将矫正后的表盘图像中心作为预测圆心,其中,(xh,yh)表示圆检测得到的预测圆心,(xc,yc)表示矫正后的表盘图像的中心,w表示矫正后的表盘图像的宽度,h表示矫正后的表盘图像的高度;

(2.3)由对预测半径进行验证,若处在偏差范围内,则认为预测半径准确,否则将矫正后的表盘图像的较短边长的预设倍数作为预设半径,其中,r表示预测半径,l表示矫正后的表盘图像边长较短的一边。

优选地,步骤(3)具体包括:

(3.1)对矫正后的表盘图像进行二值化处理得到二值化图像,对二值化图像进行细化处理,对细化处理后的图像进行hough直线检测;

(3.2)对于由hough直线检测筛选出的直线,由做进一步筛选,其中,d表示圆心到直线的距离,w表示矫正后的表盘图像的宽度,h表示矫正后的表盘图像的高度,theta表示检测的直线角度,b表示截距,theta'表示所有筛选出的直线的角度平均值,b'表示所有筛选出的直线的截距平均值;

(3.3)若进一步筛选中没有符合要求的直线,则认为指针直线的参数b和theta为默认值0。

优选地,步骤(4)具体包括:

(4.1)将二值化图像进行4连通域标记,并由筛选符合要求的连通域,其中,wid表示连通域的宽度,hei表示连通域的高度,w表示矫正后的表盘图像的宽度,h表示矫正后的表盘图像的高度,len表示连通域中像素的个数,k表示连通域拟合直线的斜率,δ表示最小二乘法拟合直线的均方误差;

(4.2)对筛选出的连通域分别进行线性拟合得到各连通域对应的拟合直线,并求取拟合直线的交点作为待选圆心;

(4.3)由对待选圆心进行筛选得到筛选后的交点,其中,(x,y)表示待选圆心,(xc,yc)表示矫正后的表盘图像的中心,(xpoint1,ypoint1)表示模板仿射点中的最小刻度点,(xpoint3,ypoint3)表示模板仿射点中的最大刻度点,ypoint2表示模板仿射点中的中间刻度点的纵坐标;

(4.4)计算筛选后的交点的平均值得到均值圆心,分别计算均值圆心与预测圆心到指针直线的距离,将距离较小的点作为表盘的圆心。

优选地,步骤(5)具体包括:

(5.1)计算表盘的圆心到连通域拟合直线的距离;

(5.2)由对连通域拟合直线进行筛选得到目标拟合直线,其中,d为圆心到连通域拟合直线的距离;

(5.3)计算目标拟合直线对应连通域的质心,通过冒泡法对各质心到圆心的距离进行排序,寻找距离差小于第一预设阈值的最大距离和最小距离,并将最小距离到最大距离之间的距离求平均值作为半径r;

(5.4)由对r进行验证,若验证通过,则将距离平均值作为表盘的半径,其中,rh表示预测半径;

(5.5)若验证不通过,则将r=0.85*rh作为表盘的半径。

优选地,步骤(6)具体为:

将圆弧刻度图矩形化,得到矩形刻度图,其中,圆弧刻度图中坐标(x,y)在矩形刻度图中对应的点是(xl,yl),(x0,y0)表示圆心坐标,r表示表盘的半径;

将模板仿射点中的最小刻度与最大刻度的坐标进行坐标换算得到在矩形刻度图中的横坐标。

优选地,在步骤(7)中,所述根据模板仿射点,检测并定位到最小刻度与最大刻度,包括:

将矩形刻度图进行局部二值化处理,利用二值化后的矩形刻度图中的模板仿射点的横坐标,根据预设搜索条件在模板仿射点的预设搜索范围内进行最小刻度与最大刻度的搜索,其中,预设搜索条件为:在预设搜索范围内遍历每一列像素,若某一列连续白色像素点个数超过第二预设阈值,则认为该列是最小刻度或者最大刻度;预设搜索范围为:以模板仿射点的横坐标为中心,向左右两端各扩展的m个刻度长度,其中,单位刻度长度为:range为刻度个数;

若未搜索到有效的最小刻度与最大刻度,则将模板仿射点中的最小刻度点作为矩形刻度图的最小刻度,将模板仿射点中的最大刻度点作为矩形刻度图的最大刻度。

优选地,在步骤(8)中,所述根据刻度连通域质心的横坐标的分布对还原重建后的矩形刻度条进行噪点去除,包括:

计算当前刻度与前一个刻度的距离df以及当前刻度和后一个刻度的距离db;

若df<lib1&&db<lib1,则认为当前刻度的前一个刻度和后一个刻度均为噪点,进行删除,其中,lib1=0.8*lib',xmax,xmin分别为搜索到的最大刻度与最小刻度的横坐标,lib1为刻度距离下限,lib'为剪切后重新计算的平均刻度距离;

若df<lib1&&db>lib1,则进一步进行如下判断:若||da-lib'||>||db-lib'||,则认为当前刻度的前一个刻度是噪点,进行删除,若||da-lib'||<||db-lib'||,则认为当前刻度是噪点,进行删除,若||da-lib'||=||db-lib'||,则认为当前刻度的前一个刻度与当前刻度均不为噪点,其中,da为df的前一个刻度段的距离。

优选地,在步骤(8)中,所述根据刻度段的平均距离,对噪点去除后的矩形刻度图进行刻度的插入得到目标矩形刻度图,包括:

(a)遍历所有刻度段,计算每个刻度段与阈值lib'的绝对差值,若绝对差值超过0.2lib',则认为此刻度段需要插入刻度;

(b)计算所有需要插入刻度的刻度段距离总和,然后计算需要插入的刻度数目,得到插入刻度的距离,按照该距离在需要插入刻度的刻度段插入刻度;

(c)寻找到最大距离的刻度段,从最大距离的刻度段的右端刻度向左算起,间隔一个刻度段的距离插入刻度,看刻度数量是否满足要求,若不满足则进行步骤(d);

(d)重新计算刻度之间的距离,寻找最大距离的刻度段,按照步骤(c)的方法插入刻度。

优选地,步骤(9)具体为:

由jg=(i+bi+1)*units得到表盘的读数jg,其中,bi=(xl'-x[i])/(x[i+1]-x[i]+1),xl'表示指针的横坐标,x[i]表示第i个刻度的横坐标,x[i+1]表示第i+1个刻度的横坐标,i表示指针左端刻度的序号,bi表示指针所在的位置xl'与第i个刻度之间的距离占第i个刻度段距离的百分比,units表示单位刻度代表的数值。

优选地,所述方法还包括:

若指针的线段信息在二值化后被去除,则根据表盘的半径和圆心得到纯表盘二值化图像,然后对纯表盘二值化图像进行连通域标记,并寻找到最大连通域,计算最大连通域上每个点到圆心的距离,选择最大距离对应的点作为指针的针尖点,针尖点与圆心的直线为最后的指针直线。

优选地,指针直线的角度的检测方法为:

根据针尖点与圆心的横坐标的大小关系判断指针的角度;或者,判断在纯表盘二值化图像中,指针直线上以圆心为中心扩展的两端线段,白色像素点多的一端所指的方向角度为指针角度。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:

(1)本发明采用kcf视觉跟踪算法对表盘区域进行定位提取,不仅执行速度快,而且准确率高。相比于模板匹配方法,kcf对目标区域背景的抗干扰性更强,准确率更高;相比于其它的目标跟踪算法,kcf算法有如下突出优点:①通过图片的矩阵循环,增加了训练样本,提高了正确率;②进行傅里叶变换,避免矩阵求逆操作,计算更快速;③使用高斯label,更合理。

(2)本发明使用模板标定的方法校正仪表图像,解决了摄像机与仪表表盘不固定的问题,扩大了算法使用范围。当摄像机的位置和拍摄方向发生微小变化时,依然能够对仪表表盘进行高精度自动识别读数,只需要标定一次图像,后续便不用再进行标定,实行完全自动识别读数。

(3)本发明使用一张模板进行模板标定,解决了建立庞大数据库的繁琐,使得工作量减小而又不损失读数精度。

只要原始图像大小不发生变化,圆检测参数便可使用最小及最大圆半径的默认参数准确定位表盘。若原始图像大小发生变化,圆检测参数也可由用户根据表盘大小指定,降低了圆检测的计算量。

(4)本发明进行指针直线检测时,houghlines参数的选择通过参数递减的方法进行,并且根据预测圆心到直线的距离这一特征进行进一步筛选,确保检测到的直线是指针直线,提高了指针检测的精度。

(5)在hough方法没有检测到有效的直线时,使用补充方法,基于最大连通域检测针尖点,针尖点与圆心的连线为指针提高了指针检测的稳定性。

(6)本发明基于刻度连通域求取刻度线的交点,并且用预测圆心和图像中心进行验证,确保检测到的表盘圆心更准确,提高了圆心的定位精度和稳定性。在圆心确定的情况下,将刻度到圆心的平均距离作为半径,并且使用预测半径对其进行验证,提高了半径的精度和稳定性。

(7)本发明搜索最小、最大刻度线时,使用仪表图像校正得到的最小、最大刻度点进行验证,使得矩形刻度条剪切更加精确,提高了后续读数的精度。使用刻度图剪切、噪点去除、插入刻度方法还原刻度分布,保证了原始刻度不被删除,插入刻度的分布更贴近原始刻度的分布,提高了读数的准确度。

(8)本发明解决了由于摄像机与仪表相对位置不固定,导致在采集到的图像上仪表表盘位置不固定的问题,不仅可以消除人工读取仪表读数所造成的主观误差,而且可以提高效率和精度,保证人员安全,适用范围广,鲁棒性强。

附图说明

图1是本发明实施例提供的一种指针式仪表读数识别方法的流程示意图;

图2是本发明实施例提供的一种表盘区域跟踪结果示意图;

图3是本发明实施例提供的一种原图与矫正后的图像对比图,其中左边为原图,右边为矫正后的图像;

图4是本发明实施例提供的一种预测圆心、预测半径、均值圆心、均值半径、最终圆心以及检测指针示意图;

图5是本发明实施例提供的一种圆弧刻度图和纯表盘二值细化图像,其中,左边为圆弧刻度图,右边为纯表盘二值细化图像;

图6是本发明实施例提供的一种展开后的矩形刻度图;

图7(a)是本发明实施例提供的一种剪切后的二值矩形刻度图;

图7(b)是本发明实施例提供的一种重构的矩形刻度图;

图7(c)是本发明实施例提供的一种删除噪点后的矩形刻度图;

图7(d)是本发明实施例提供的一种插入刻度后的矩形刻度图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

本发明提供的一种指针式仪表读数识别方法在摄像机与仪表表盘相对位置不固定,外界环境光线不均匀,摄像机成像质量不高的情况下,不用建立庞大的数据库,依然可以实现对指针式仪表读数的自动识别,且识别精度高。

如图1所示为本发明实施例提供的一种指针式仪表读数识别方法的流程示意图,在图1所示的方法中,包括以下步骤:

(1)对待识别仪表图像进行定位并提取表盘,同时采用仿射变换的方式矫正表盘得到矫正后的表盘图像;

作为一种可选的实施方式,可以采用基于核相关滤波的视觉跟踪算法(kernelcorrelationfilter,kcf),根据模板已经标定好的目标数字图像信息,实现对待测图像中目标表盘区域的定位提取。另外,由于光线和拍摄角度等因素,造成待识别仪表图不是仪表的正视角图,对图像处理造成一定的困难,因此需要将表盘区域进行校正。

表盘区域的提取:如附图2所示,需要在待识别仪表图像上画出表盘所在的外接矩形,每一类表都需要标定一个模板,外接矩形的宽高以及位置信息被保存下来作为此类表的模板。标定一次后续将不再标定,均使用模板信息对相对应的图像进行kcf跟踪。kcf跟踪原理如下:

步骤1:用模板的目标框信息(包括目标框的宽高和模板左上角的位置坐标点)训练分类器参数,分类器参数计算公式为:

其中,符号代表ft傅里叶变换,(·)*代表共轭,x表示目标框的特征图,kxx代表高斯核函数,y代表特征图的高斯函数值,λ为正则化参数,a代表计算后的模板。

步骤2:将待识别仪表图像代入分类器,得到图像的响应,计算出响应中响应最大的像素点与原目标框的中心的位移即为目标框的位移,从而得到新目标框的位置。响应的计算公式如下:

其中,z代表当前帧的预测目标框的特征图,x代表上一帧目标框的特征图,kxz代表上一帧目标与当前测试图片的预测目标的高斯核函数,a表示上一帧得到的模板,高斯核函数kxz的计算公式如下:

其中,σ表示标准差,x表示上一帧目标框的特征图,z表示当前帧的预测目标框的特征图,表示傅里叶逆变换,⊙表示点乘运算。

由于每次待识别仪表图像只有一张,因此只需跟踪一帧,并且不更新目标框的位置,也就是模板信息不更新,下一次此类仪表图像依然使用同一个模板进行表盘的跟踪。

步骤3:计算新的目标区域后,将目标区域截取出来以用作后续的矫正识别读数。

表盘区域的矫正:

校正原理:基于模板仿射点坐标矩阵x和待识别仪表图仿射点坐标矩阵x',计算仿射矩阵b,对待识别仪表图进行仿射变换,使得待识别仪表图矫正后在空间三维方向上没有任何方向的偏转。仿射变换公式计算如下:

x=x'*b(4)

b表示仿射矩阵,x是模板仿射点矩阵,x'是待识别仪表图像仿射点矩阵。

仪表模板是对仪表拍摄的正视角图,模板上仿射点坐标x已经给出,而待识别仪表图的仿射点坐标x'需要用户标定,若摄像机的位置和拍摄方向没有太大变化,则每类仪表只需标定一次,便可实现后续的自动识别读数。

仿射变换的改进:每一类仪表都存在一个模板仪表图,并且模板仿射坐标点为最小刻度,中间刻度,最大刻度处三个坐标点,由于每一类表的表盘区域大小相似,因此每类仪表的模板图上的三个仿射点坐标矩阵x几乎相等,并且后续步骤不要求仿射后图像的偏转程度为0%,因此所有仪表都采用同一张模板图作为模板进行仿射变换,省去建立模板库的繁琐。

(2)对矫正后的表盘图像进行圆检测,得到表盘的预测圆心和预测半径,同时利用矫正后的表盘图像的中心对预测结果进行验证;

表盘区域矫正后,首先利用表盘与圆相似这一特征,进行hough圆检测,大概预测圆的半径和圆心,然后利用指针是表盘上唯一较长的线段进行hough直线检测,再根据刻度的连通域特征进行刻度的筛选和拟合,计算刻度的交点,根据预测圆心和半径,指针筛选出表盘真正的圆心和半径。

作为一种可选的实施方式,步骤(2)具体包括以下子步骤:

(2.1)对矫正后的表盘图像进行霍夫圆检测,得到表盘的预测圆心和预测半径;

(2.2)由对预测圆心进行验证,若均处在偏差范围内,则认为预测圆心准确,否则将矫正后的表盘图像中心作为预测圆心,其中,(xh,yh)表示圆检测得到的预测圆心,(xc,yc)表示矫正后的表盘图像的中心,w表示矫正后的表盘图像的宽度,h表示矫正后的表盘图像的高度;

(2.3)由对预测半径进行验证,若处在偏差范围内,则认为预测半径准确,否则将矫正后的表盘图像的较短边长的预设倍数作为预设半径,其中,r表示预测半径,l表示矫正后的表盘图像边长较短的一边,预设倍数可以由实际需要进行确定,优选为5/12。

(3)对矫正后的表盘图像采用霍夫直线检测的方式检测指针,并检测出指针的角度;

作为一种可选的实施方式,步骤(3)具体包括以下子步骤:

(3.1)对矫正后的表盘图像进行二值化处理得到二值化图像,对二值化图像进行细化处理,对细化处理后的图像进行hough直线检测;

其中,直线表达式为:

ρ=xcosθ+ysinθ(7)

(x,y)表示二维图像上的白色像素点,θ表示白色像素点和原点的连线与横轴的夹角。

对于二值图像上的每一个白色像素点(x,y),假定θ在区间(0,180)以步长为1取值,每一个θ取值都对应一个ρ,又因为线段必须在图像上,因此ρ的取值区间为(-d/2,d),d为图像对角线长度,因此形成了一个大小为的累加器矩阵。

若二值图像上存在一条线段(ρ0,θ0)时,线段上的所有点都有一对参数是(ρ0,θ0),并且在累加器矩阵中,(ρ0,θ0)的值必定是最大的。因此设定阈值对累加器进行筛选,累加器的值大于阈值的直线才会被选取。

其中,阈值的选取如下方法:

设定一个参数,若此参数太大以致于没有检测到直线,则将阈值递减,例如,每次参数减5,一直到检测到直线则停止递减。

(3.2)对于由hough直线检测筛选出的直线,由以下三个限制条件

|theta-theta'|<0.3*theta(9)

|b-b'|<0.2*b'(10)

做进一步筛选,其中,d表示圆心到直线的距离,w表示矫正后的表盘图像的宽度,h表示矫正后的表盘图像的高度,theta表示检测的直线角度,b表示截距,theta'表示所有筛选出的直线的角度平均值,b'表示所有筛选出的直线的截距平均值;

(3.3)若进一步筛选中没有符合要求的直线,则认为指针直线的参数b和theta为默认值0。

作为一种可选的实施方式,若指针的线段信息在二值化后被去除,则houghlines检测不到直线。采取补充方法检测指针,首先根据表盘的半径和圆心得到纯表盘二值化图像如附图5所示,然后对纯表盘二值化图像进行连通域标记,并寻找到最大连通域,计算连通域上每个点到圆心的距离,选择最大距离对应的点,认为其为指针的针尖点,针尖点与圆心的直线为最后的指针直线。

(4)基于表盘上刻度连通域的特征,筛选出刻度所在连通域,并对筛选出的连通域分别进行线性拟合得到各连通域对应的拟合直线,根据指针的角度和预测圆心,通过筛选验证拟合直线的交点,确定表盘的圆心;

作为一种可选的实施方式,步骤(4)具体包括以下子步骤:

(4.1)将二值化图像进行4连通域标记,并由以下四个限制条件

0.15<||k||<3(13)

δ<2(14)

筛选符合要求的连通域,其中,wid表示连通域的宽度,hei表示连通域的高度,w表示矫正后的表盘图像的宽度,h表示矫正后的表盘图像的高度,len表示连通域中像素的个数,k表示连通域拟合直线的斜率,δ表示最小二乘法拟合直线的均方误差;

(4.2)对筛选出的连通域分别进行线性拟合得到各连通域对应的拟合直线,并求取拟合直线的交点作为待选圆心;

(4.3)由以下条件:

对待选圆心进行筛选得到筛选后的交点,其中,(x,y)表示待选圆心,(xc,yc)表示矫正后的表盘图像的中心,(xpoint1,ypoint1)表示模板仿射点中的最小刻度点,(xpoint3,ypoint3)表示模板仿射点中的最大刻度点,ypoint2表示模板仿射点中的中间刻度点的纵坐标;

(4.4)计算筛选后的交点的平均值得到均值圆心,分别计算均值圆心与预测圆心到指针直线的距离,将距离较小的点作为表盘的圆心。

由于表盘上真正的圆心必定落在指针直线上,因此将圆心向指针直线做投影,指针上的投影点为最后的圆心。当指针参数是0时,预测圆心为最后的圆心。

(5)根据圆心到各拟合直线的距离筛选出满足预设要求的目标拟合直线,计算目标拟合直线对应连通域的质心,通过冒泡法对各质心到圆心的距离进行排序,寻找距离差小于第一预设阈值的最大距离和最小距离,并利用预测半径对最大距离与最小距离之间的距离平均值进行验证,若验证通过,则将距离平均值作为表盘的半径;

作为一种可选的实施方式,步骤(5)具体包括以下子步骤:

(5.1)计算表盘的圆心到连通域拟合直线的距离;

(5.2)由对连通域拟合直线进行筛选得到目标拟合直线,其中,d为圆心到连通域拟合直线的距离;

(5.3)计算目标拟合直线对应连通域的质心,通过冒泡法对各质心到圆心的距离进行排序,寻找距离差小于第一预设阈值的最大距离和最小距离,并将最小距离到最大距离之间的距离求平均值作为半径r;

其中,第一预设阈值可以根据实际需要进行确定,优选地,第一预设阈值为2。

(5.4)由对r进行验证,若验证通过,则将距离平均值作为表盘的半径,其中,rh表示预测半径;

(5.5)若验证不通过,则将r=0.85*rh(19)作为表盘的半径。

其中,由于直线有两个方向角度,因此需要判断指针的角度。若检测指针的方法是补充方法,则直接根据针尖点与圆心的横坐标的大小关系判断指针的角度。若指针的检测使用的是hough直线检测方法,则判断在纯表盘二值化图像中,指针直线上以圆心为中心扩展的两端线段,白色像素点多的一端所指的方向角度为指针角度。

(6)根据表盘的圆心和半径得到表盘的圆弧刻度图,通过坐标变换将圆弧刻度图矩形化,得到矩形刻度图;

根据表盘的圆心和半径得到如附图5所示的圆弧刻度图,然后将圆弧刻度图展平成矩形刻度图。以表盘圆心为圆心,以r为半径(刻度段宽度为24),得到如图5所示的圆弧刻度图,其中刻度条的宽度为24,中间文字logo部分设定为60°扇形部分。

将圆弧刻度图按照角度分成2πr份,也可分成2π份,分成2πr份使得还原更完整,通过式(20)所示的坐标变换公式,将圆弧刻度图展平成矩形刻度图。

其中圆弧刻度图中坐标(x,y)在矩形刻度图中对应的点是(xl,yl),(x0,y0)表示圆心坐标,r表示表盘的半径,公式(20)实现的是:将圆弧刻度图的2πr份按列的方式排列,总共有2πr列,每一列的长度为刻度段的宽度24,即构成一个宽度为2πr,高度为24的矩形刻度图。

同时将模板仿射点中的最小刻度与最大刻度的坐标按照与式(20)同样的方法进行坐标换算得到在矩形刻度图中的横坐标。

(7)根据模板仿射点,检测并定位到矩形刻度图的最小刻度与最大刻度,根据最小刻度与最大刻度对矩形刻度图进行剪切,并根据刻度连通域质心的横坐标,对剪切后的矩形刻度图进行还原重建;

由于需要根据指针角度信息计算读数,因此需要检测最大最小刻度。由于仿射变换后的三个仿射点不是百分百准确,也就是不能完全根据仿射点确定最小刻度和最大刻度的横坐标。因此将矩形刻度图进行局部二值化,利用矩形刻度图中仿射点的坐标,根据搜索条件在仿射点附近搜索范围内进行最小、最大刻度的搜索。

作为一种可选的实施方式,在步骤(7)中,根据模板仿射点,检测并定位到最小刻度与最大刻度,具体包括:

将矩形刻度图进行局部二值化处理,利用二值化后的矩形刻度图中的仿射点的横坐标,根据预设搜索条件在仿射点的预设搜索范围内进行最小刻度与最大刻度的搜索,其中,预设搜索条件为:在预设搜索范围内遍历每一列像素,若某一列连续白色像素点个数超过第二预设阈值,则认为该列是最小刻度或者最大刻度;预设搜索范围为:以模板仿射点的横坐标为中心,向左右两端各扩展的m个刻度长度,其中,单位刻度长度为:range为刻度个数,可以由用户指定,优选地,m为2,第二预设阈值可以由实际需要进行确定,优选为10;

若由于矩形刻度图不够准确,没有包括完整的刻度信息,则按照搜索条件,在搜索范围内可能搜索不到有效的最小刻度与最大刻度,此时认为第一个仿射点(即最小刻度仿射点)为最小刻度,第三个仿射点(即最大刻度仿射点)为最大刻度。按照最大刻度与最小刻度切割后的矩形刻度图如附图7(a)所示。

(8)根据刻度连通域质心的横坐标的分布对还原重建后的矩形刻度图进行噪点去除,根据刻度段的平均距离,对噪点去除后的矩形刻度图进行刻度的插入得到目标矩形刻度图;

圆弧刻度图是按照圆进行截取的,可能由于圆心、半径的不够准确,截取的圆弧刻度没有被完整地截取进来,因此矩形刻度图中的刻度信息不完整,需要重建还原。

根据最小刻度与最大刻度对二值化矩形刻度图进行剪切,使得两端的噪点尽可能被剪切掉,剪切后的矩形刻度图中只有大、小刻度和噪点。然后对精确剪切后的矩形刻度进行4连通域标记,计算每个连通域的质心,根据质心横坐标重新构建矩形刻度图。重新构建的矩形刻度图如附图7(b)所示。

由于第一个刻度是最小刻度,最后一个刻度是最大刻度,是真刻度而非噪点,噪点是被截取的数字,或者指针所在连通域的质心形成的刻度,所以假设两个噪点不会连续存在。没有噪点的情况下,即使刻度分布不是绝对的均匀,但是刻度之间的距离存在一个下限,距离下限计算公式如式(22)所示:

其中lib1为刻度距离下限,lib'为精确剪切后的重新计算的平均刻度距离,xmax,xmin分别为搜索到的最大、最小刻度的横坐标。

作为一种可选的实施方式,在步骤(8)中,根据刻度连通域质心的横坐标的分布对还原重建后的矩形刻度条进行噪点去除,包括:

初始flag为1,从第三个刻度开始,一直到倒数第二个刻度,计算当前刻度与前一个刻度的距离df,当前刻度和后一个刻度的距离db,并将flag赋值为0,存在2种情况:

若df<lib1&&db<lib1,则认为当前刻度的前一个刻度和后一个刻度均为噪点,进行删除;

若df<lib1&&db>lib1,则认为当前刻度或者当前刻度的前一个刻度是噪点,需要进一步进行如下判断:若||da-lib'||>||db-lib'||,则认为当前刻度的前一个刻度是噪点,进行删除,若||da-lib'||<||db-lib'||,则认为当前刻度是噪点,进行删除,若||da-lib'||=||db-lib'||,则认为当前刻度的前一个刻度与当前刻度均不为噪点,其中,df为第i个刻度段的长度,da为第i-1个刻度段的长度,da为df的前一个刻度段的长度

每次删除噪点后flag赋值为1,并且重新计算每两个刻度之间的距离,然后重新检测噪点,直到flag为0,即本次循环不再删除噪点则停止检测。

在删除噪点后,由于刻度个数不完整,需要插入刻度。刻度段平均距离计算规则如下:

libnum表示需要插入的刻度数量,libi表示第i个刻度的距离,new_lib表示新的平均刻度距离,lib'为精确剪切后的重新计算的平均刻度距离。

作为一种可选的实施方式,在步骤(8)中,根据刻度段的平均距离,对噪点去除后的矩形刻度图进行刻度的插入得到目标矩形刻度图,包括:

(a)遍历所有刻度段,计算每个刻度段与阈值lib'的绝对差值,若绝对差值超过0.2lib',则认为此刻度段需要插入刻度;

(b)计算所有需要插入刻度的刻度段距离总和,然后计算需要插入的刻度数目,得到插入刻度的距离,按照该距离在需要插入刻度的刻度段插入刻度;

(c)寻找到最大距离的刻度段,从最大距离的刻度段的右端刻度向左算起,间隔一个刻度段的距离插入刻度,看刻度数量是否满足要求,若不满足则进行步骤(d);

(d)重新计算刻度之间的距离,寻找最大距离的刻度段,按照步骤(c)的方法插入刻度。

(9)根据指针的角度得到指针在目标矩形刻度图中的横坐标,进而计算表盘的读数。

其中,步骤(9)的具体实现方式为:

由指针角度theta,根据式(20)计算指针在矩形刻度图中的横坐标xl',也就是公式(20)计算出的横坐标xl',由此可以得到指针位于两个刻度,第i个刻度x[i]和第i+1个刻度x[i+1]之间,因此仪表的读数为:

bi=(xl'-x[i])/(x[i+1]-x[i]+1)(24)

jg=(i+bi+1)*units(25)

其中xl'表示指针的横坐标,x[i]表示第i个刻度的横坐标,x[i+1]表示第i+1个刻度的横坐标,i表示指针左端刻度的序号,bi表示指针所在的位置xl'与第i个刻度之间的距离占第i个刻度段距离的百分比,units表示单位刻度代表的数值,jg代表仪表的读数。

下面以一个具体的实施例说明本发明中的一种指针式仪表读数识别方法的实现过程。

均匀指针表自动识别读数现以图像704000031.jpg(如图2所示)为例说明:

1、表盘的提取和矫正

(1)输入原始图像704000031.jpg,手动标定保存模板,模板中目标框左上角的坐标是(820,383),宽高分别是(432,342)。

(2)由于每种类型的待识别仪表只有一张图片,因此用模板信息作为目标框,依旧对704000031.jpg图像进行kcf跟踪,提取新目标框所在区域,也就是表盘区域。跟踪结果示意图如附图2所示。

(3)输入kcf算法截取的表盘图像,如附图3所示,以及图片名,用户输入图片进行仿射点标定;

由于标定只需要进行一次,所以用户手动标定的待识别仪表盘上的三个仿射点以图片名称704000031.txt保存,之后每次拍摄的同一块表名称均为704000031.jpg,均采用这704000031.txt中保存的三个仿射点坐标与模板进行仿射变换。

(4)打开模板仿射点文件以及与该图片同名的仿射点文件704000031.txt,读取相应仿射点坐标;

每次输入一张图像,根据图像名寻找对应相同名的txt文件,文件中保存了对应的三个仿射点坐标。

(5)计算仿射矩阵(opencv自带),根据式(4)进行仿射变换(opencv自带),输出经仿射变换矫正后的图像704000031.jpg,如附图3所示,之后的操作都是针对仿射变换后的图像进行。

2、hough圆检测

(1)对图像进行灰度化,局部二值化操作。

灰度化是系数加权灰度化,计算公式如下式(26):

g=0.1140r+0.5870g+0.2989b(26)

其中,g为图像的灰度值。

局部二值化:使用一个25*25的模板,以当前像素为中心,25*25模板邻域内的像素灰度值求均值ss,设定阈值为ss*0.85,比较当前像素的灰度值和阈值的大小,若像素灰度值大于阈值,则像素点赋值255,否则赋值0。

(2)对灰度图像进行houghcircles检测,设定参数最小、最大半径分别是70,170。检测结果为预测圆心center和预测半径r,如附图4所示。

houghcircles检测含有6个参数,其中四个(dp,mindist,param1,param2)为固定参数,根据经验值分别设置为1.5,300,130,40。另外两个参数minrad,maxrad分别为用户指定参数,若用户不输入指定参数,则使用默认参数70,170。根据式(5)验证预测圆心,最后得到预测圆心(220,155)是准确的。

根据式(6)将预测半径r与图像高度的1/2进行比较,得到预测半径r153是准确的。

3、hough直线检测

对局部二值化图像进行细化处理,细化后的图像如附图5所示,对细化后的图像进行表盘指针的检测。

图像细化使用的是zhang快速并行细化算法,指针的检测使用的是houghlines(opencv自带),houghlines参数(threshold)设置默认参数为90,根据式(8)(9)(10)筛选出真正的指针直线,得到的指针直线的参数theta为1.6929,rho为142。

4、基于连通域特征的表盘圆心检测

(1)将二值化图像进行4连通域标记,计算每个连通域的宽wid,高hei,像素个数,根据式(11),(12),(13),(14)筛选符合要求的刻度连通域。

(2)对符合要求的连通域进行最小二乘法直线拟合,对所有拟合的直线两两求交点,根据式(15),(16)对所有的交点进行筛选,图像704000031.jpg筛选后的交点平均值为均值圆心(220.78,185.22)。

(3)计算分别计算预测圆心和均值圆心到指针直线的距离,均值圆心(220.78,185.22)到指针的距离为14.93,预测圆心为(227,158),到指针的距离为12.84,选择距离较小的圆心,因此选择预测圆心(227,158),由于圆心肯定在指针直线上,因此最后的圆心为距离较小的圆心在指针直线上的投影点(225,171)。

5、表盘半径的计算

在得到的圆心和各连通域拟合直线的基础上,计算圆心到各拟合直线的距离dis,根据式(11)(12)(13)(14)筛选出符合要求的连通域。分别计算符合要求的拟合直线对应连通域的质心,计算各质心到圆心的距离。使用冒泡法对距离进行排序,分别寻找两个距离之差小于2的最大距离和最小距离,然后将最小距离到最大距离之间的距离求平均值作为半径r。若没有符合要求的拟合直线,则默认半径为0。

计算完表盘半径后,根据式(18)用预测半径进行验证,图像704000031.jpg的计算半径为127,而预测半径为156,因此最后的半径仍然为127。图像如附图4所示。

6、指针角度的判断

由于hough方法检测到的指针直线的参数theta为1.6929,rho为142,因此不需要用补充方法检测指针。利用纯表盘二值图像,直接进行指针角度的判断,以圆心(225,171)为起点,以半径127为终点,分别沿着指针直线向两侧扩展,计算两端线段白色像素点的个数,白色像素点多的一端所指的方向角度为指针角度。图像704000031.jpg的两侧白色像素点个数分别为174,50,因此选择174所对应的那端所指向的方向为指针的角度277。

7、圆弧刻度图展平成矩形刻度图

以115为小圆半径,以139为大圆半径,得到圆弧刻度条,如附图5所示。将圆弧刻度条按照角度分成2πr份,或者2π份,优先选择2πr份,使得还原更完整,通过式(20)进行坐标变换,将圆弧刻度图的2πr份按列的方式排列,总共有2πr列,每一列的长度为刻度段的宽度24,即构成了一个宽度为2πr,高度为24的矩形刻度图。同时将表盘矫正模板中的最小刻度,最大刻度的坐标点按照同样方法进行坐标换算,计算其在矩形刻度图中的横坐标。

8、最小、最大刻度的检测

矩形刻度条进行局部二值化,滤波之后,在二值矩形刻度图中定位最小刻度、最大刻度,然后将二值矩形刻度图进行剪切,去除刻度条外侧干扰。

利用矩形刻度图中仿射点的坐标,搜索范围为4个平均刻度距离lib,lib计算如下式(27):

以第一个仿射点横坐标106为中心的搜索范围(82,130)内,根据搜索条件搜索最小刻度。

再以第三个仿射点横坐标713为中心的搜索范围(689,737)内,根据搜索条件搜索最大刻度。

此处没有搜索到有效的最小、最大刻度,因此默认第一个仿射点横坐标106为最小刻度,第三个仿射点横坐标713为最大刻度。根据定位到的最小、最大刻度剪切后的二值矩形刻度图如附图7(a)所示。

9、噪点的去除和刻度的插入

由于矩形刻度条中的刻度信息可能不完整,为了更直观地看到刻度的分布,新建二值图像将刻度信息还原。

对精确剪切后的矩形刻度进行4连通域标记,计算每个连通域的质心,根据质心横坐标重新构建矩形刻度图。重新构建的矩形刻度图如附图7(b)所示。

由于噪点连通域的质心重构的刻度也存在于矩形刻度图中,因此需要根据刻度间的距离将噪点去除。

没有噪点的情况下,即使刻度分布不是绝对的均匀,但是刻度之间的距离存在一个下限。精确剪切后重新计算的平均刻度距离:

因此距离下限为式(29)所示:

lib1=lib*0.8=9.91(29)

根据去除规则,图像704000031.jpg的矩形刻度条被删除2个噪点,删除噪点后的矩形刻度图如附图7(c)所示。

由于圆弧刻度条的截取没有完整地把刻度信息截取进去,并且二值化之后多个不完整的小刻度被当成是背景,因此存在多个刻度段中间需要插入刻度。

刻度数量range由用户输入,图像704000031.jpg的range为50,根据插入规则进行刻度插入,插入刻度后的矩形刻度图如附图7(d)所示。

10、均匀表盘读数的计算

根据指针的角度计算指针所处在位置,再根据每个刻度代表的单位计算读数。

图像704000031.jpg的指针角度为277°,因此指针的角度和最小刻度的坐标换算到矩形刻度图中的横坐标为:

位于第40个刻度x[39]和第41个刻度x[40]之间,所以仪表的读数为:

bi=(xl-x[i])/(x[i+1]-x[i]+1)=(507.98-488)/(508-488+1)=0.952(31)

jg=(i+bi+1)*units=(39+0.952+1)*2=81.9(32)

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1