APP下载

基于Hough变换的指针仪表读数识别方法

2022-07-18吴东潞解锡霖

关键词:圆弧标尺读数

吴东潞, 高 明, 解锡霖, 刘 昶

(沈阳理工大学 信息科学与工程学院,辽宁 沈阳 110159)

由于指针式仪表具有价格低廉、结构简单、抗电磁干扰强、使用寿命长等优点,更适用于具有复杂电磁干扰的工作环境,在电力、铁路等行业中仍然被广泛采用.然而,该类仪表读数没有被数字化,传统方法一般采用人工抄表方式,不仅效率低、容易出错,也不利于数据的存储、管理和分析.近年来,随着计算机视觉技术的发展,陆续出现了一些通过拍摄仪表面板图像对仪表读数进行识别的“巡检机器人”,用于代替人工对仪表读数进行记录,指针仪表的读数识别方法也成为相关行业的关注热点.

指针仪表读数识别一般通过识别仪表上的指针和刻度两个主要特征完成.吴禹伦等针对飞机迎角表,采用连通区方法提取指针,通过骨架细化和Hough变换提取指针直线,利用读数与角度的关系获取读数,但该方法要求仪表必须水平放置[1].张平等针对圆形仪表,通过Hough变化检测圆形表盘和指针尖端位置,将刻度线端点作为起始和终止点[2],该方法对检测到的圆心位置的准确性要求较高.李娜等通过最小二乘法拟合指针直线[3].向友君等针对一种油位计,采用概率Hough变换提取指针直线,利用Harris角点提取刻度位置[4].李全鹏等通过三次样条插值去除指针阴影的影响,提高指针提取的准确性[5].徐发兵等采用深度学习的方法,提取识别刻度值,构造数字包围框中心的连线,通过指针与连线的交点确定读数[6].对于图像中仪表存在倾斜的情况,黄炎等通过提取仪表的SURF特征点,将仪表与标准模板进行匹配,获取校正所需的单应矩阵,再通过在模板上定义的测量线及测量线上的灰度变化确定指针位置[7];周登科等采用YOLOv3深度网络提取仪表盘上的关键点,再对仪表盘进行倾斜和旋转校正[8].这类方法适用于仪表存在倾斜的情况,但也增加了计算量.也有学者针对图像中的多块仪表进行读数识别,如赵健等利用鱼眼相机拍摄多块仪表图像,经图像校正后对仪表排列的位置关系区分出不同仪表再分别识别读数[9];杨应彬等通过轮廓特征筛选方法区分不同仪表,再采用概率Hough变换方法提取指针直线[10].受相机视场范围变大的影响,这类方法中仪表的图像尺寸相对变小,且容易受到背景的干扰.

仪表读数识别算法主要需要解决算法的准确度和鲁棒性问题,本文以广州市宇泰仪表电器有限公司生产的85C1系列仪表为识别目标,提出一种利用Hough变换和图像变换进行仪表读数识别的方法.

1 读数识别方法

1.1 指针直线提取

多数仪表的指针都具有典型的直线特征,85C1系列仪表如图1a所示,其指针被涂装成红色,与背景相比具有显著的差别.利用该特点,本文采用彩色相机采集仪表的图像,通过颜色阈值分割方法提取出其红色指针的区域,再利用中值滤波去除噪声点后,得到指针直线的样本点集,提取的指针区域见图1b.

图1 指针样本点提取

以图像左上角作为坐标原点建立图像坐标系,水平向右方向为u轴,垂直向下方向为v轴.考虑到该型号仪表指针不可能指向水平方向,则指针的直线方程可表示为

u=kv+b,

(1)

式中:k和b为直线参数.记采集到的样本点为(ui,vi),i=1,2,…,N,利用最小二乘法可得到直线方程中的k和b的估计值为

(2)

式中

,

(3)

从而可获得指针的直线方程.

1.2 标尺线圆弧的初步提取

85C1系列仪表的标尺线为一条黑色圆弧,该圆弧特征对刻度位置的提取有重要价值,因此本文首先获取该圆弧所在圆的方程.设该圆的圆心坐标为(uC,vC),半径为r,考虑到指针仪表的特点,可假设(uC,vC)位于指针所在的直线(1)上,则uC可由vC通过(1)式计算得到,即

uC=kvC+b.

(4)

此时圆弧所在的圆将由vC和r两个参数确定.将仪表原始彩色图像灰度化后再利用阈值分割的方法将其二值化,图2a为对图1a二值化处理后的结果.应用Hough变换的原理对vC和r的值进行初步估计,具体步骤为:

1)对于二值图中的黑色像素点(ui,vi),其在参数空间(vC,r)中对应的曲线为

(5)

基于(ui,vi)对曲线(5)上的参数点(vC,r)投票,考虑到仪表圆弧上凸的特点,要求vC>vi,因此曲线(5)的形态为双曲线.

2)根据精度要求对参数空间(vC,r)的可能取值范围进行划分,经上述投票过程后,选择票数最高的参数点作为圆的初步提取结果.

图2b为圆弧上三点的投票曲线,图2c为投票的结果,图中颜色越深表示票数越多,图2d展示了通过以上Hough变换过程提取出的圆在图像中的位置.由此可见提取出的圆与真实圆弧仍存在少量偏差,有必要进一步提高提取精度.

图2 圆弧初步提取

1.3 标尺线圆弧的精确提取

注意到虽然前面提取的圆方程存在一定误差,但仍能提供圆弧的近似位置,可据此设定圆弧所在的区域,对圆弧点进行精细化搜索.

从图1a可知,85C1系列仪表的标尺线圆弧与圆心形成的扇形角是确定的,因而可根据初步提取的圆心位置和半径在图像中取一段圆弧,再对该圆弧沿图像的垂直方向进行扩展,得到真实圆弧线的搜索区域.图3a中高亮的区域为对所得部分圆弧沿垂直方向扩展了30像素后得到的搜索区域,可见该区域包含了大部分真实圆弧点.

由于85C1系列仪表的刻度均位于圆弧线上方,圆弧的下边缘相对光滑,可在搜索区域内根据垂直方向的梯度进行边缘提取.对于具有相同横坐标的边缘点,选择纵坐标最大的点作为圆弧的边缘样本点,构成圆弧的样本点集.图3b中红色点为最终提取的圆弧点,图3c为其局部放大,可见除指针附近存在错误提取外,其他位置的点均正确.设圆弧所在圆的方程为

2αu+2βv+γ=-u2-v2,

(6)

式中α,β,γ为待估参数,利用圆弧样本点集和最小二乘法可获得它们的估计值,并有

(7)

从而得到圆方程.图3d为利用以上过程提取得到的结果,结合图3c,虽然受指针的影响,个别圆弧边缘点的提取出现错误,但其对最终结果的影响很小.对比图2d的结果可见,通过以上方法,圆弧线提取的精度得到明显提升.

图3 圆弧的精确提取

1.4 刻度位置提取与读数判读

由于仪表上的刻度在圆弧线上排列,不易对刻度的起始位置和结束位置直接进行提取,本文采用图像变换的方法,将刻度区域的图像从(u,v) 坐标系变换成(θ,ρ)坐标系下的图像,其中θ为原始图中向量(u-uC,v-vC)与u轴的夹角,ρ为像素点(u,v)到圆心(uC,vC)的距离.对于坐标变换后图像中的任意点(θi,ρi),其在原始图像中的对应点坐标(ui,vi)为

(8)

(θi,ρi)点的灰度值为其在原始灰度图中对应点(ui,vi)的灰度值,若ui和vi为非整数,可通过双线性插值法,由其临近点的值计算获得.由此,原始图中的圆弧标尺线将被变换成一条直线.对变换后的图像再进行二值化处理,取

(9)

式中:IB(i,j)为二值图像中(i,j)位置的像素值;IG(i,j)为灰度图像中对应点的灰度值;T为人为设定的二值化阈值.

对图1a的原始图进行以上处理,角度取值范围为40°≤θ≤140°,变换后尺寸设定为1 000×60(像素),这样变换后图像中横坐标单位像素表达的角度Δθ=0.1°;再设T=100,对变换后图像进行二值化,结果见图4.由图4可见原图中标尺线已基本被展平,便于刻度首尾位置的提取.

图4 刻度线区域附近的图像变换结果

H

i

i

H

i

θ

C

d

θ

C

d

K

K

θ

C

kd

k

K

K

K

θ

C

d

(10)

式中R(·)表示四舍五入取整函数,该问题可通过穷举法求解.记图像最左列表示的角度为θ0,则最小和最大刻度对应的角度θL和θR分别为

(11)

记1.1节提取得到的指针直线与1.3节提取的圆弧的交点坐标为(uP,vP),其对应的角度为

(12)

若仪表的量程为[0,M],可得此时仪表的读数为

(13)

以图4为例,由上述方法提取得到的θL=136°,θR=46.6°,θP=104.7°,该仪表的最大量程为M=5,计算得到V=1.75,与图1中的真实值相近.

2 实验研究

为验证本文提出方法的有效性,选择[0,+5 V]量程的电压表进行实验,实验中相机选用Basler acA640-90gc彩色工业相机,配25 mm定焦镜头,图像尺寸为640×480(像素).每次实验选择不同倾角、按不同距离布置被测仪表,使拍摄的电压表在图像中呈现不同的尺寸、模糊度及旋转角度;再通过一个+5 V直流电源和电位器作为电压表的信号源,使电压表显示不同读数.图5为4次实验的图像与识别结果,图中同时标注了圆弧标尺线的提取结果以及最小、最大刻度的角度提取结果.

图5 部分实验图像及识别结果

从实验结果看,本文方法对成像模糊、非水平摆放的仪表均能正确识别读数,识别精度与人眼识别结果相当,说明本文方法不仅具有较高的精度,也具有较强的鲁棒性.

3 结论

本文针对广州市宇泰仪表电器有限公司生产的85C1系列仪表提出一种读数识别方法,精度上能达到人眼识别的水平,并且具有较强的鲁棒性,可应用于仪表的自动巡检系统中;该方法虽然仅针对一种规格仪表设计,但算法的设计思想对其他类型仪表的读数识别问题也有借鉴价值.

猜你喜欢

圆弧标尺读数
本刊对稿件组织病理学彩色图片及电子显微镜图片中标尺的要求
浅析圆弧段高大模板支撑体系设计与应用
“0”的读法和要领
半圆与半圆弧
“李云龙式”干部如何发现,怎样用好——这也是为担当者担当、为干事者撑腰的重要标尺
如何让学生更好地掌握圆弧连接的画法
装把尺子 灵活度量屏幕
道德标尺
例谈高中物理常见读数问题
仪器工作原理决定了仪器的读数规则