基于机器视觉的压力表盘打印装置
在基于机器视觉技术的基础上,结合OpenCV视觉函数库研究设计了一款压力表盘打印装置。该设计方案包括 硬件设计和软件设计,硬件设计主要包括整个系统的搭建及硬件选型,软件设计主要分为表盘配置模块、拍照模块、图像预 处理模块、模式识别模块、标定校准模块、表盘绘制模块以及打印模块,其中模式识别模块主要是基于Hough变换的方法来 检测表盘圆心及指针。实验结果表明该设计方案满足精度等级要求,即生产表盘符合标准。
目前,指针式仪表的传统读数方法主要还是依赖于人眼的 识别然后再记录保存,但是这种方式往往被操作人员的主观因 素所影响,而且其获取的读数精度不高,在识别工作量大的情况 下又导致工作效率拖沓,传统生产过程中利用人工读数的非 接触测量方法已经越来越不能满足日益提升的现代化生产需 求。因此,可以使用工业相机来替代人工人眼对仪表的观察读 取,通过PC对仪表的示数进行处理,完成对仪表进行自动识别 与实时的智能监控,不仅有效地提高生产效率,消除人为因素所 造成的误差影响,同时为企业带来更多效益。
本文通过计算指针角度进而获得仪表示值,然后将示值进 行标定校准后记录下来保存到数据库中,将整个表盘刻度信息 在计算机中重绘无误后再在空白表盘上打印输出。
1.系统搭建
本系统的硬件连线图如图1所示。照相机由12 V直流电 源供电,拍照获得压力表盘图像后,采用以太网接口通过网线与 计算机连接传输图像, 计算机将采集图像进行预处理后识别表 盘读数,完成表盘重绘后再送给打印机打印输出表盘。
2.软件系统
本软件设计包括表盘配置模块、拍照模块、图像预处理模
块、模式识别模块、表盘绘制模块及打印模块。其中图像预处理 模块和模式识别模块是关键部分。
2.1拍照模块
系统相机采用以太网接口连接,拍好的照片通过网络上传 至电脑,软件实时显示照相机图像画面,根据画面手动调整焦 距;按下拍照命令,得到照片的JPG格式图片文件,并利用计算 机保存,软件采用对同一角度连续拍摄5张照片,分别对5张照 片进行角度分析,去掉最大值和最小值的两张,取剩下的3个角 度的平均值作为最终的打印角度,以确保同一角度的精确度。 2.2图像预处理模块
2.2.1图像灰度化
由照相机采集得到的仪表图像为彩色图像,如果直接进行处 理就面临着数据量庞大、算法复杂并且会导致处理速度很慢,因 此需要将图片进行灰度化,在保留了图像主要特征要素的前提 下,又减小了图像的数据存储量,提升了图像处理的效率。图像灰 度化就是将原本的彩色图像转化成为灰度图像的处理过程。
2.2.2图像二值化
二值化的目的是为了便于将仪表指针及刻度线从背景图像 中抽取出来。然而实际的操作过程中,由于压力表盘的表面一般 为玻璃镜面容易反光,会造成图像信息被淹没,加之噪声干扰等 影响,这些因素都会降低采集仪表图像的质量,因此需要选择适 当的阈值来进行二值化处理。
本程序采用迭代法来求取图像二值化的阈值;迭代法基于 逼近的思想,其步骤如下:
求出图像的最大灰度值和最小灰度值,分别记作Z_<和 ZMIN,令初始阈值 T0=(ZMAX+ZMIN)/2;
根据所得阈值Tk将图象分割为前景和背景两部分,再分 别求出两者的平均灰度值记作Z。和Zb;
求出新阈值 JK+1:(Zo^Zb)/2;
若7K:7K+1,则所得即为阈值;否则转2),迭代计算。
2.2.3图像滤波去矂
本文选择中值滤波进行降噪滤波处理,中值滤波是一种非 线性信号处理方法。
2.3模式识别模块
模式识别是本软件最核心的模块,主要包括了圆心识别、指 针识别以及指针角度计算三个部分,圆心识别主要利用Hough 圆变换,指针识别则首先利用Canny边缘检测算子检测出图像 的边缘信息[2],然后用Hough直线检测来提取识别指针直线。
2.3.1圆心识别
圆心识别的主要步骤为:
1)获取图像的中心区域图像,中心区域是指整个图片的中 心部分区域,在这里假定圆心一定在该区域。
2)对中心区域进行平滑处理,然后对其进行Hough圆变换, 检测中心区域中所有圆。
3)对所有检测出来的圆过滤,过滤规则:若圆中所有像素点 的灰度值在其所处背景灰度值范围内的百分比超过50%,则认 为该圆无效。然后对剩余圆的圆心求平均值。
4)对求得的圆心做调整,调整方法基于本程序检测对象特 征:图片最小圆处灰度值相对于周围相差较大。
调整的方法:调整范围以检测出圆的圆心为中心,长度(L) 为半径的0.7的正方形调整区域。
调整思路:①先调整x轴向的坐标,计算以此坐标为中心长 度为L的正方形的左半部分和右半部分的灰度平均,若左半部分 灰度值大,x向左移动(-1),反之;若上一次坐标移动与本次移动 方向不同,则移动结束;②然后根据同样的方法调整y坐标。
其中Hough圆变换首先获取的中心区域如图2所示,经过 Hough圆变换后得到圆心并进行调整后的圆心位置对比效果 如图3所示。
该段程序的思路如流程图4所示。
2.3.2指针识别
指针直线识别的主要流程为:先将原始图像灰度化,然后利 用Canny算子进行边缘检测,再通过Hough直线变换去检测 图像中所包含的全部直线。对检测出的直线进行过滤,其过滤准 则为:检测出线段的端点至少有一个在图片中心区域。
筛选过滤后的直线,求出直线远离圆心的点。其筛选规则为:
1)若只有一条直线,则本直线远离圆心的点为检测直线的 端点;
2)若有两条直线,则取这两条直线远离圆心的点的平均值作为检测直线的端点;
3)若有两条以上的直线,对每条直线求灰度平均,选出平均 值最小的两条,这两条直线远离圆心的点的平均值作为检测直 线的端点。
该段程序的思路如流程图5所示。
2.3.3指针角度计算
运行程序计算指针角度结果如图6所示。
2.4表盘绘制模块
表盘绘制模块是本软件的核心模块之一。通过读取对应配 置文件的表盘信息,获取表盘刻度线长度、大刻度数、中刻度数 及小刻度数等关键参数后,该模块将对表盘做出圆心定位,角度 转换为弧度,计算得出任意角上符合半径要求的圆周点的象限 坐标,最后分别设置相应的映射模式,把得到的成像映射到屏幕 和打印机上。
2.5打印模块
在微软的MFC单/多文档程序中,打印机编程由类库自动 封装并提供,软件开发时只需根据实际需要添加少量打印机打 印代码就可以完成需求。程序调用Windows的打印驱动程序 后,再自动调用工业打印机所对应的驱动程序,启动打印机在空 白表盘上打印出重绘出的表盘。
3.压力表盘标定实验
本实验首先选用了某仪表厂生产的压力表进行验证,实验 数据及误差如表1所示。
在标定过程中需要执行上行增负荷和下行减负荷各一次全 量程加压过程。最终得到仪表准确度为0.367%,该仪表的精度等级为0.4,因此可以认定该表盘合格。此外,仪表的回程误差取 上、下行程同一压力负荷下的示值之差的最大值。计算得到最大 回程误差为0.8,除以仪表量程得到回差准确度为0.267%,在 可接受范围内。
4.结束语
结合具体试验结果,本文提出了一种新的的压力表盘的标 定打印装置,能够生产出合符标准的压力表盘,以适应市场需 要,但在一些实际应用场合中还存在一定不足之处,有待改进。