基于动态图像处理的水表识别方法与流程

文档序号:11200185阅读:1777来源:国知局
基于动态图像处理的水表识别方法与流程

本发明属于水表的检定,特别是指一种基于动态图像处理的水表识别方法。



背景技术:

水表是国家重点管理的计量器具,广泛运用于城镇居民用水计量和工业生产用水计量,是贸易结算强检计量器具,显然水表测量的准确性非常重要,而水表检定是保证水表测量准确的必要手段。指针式水表的检定是按照国家质量监督检验检疫总局于2009年4月30日颁布的《jjg162-2009冷水水表检定规程》对dn15-dn50口径的指针式水表进行检定,对于指针式水表的检定项目主要有三类,即外观和功能检查、密封性检查、示值误差检定。尤以最后一项作为检定过程中的关键指标。

示值误差检定是检定水表的最小流量点q1、分界流量点q2、常用流量点q3三个流量点在水温低于30℃环境下的误差,是检定准确度等级的根本体现。水表的相对示指误差e用百分数表示:

e=[(vi-va)/va]×100%

式中va表示实际体积,即任意时间内流经水表的水的总体积,通过标准器获取的标准体积。vi表示指示体积,对应于实际体积,水表所指示的水的体积。在进行检定时,水表的检定低区(q1≤q<q2)最大允许误差为±5%,检定高区最大允许误差为±2%。

检定过程中获取指示体积,即获取水表实际用水量具有多样化途径,其中传统的方法是人工读表法,即人眼读取水表表盘示值。人眼读取水表起始读数,检定结束后再次读取水表的终止读数,将两次读数之差与标准器内的标准体积相比较,从而获得水表各流量点下的示指误差,判定水表是否合格。而水表检定是一项重复性强、视觉劳动强度大的工作,极易产生视觉疲劳,导致读数错误。为了降低水表检测人员视觉疲劳,实现水表自动化检定,图像识别技术作为具有一双不会轻易疲劳的眼睛的技术成为提高水表检定速度的有效工具之一。基于图像识别的水表示值自动读数技术主要是利用相机对表盘进行静态拍照,然后利用计算机图像处理与模式识别技术对采集到的图像进行分析处理从而得到读数结果。但这种方案也存在不足:一是拍摄获取的照片质量容易受到环境的干扰,如光的明暗亮度会影响照片的识读效果,表盘内的水珠甚至会造成拍摄的照片不能用于计算机识别;二是只能针对静态表盘拍照,限制检定方法要采用启停法,不易于提升检定效率;三是识别准确率较低,有时表盘里个别指针圈被遮挡,计算机根本无法识别表盘上的数据,通用性并不高。

为解决静止拍照带来的问题,现有动态水表识别方法包括:一是激光采样抄表法。该方法是对始动梅花针进行采样,对其变化量进行累加计算,获得被检水表的变化量。由于激光采样是一个动态连续的过程,所以需要软件提前录入被检水表始动梅花针转动的单位水量,一般梅花针和最后一位指针的减速比约为(11-15):1,保证测量读数的精度。但是梅花针与最后一位指针的减速比只是约数,并不是精确值,该值的变化会直接导致测量读数的偏差,因此,该方法在准确度方面有待提高。二是脉冲法,脉冲法需在水表上方安装脉冲发射与接收装置,水表运转之前,将发射的光束对准水表计量指针,水表运转过程中,指针连续转动遮挡光束的反射信号,脉冲装置产生脉冲信号,计算机接收该信号并将其转换成水表的用水量。但是实际应用中本方法最不方便的是对焦问题,脉冲装置发射的光束只有在对焦情况下才能获得最强信号,才能获得有效水表用水量。而脉冲装置的焦距非常狭窄,安装时位置稍微变动就取不到信号,造成水表识别结果不准确。

申请人检索到的专利文献包括:申请号为201310503204.2的专利申请中公开了一种水表流量识别方法,该方法通过摄像头连续拍摄水表表盘图像,然后对指针当前转过的总角度进行记录,再计算识别过程中指针转过的总圈数m,通过公式m×m×10获得水表流量,m为示指标盘对应的计量档位。该方法中首先记录并存储每次拍摄图片的相对角度值ai(相对角度值是指针相对于参考零度的角度值),再依次比较连续两张图片的转过角度值,并依次存储所有对比的转过角度值即绝对角度值bi,而每次计算连续两张图片绝对角度值会带来一定误差,最后将绝对角度值bi相加计算出指针转过的总圈数m,多次误差累积传递会加大计算的误差值,降低了水表用水量识别的准确性。



技术实现要素:

本发明的目的是提供一种基于动态图像处理的水表识别方法,计算方法中仅需要计算最后一次指针转过角度与首次指针转过角度的差值带来的误差,相对于多次差值累积计算的方法,大大减少了识别运算引起的误差,提高了水表用水量识别的准确性。

本发明的整体技术构思是:

基于动态图像处理的水表识别方法,包括如下步骤:

a、在水表上方安装摄像头,摄像头垂直水表上方安装,摄像头安装高度满足其拍摄界面包括水表表盘所有示值标盘,所述水表为包含红色指针的指针式水表;

b、摄像头在水表检定阶段以一定时间间隔被触发拍摄水表表盘图像,通过图像采集卡传输至计算机;水表表盘图像为水表指针自始至终的动态图像,摄像头的最小帧数大于水表处于过载流量时最低量级的流量标盘上指针每秒转过圈数的2倍,所述一定时间间隔小于最低量级流量标盘上指针在过载流量下转一整圈所需时间的1/2,即至少捕捉指针转一圈过程中两张图像,上述一定时间间隔计算式为s=(36000×n)/(q4×2),其中q4为水表的过载流量,根据计算式q4=1.25×q3获得,所述q3为水表的常用流量,n为上述流量标盘对应的量级;

c、对步骤b中拍摄的水表表盘图像进行预处理,进行去除图像中的白色区域和黄色区域操作;

d、对步骤c中经过预处理后的图片进行灰度化及图像的二值化处理,使用八连通域算法对二值化后的图片进行去噪点处理,获得只包含有效红色指针区域的指针图;

e、对步骤d中获得的只包含有效红色指针区域的指针图进行处理,利用投影法定位最低量级的流量标盘上的指针位置,计算其转过的相对角度;

f、通过触发信号控制摄像头获取水表表盘图像,计算每个图像中水表指针转过的相对角度,通过比较法计算水表用水量。

本发明中各步骤的具体技术方案如下:

摄像头较为优选的安装方式是,所述的步骤a中摄像头安装高度使其所拍摄的水表表盘图像布满摄像区域。

所述的步骤c的具体方法如下:

步骤c1、对上述输入水表表盘图像进行去除白色区域操作

扫描水表表盘图像,对每个像素点进行如下运算:

if[src(i,j).r)>120&src(i,j).g>120&src(i,j).b>120]

dst(i,j)=0

其中src(i,j).r、src(i,j).g、src(i,j).b分别依次代表水表表盘图像上像素src(i,j)的红色、绿色和蓝色分量值,120是像素src(i,j)的rgb红色、绿色和蓝色分量值阈值,当像素src(i,j)的红色、绿色及蓝色分量值同时大于阈值120时,将该位置的像素点赋值0并显示为黑色,获得去除白色区域后的图像dst(i,j);

水表表盘图像中表盘区域的60%至80%为白色背景颜色,为消除白色区域对图像二值化处理的干扰,有效提取最低量级流量标盘上的红色指针图像特征,进行去除白色区域操作。白色区域像素的红色、绿色和蓝色分量值按照近似等比组成,且实际应用环境由于光照影响,较亮白色区域对红色指针提取的干扰较大,因此申请人利用上述方案去除表盘中白色区域。去除水表表盘白色杂质,使水表表盘图像颜色更单一化,提高了图像二值化准确性,保证了有效红色指针的完整性。

步骤c2、对上述去除白色区域后的图像进行去除黄色区域操作

利于以下计算公式去除水表表盘图像中黄色区域:

if[dst(i,j).r)>50&dst(i,j).g>50]

dst1(i,j)=0

50是像素dst(i,j)的红色分量dst(i,j).r和绿色分量dst1(i,j).g的阈值,dst1为去除黄色区域后的水表表盘图像,当像素dst(i,j)的红色和绿色分量值同时大于阈值50时,将该位置的像素点赋值0并显示为黑色,获得去除黄色区域后的图像dst1(i,j)。

水表表壳及中罩材料一般采用铅黄铜,即水表表盘图像中的黄色区域,该黄色包含了红色分量和绿色分量且红色分量和绿色分量的比值近似1,由于自然光照影响,水表表盘图像中会产生不同亮度的黄色,该黄色区域对有效红色指针的提取产生干扰,去除后水表表盘区域颜色更加单一化,进一步提高了步骤d处理图像的准确度。

所述的步骤d包括如下步骤:

步骤d1、对预处理后的图片进行灰度化处理

利用红色通道分量值减去绿色通道分量值的差值作为灰度图的灰度值,灰度化指图像由三通道的彩色图像转换成单通道的灰度图像的过程,灰度图只含亮度信息,不含色彩信息,因此该操作使后续图像的计算量变少,且仍能反映整幅图像的整体和局部的色度和亮度级的分布和特征。对于红色指针区域的像素点,其红色分量比蓝色和绿色分量值高,因此利用红色通道分量值减去绿色通道分量值的差值作为灰度图的灰度值,目的是突出表盘图像中红色指针。其计算公式如下:

dst2(i,j)=dst1(i,j).r-dst1(i,j).g

dst2为水表表盘图像的灰度图

图像灰度化有很多种,如最大值法、平均值法及加权平均法等,该步骤采用水表表盘图像中的红色通道分量值与绿色通道分量值作差法,该方法突出了水表表盘图像中红色信息,有利于步骤d2提取完整的红色指针。

步骤d2、对步骤d1中的灰度图通过适当的阈值选取获得仍可反映图像特征的二值化图像

图像的二值化使图像变得更简单,图像上的像素点的灰度值仅为0和255,不再涉及像素的多级值,图像数据量减小,能凸显出感兴趣的目标的轮廓。利用otsu全局阈值法来获得图像分割阈值,阈值t使目标与背景两类的类间方差最大,所有灰度大于或等于阈值t的像素被判定为红色指针,其灰度值为255,所有小于阈值t的像素点判定为背景,灰度值为0;阈值分割表达式如下:

dst3为分割后的二值图像;

步骤d3、利用八连通域算法提取水表表盘中红色指针区域

图像二值化不可避免地会将背景区域错误地分割为目标区域,为提取水表表盘中红色指针区域,优选的技术方案是,利用八连通域算法统计每个连通域的面积,再根据面积大小提取有效红色指针区域;根据所选摄像头分辨率大小,保留连通域面积大于1000的连通域,其余部分像素赋值0,获得只包含有效红色指针区域的指针图。该步骤去除了二值图像中杂质的干扰,保证了红色指针区域的有效性和完整性。

步骤e包括如下步骤:

步骤e1、利用canny算子提取上述指针图的边缘,并通过霍夫变换圆检测算法找出指针圆;霍夫变换圆检测算法需设置待识别圆半径范围参数,通过观测水表指针圆半径与整幅图像的宽度比将圆半径最小值设置为整幅图像宽度的1/20,最大值设置为整幅图像宽度的1/15。由于霍夫变换依据的是“投票”原则,谁的票数高那么就说明满足这个参数的圆形越饱满,有可能检测出不是指针圆的假圆。继续选择有可能的最低量级的流量标盘上的指针区域,对检测出的指针圆圆心位置排序,找出圆心列坐标最低圆,然后以其圆心为中心,并选择该圆半径5倍的正方形区域作为指针区域,进一步精确定位上述指针位置,利用投影法分割获得只包含最低量级的流量标盘上的指针区域,即上述指针为白色,背景为黑色的水表指针区域先进行垂直投影,即列白色像素个数统计,记录列白色像素个数由无变有及由有变无的对应列数,并且两列间距大于水表指针区域宽度1/6时,该列便为指针区域分界列;在两列间对图像进行水平投影,即行白色像素个数统计,记录行白色像素个数由无变有及由有变无的对应行数,并且两行间距大于水表指针区域高度1/8时,该行即为指针区域分界行。将上述行列数作为指针分割位置,完成指针区域的精确定位,获得只包含最低量级的流量标盘上的指针区域图dst4;

步骤e2、计算最低量级的流量标盘上的指针的回转中心,水表指针的回转中心有且只有一个,回转中心即物体的质心(质心是物体的质量中心,是研究物体机械运动的重要参考点),在理论上,其质心是对物体的质量分布用加权平均法求出的平均中心。水表指针形状属于平面薄片类型,水表指针质心坐标(center.x,center.y)由以下公式获得:

dst4(i,j)为在(i,j)位置处像素的灰度值大小,m、n分别代表dst4图像中识别出的指针像素点在方向i,j上的个数,x、y分别代表质心位置横纵坐标,由于指针区域图dst4上像素点的像素值非0即255,而属于指针的像素点其像素值为255,因此求取指针质心的过程即分别求取属于指针像素点的横纵坐标均值的过程。

步骤e3、确定指针指向,指针指向即为指针回转中心与指针针尖之间连线方向,由指针的形状特征可知,指针针尖所对应的位置均是距离指针回转中心最远的位置,利用逐点扫描法获得指针上距离指针回转中心最远的距离distance,其计算如下:

其中point为指针上像素点,point.x及point.y为point点所对应的横坐标和纵坐标,max为所求距离中最大值,以指针圆回转中心为圆心,以指针上所有像素点为搜索对象,寻找指针上像素点到回转中心距离为[0.9×distance,distance]的像素,计算符合条件的像素点的质心,该质心与指针回转中心连线方向即为指针方向;

理论上最远距离对应的像素点即为指针针尖处,但实际中存在提取指针出现平针针尖情况,这种情况会导致指针方向识别出现误差,因此利用指针针尖处满足一定距离的像素点的质心与指针回转中心的连线确定为指针方向。以指针圆回转中心为圆心,以指针上所有像素点为搜索对象,寻找指针上像素点到回转中心距离为[0.9×distance,distance]的像素,计算符合条件的像素点的质心,该质心与指针回转中心连线方向即为指针方向。

步骤e4、取dst4图像中垂直方向为参考零度,计算指针转过的相对角度θ;以指针圆回转中心为原点建立坐标系,通过计算指针方向与坐标垂直方向夹角来获取指针转过相对角度,其计算公式如下:

△x=point.x-center.x

△y=point.x-center.y

tanθ=△x/△y

当指针方向连线位于第一象限时,△x>0,△y>0,θ=pi-atan(△x/△y);当指针方向连线位于第二象限时,△x>0,△y<0,θ=atan(△x/△y);当△x=0,△y>0时说明指针指向y轴正方向θ=π,当△x=0,△y<0时说明指针指向y轴负方向θ=0;当指针方向连线位于第三象限时,△x<0,△y<0,θ=2×pi-atan(△x/△y);当指针方向连线位于第四象限时,△x<0,△y>0,θ=pi+atan(△x/△y);当△x>0,△y=0时说明指针指向x轴正方向θ=π/2,当△x<0,△y=0时说明指针指向x轴负方向θ=3π/2。

所述的步骤f具体为:水表检定期间摄像头不断被触发拍照,按照步骤c-e识别出每张图像中水表指针转过的相对角度θi,其中0≤i≤m,m为自然数,判断连续两张图像中当前图像水表指针的相对角度相对于上一张图像中水表指针的相对角度,若两次角度作差差值绝对值小于5°,说明水表指针没有转动;若两次角度作差差值大于5°,则说明水表指针正常转动,水表总圈数n保持不变;若两次角度作差差值小于-5°,则说明水表指针已经转过一圈,令水表转过圈数n=n+1,且不需要保留两次角度差值;

具体计算过程如下:

for(i=1;i≤m;i++)

{if[(θi-θi-1)<-5]n=n+1}

其中n为摄像头最后一次触发拍照指针转过的整圈数,水表用水量用以下公式求得:

c=[n+(θm-θ0)/360]×n×10

其中c为水表检定过程中水表的总用水量,n为流量标盘对应的量级。

还包括一步骤g,该步骤是将步骤f中得到的水表流量与水表标准器的测量值作比较,依据冷水水表检定规程判定该水表是否合格,水表标准器为标准流量计,标准流量计的测量值通过plc直接读取。

申请人将本发明中公开的方法与对比文献中的方法进行如下比较:

本发明与申请号为201310503204.2中公开的现有技术中的方法相比较,优势表现为如下:

摄像头连续拍照,假设每张照片中水表指针相对角度为xi,(0≤i≤n),n为水表检定过程中拍摄的水表照片个数。由于现有水表检定设施和计算指针相对角度算法的影响,识别指针相对角度时会产成误差角度△xi,(0≤i≤n),n为水表检定过程中拍摄的水表照片个数。申请号为201310503204.2的专利文献中首先计算相对于上一次转过的角度b=[b(0),b(1),…,b(i),…,b(n)],那么集合b运算产生的误差角度△x=[(△x0+△x1),(△x1+△x2),△(xi-1+△xi),…,(△xn-1+△xn)],接着计算b(0)+b(1)+…+b(i)+…+b(n)得到总共转过的角度,而上述操作产成的误差角度和为△θ=△x0+△xn+2×(△x1+△+xi+△+△xn)。本发明方法只需比较连续两次相对角度的大小,当相对于上一次转过的角度小于0时,水表转过圈数n=n+1,最后依据公式α=n×360+(xn-x0)得到指针总共转过的角度,上述操作产生的误差角度为△α=△x0+△xn。本发明提出的算法与现有技术相比计算总共转过角度误差减少了β=△θ-△α=2×(△x1+△+xi+△+△xn),从水表检定过程要求精确考虑,本发明提出的算法产生的误差更小,计算的水表用水量更精确。

本发明所具备的实质性特点和取得的显著技术进步在于:

1、本发明对水表表盘图像进行预处理,去除水表表盘白色区域和黄色区域,将其统一置为黑色区域,使水表表盘颜色更加单一化,消除颜色信息对水表表盘图像二值化的干扰,提高水表指针提取的完整性。

2、根据指针本身颜色信息,通过红通道的灰度值与绿通道的灰度值做差,获得图像灰度图,突出水表表盘红色信息,有利于水表红色指针的提取。

3、确定最小量级示指标盘上指针圆心。利用质心法求取指针回转中心(即指针圆心),有效提高了圆心识别准确性。

4、利用质心法确定指针针尖位置。通过寻找指针上像素点到回转中心距离为[0.9×distance,distance]的像素,计算符合条件的像素点的质心,确定该质心为指针针尖位置,提高了指针针尖定位准确性。

5、利用算法定位最小量级标盘位置,计算动态指针的转过角度统计水表检定过程中水表用水量,较现有技术准确度及精确性明显提高。

附图说明

图1为本发明水表表面的示意图。

图2为本发明的流程示意图。

图3为本发明中步骤c预处理流程示意图。

图4为本发明中步骤d灰度转换及二值化流程示意图。

图5为本发明中步骤e定位指针计算角度流程示意图。

具体实施方式

以下结合附图对本发明的实施例做进一步描述,但不作为对本发明的限定,本发明的保护范围以权利要求记载的内容为准,任何依据说明书做出的等效技术手段替换,均不脱离本发明的保护范围。

本实施例的整体技术构思如图示,其中水表表盘有五位跳字,四个红指针和一个梅花指针组成,跳字表盘为五个黑字组成。水表的读数一般是按吨算的,但是水表检定过程中五个黑字一般不具有实际指导意义,四个红指针示值标盘按顺时针方向,依次是十分位针(×0.1)、百分位针(×0.01)、千分位针(×0.001)、万分位针(×0.0001)。×0.0001的指针转一圈,×0.001的指针转一格;×0.001的指针转一圈,×0.01的指针转一格;×0.01的指针转一圈,×0.1的指针转一格。

对于指针式水表的检定项目主要有三类,即外观和功能检查、密封性检查、示指误差检定。尤以最后一项作为检定过程中的关键指标。示值误差检定是检定水表的最小流量点q1、分界流量点q2、常用流量点q3三个流量点在水温低于30℃环境下的误差,是检定准确度等级的根本体现。水表的相对示指误差e用百分数表示:

e=[(vi-va)/va]×100%

式中va表示实际体积,即任意时间内流经水表的水的总体积,通过标准器获取的标准体积。vi表示指示体积,对应于实际体积,水表所指示的水的体积。在进行检定时,水表的检定低区(q1≤q<q2)最大允许误差为±5%,检定高区最大允许误差为±2%。

检定过程按照如下方式进行:

a、在水表上方安装摄像头,摄像头垂直水表上方安装,摄像头安装高度使其所拍摄的水表表盘图像布满摄像区域。所述水表为包含红色指针的指针式水表。水表读数精度为万分位的低一个数量级,即图1中万分位的流量标盘每一小格的十分之一。

b、开始检定测试,摄像头在水表检定阶段以一定时间间隔被触发拍摄水表表盘图像,通过图像采集卡传输至计算机;水表表盘图像为水表指针自始至终的动态视频图像,摄像头的最小帧数大于水表处于过载流量时最低量级的流量标盘上指针每秒转过圈数的2倍,所述一定时间间隔小于最低量级流量标盘上指针在过载流量下转一整圈所需时间的1/2,即至少捕捉指针转一圈过程中两张图像,上述一定时间间隔计算式为s=(36000×n)/(q4×2),其中q4为水表的过载流量,根据计算式q4=1.25×q3获得,所述q3为水表的常用流量,n为上述流量标盘对应的量级;如图1中水表的常用流量q3为4m3/h。水表最低量级示指标盘上指针在常用流量状态下指针转速相对于在分界流量q2及最小流量q1下是最快的,因此触发摄像头拍摄最短时间间隔小于最低量级示指标盘上指针在最大流量下转一圈所需时间的1/2。

c、对步骤b中拍摄的水表表盘图像进行预处理,进行去除图像中的白色区域和黄色区域操作。

所述的步骤c的具体方法如下:

步骤c1、对上述输入水表表盘图像进行去除白色区域操作

扫描水表表盘图像,对每个像素点进行如下运算:

if[src(i,j).r)>120&src(i,j).g>120&src(i,j).b>120]

dst(i,j)=0

其中src(i,j).r、src(i,j).g、src(i,j).b分别依次代表水表表盘图像上像素src(i,j)的红色、绿色和蓝色分量值,120是像素src(i,j)的rgb红色、绿色和蓝色分量值阈值,当像素src(i,j)的红色、绿色及蓝色分量值同时大于阈值120时,将该位置的像素点赋值0并显示为黑色,获得去除白色区域后的图像dst(i,j);

水表表盘图像中表盘区域的60%至80%为白色背景颜色,为消除白色区域对图像二值化处理的干扰,有效提取最低量级流量标盘上的红色指针图像特征,进行去除白色区域操作。白色区域像素的红色、绿色和蓝色分量值按照近似等比组成,且实际应用环境由于光照影响,较亮白色区域对红色指针提取的干扰较大,因此申请人利用上述方案去除表盘中白色区域。去除水表表盘白色杂质,使水表表盘图像颜色更单一化,提高了图像二值化准确性,保证了有效红色指针的完整性。

步骤c2、对上述去除白色区域后的图像进行去除黄色区域操作

利于以下计算公式去除水表表盘图像中黄色区域:

if[dst(i,j).r)>50&dst(i,j).g>50]

dst1(i,j)=0

50是像素dst(i,j)的红色分量dst(i,j).r和绿色分量dst1(i,j).g的阈值,dst1为去除黄色区域后的水表表盘图像,当像素dst(i,j)的红色和绿色分量值同时大于阈值50时,将该位置的像素点赋值0并显示为黑色,获得去除黄色区域后的图像dst1(i,j)。

水表表壳及中罩材料一般采用铅黄铜,即水表表盘图像中的黄色区域,该黄色包含了红色分量和绿色分量且红色分量和绿色分量的比值近似1,由于自然光照影响,水表表盘图像中会产生不同亮度的黄色,该黄色区域对有效红色指针的提取产生干扰,去除后水表表盘区域颜色更加单一化,进一步提高了步骤d处理图像的准确度。

所述的步骤d包括如下步骤:

步骤d1、对预处理后的图片进行灰度化处理

利用红色通道分量值减去绿色通道分量值的差值作为灰度图的灰度值,灰度化指图像由三通道的彩色图像转换成单通道的灰度图像的过程,灰度图只含亮度信息,不含色彩信息,因此该操作使后续图像的计算量变少,且仍能反映整幅图像的整体和局部的色度和亮度级的分布和特征。对于红色指针区域的像素点,其红色分量比蓝色和绿色分量值高,因此利用红色通道分量值减去绿色通道分量值的差值作为灰度图的灰度值,目的是突出表盘图像中红色指针。其计算公式如下:

dst2(i,j)=dst1(i,j).r-dst1(i,j).g

dst2为水表表盘图像的灰度图

图像灰度化有很多种,如最大值法、平均值法及加权平均法等,该步骤采用水表表盘图像中的红色通道分量值与绿色通道分量值作差法,该方法突出了水表表盘图像中红色信息,有利于步骤d2提取完整的红色指针。

步骤d2、对步骤d1中的灰度图通过适当的阈值选取获得仍可反映图像特征的二值化图像

图像的二值化使图像变得更简单,图像上的像素点的灰度值仅为0和255,不再涉及像素的多级值,图像数据量减小,能凸显出感兴趣的目标的轮廓。利用otsu全局阈值法来获得图像分割阈值,阈值t使目标与背景两类的类间方差最大,所有灰度大于或等于阈值t的像素被判定为红色指针,其灰度值为255,所有小于阈值t的像素点判定为背景,灰度值为0;阈值分割表达式如下:

dst3为分割后的二值图像;

步骤d3、利用八连通域算法提取水表表盘中红色指针区域

图像二值化不可避免地会将背景区域错误地分割为目标区域,为提取水表表盘中红色指针区域,优选的技术方案是,利用八连通域算法统计每个连通域的面积,再根据面积大小提取有效红色指针区域;根据所选摄像头分辨率大小,保留连通域面积大于1000的连通域,其余部分像素赋值0,获得只包含有效红色指针区域的指针图。该步骤去除了二值图像中杂质的干扰,保证了红色指针区域的有效性和完整性。

步骤e包括如下步骤:

步骤e1、利用canny算子提取上述指针图的边缘,并通过霍夫变换圆检测算法找出指针圆;霍夫变换圆检测算法需设置待识别圆半径范围参数,通过观测水表指针圆半径与整幅图像的宽度比将圆半径最小值设置为整幅图像宽度的1/20,最大值设置为整幅图像宽度的1/15。由于霍夫变换依据的是“投票”原则,谁的票数高那么就说明满足这个参数的圆形越饱满,有可能检测出不是指针圆的假圆。继续选择有可能的最低量级的流量标盘上的指针区域,对检测出的指针圆圆心位置排序,找出圆心列坐标最低圆,然后以其圆心为中心,并选择该圆半径5倍的正方形区域作为指针区域,进一步精确定位上述指针位置,利用投影法分割获得只包含最低量级的流量标盘上的指针区域,即对上述指针为白色,背景为黑色的水表指针区域先进行垂直投影,即列白色像素个数统计,记录列白色像素个数由无变有及由有变无的对应列数,并且两列间距大于水表指针区域宽度1/6时,该列便为指针区域分界列;在两列间对图像进行水平投影,即行白色像素个数统计,记录行白色像素个数由无变有及由有变无的对应行数,并且两行间距大于水表指针区域高度1/8时,该行即为指针区域分界行。将上述行列数作为指针分割位置,完成指针区域的精确定位,获得只包含最低量级的流量标盘上的指针区域图dst4;

步骤e2、计算最低量级的流量标盘上的指针的回转中心,水表指针的回转中心有且只有一个,回转中心即物体的质心(质心是物体的质量中心,是研究物体机械运动的重要参考点),在理论上,其质心是对物体的质量分布用加权平均法求出的平均中心。水表指针形状属于平面薄片类型,水表指针质心坐标(center.x,center.y)由以下公式获得:

dst4(i,j)为在(i,j)位置处像素的灰度值大小,m、n分别代表dst4图像中识别出的指针像素点在方向i,j上的个数,x、y分别代表质心位置横纵坐标,由于指针区域图dst4上像素点的像素值非0即255,而属于指针的像素点其像素值为255,因此求取指针质心的过程即分别求取属于指针像素点的横纵坐标均值的过程。

步骤e3、确定指针指向,指针指向即为指针回转中心与指针针尖之间连线方向,由指针的形状特征可知,指针针尖所对应的位置均是距离指针回转中心最远的位置,利用逐点扫描法获得指针上距离指针回转中心最远的距离distance,其计算如下:

其中point为指针上像素点,point.x及point.y为point点所对应的横坐标和纵坐标,max为所求距离中最大值,以指针圆回转中心为圆心,以指针上所有像素点为搜索对象,寻找指针上像素点到回转中心距离为[0.9×distance,distance]的像素,计算符合条件的像素点的质心,该质心与指针回转中心连线方向即为指针方向;

理论上最远距离对应的像素点即为指针针尖处,但实际中存在提取指针出现平针针尖情况,这种情况会导致指针方向识别出现误差,因此利用指针针尖处满足一定距离的像素点的质心与指针回转中心的连线确定为指针方向。以指针圆回转中心为圆心,以指针上所有像素点为搜索对象,寻找指针上像素点到回转中心距离为[0.9×distance,distance]的像素,计算符合条件的像素点的质心,该质心与指针回转中心连线方向即为指针方向。

步骤e4、取dst4图像中垂直方向为参考零度,计算指针转过的相对角度θ;以指针圆回转中心为原点建立坐标系,通过计算指针方向与坐标垂直方向夹角来获取指针转过相对角度,其计算公式如下:

△x=point.x-center.x

△y=point.x-center.y

tanθ=△x/△y

当指针方向连线位于第一象限时,△x>0,△y>0,θ=pi-atan(△x/△y);当指针方向连线位于第二象限时,△x>0,△y<0,θ=atan(△x/△y);当△x=0,△y>0时说明指针指向y轴正方向θ=π,当△x=0,△y<0时说明指针指向y轴负方向θ=0;当指针方向连线位于第三象限时,△x<0,△y<0,θ=2×pi-atan(△x/△y);当指针方向连线位于第四象限时,△x<0,△y>0,θ=pi+atan(△x/△y);当△x>0,△y=0时说明指针指向x轴正方向θ=π/2,当△x<0,△y=0时说明指针指向x轴负方向θ=3π/2。

f、通过触发信号控制摄像头获取水表表盘图像,计算每个图像中水表指针转过的相对角度,通过比较法计算水表用水量;

所述的步骤f具体为:水表检定期间摄像头不断被触发拍照,按照步骤c-e识别出每张图像中水表指针转过的相对角度θi,其中0≤i≤m,m为自然数,判断连续两张图像中当前图像水表指针的相对角度相对于上一张图像中水表指针的相对角度,若两次角度作差差值绝对值小于5°,说明水表指针没有转动;若两次角度作差差值大于5°,则说明水表指针正常转动,水表总圈数n保持不变;若两次角度作差差值小于-5°,则说明水表指针已经转过一圈,令水表转过圈数n=n+1,且不需要保留两次角度差值;

具体计算过程如下:

for(i=1;i≤m;i++)

{if[(θi-θi-1)<-5]n=n+1}

其中n为摄像头最后一次触发拍照指针转过的整圈数,水表用水量用以下公式求得:

c=[n+(θm-θ0)/360]×n×10

其中c为水表检定过程中水表的总用水量,n为流量标盘对应的量级。

还包括一步骤g,该步骤是将步骤f中得到的水表流量与水表标准器的测量值作比较,依据冷水水表检定规程判定该水表是否合格,水表标准器为标准流量计,标准流量计的测量值通过plc直接读取。

在开始检定之前,把水表串联在实验台上夹紧,将水表标准器安装在被检水表的同一管道出水端,然后开始所述步骤a至步骤f,在所述步骤f之后,执行步骤g;例如将图1中口径为dn20的商用水表作为被检水表,按照《冷水水表检定规程》中水表检定操作步骤对上述水表进行检定。分别采用人工读表法(最普遍读表方法)和本实施例的方法对水表用水量进行计算,实际用水体积由同一标准器获得,根据误差计算公式,计算被检水表示值误差。在常用流量q3=4m3/h下,标准器实际用水体积为99.98l,人工读表法获取的水表用水量为101.35l,示值误差为1.37%;本实施例的方法计算的水表用水量为100.968l,示值误差为0.988%。人工读表误差一般在1/10-1/3分格之间,即水表读数分辨率为0.01-0.033升,而本实施例的方法识别误差为1/36分格,即水表读数分辨率为0.0027升,因此本实施例的方法获得的示值误差精确度及准确性更高。

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