创新者:陈观应 李瑜煜 方 浩
干电池是生活中重要的日用消费品,随着需求增长和机械自动化技术的发展,干电池生产设备日益朝着高速化发展,然而传统的人工视觉检测已难以满足高速生产线的检测要求。在工业检测方面,基于虚拟仪器LabVIEW 平台设计的视觉检测系统具有重要意义。与Visual Basic、Visual Studio 开发工具相比,LabVIEW 的图形编程语言可以直观地实现多线程编程,降低了并行程序开发的复杂度。
基于虚拟仪器的干电池视觉检测系统结构如图1 所示,系统由两大部分组成:硬件部分和软件部分。硬件部分由环形光源、4 个USB 摄像机和光电开关组成,软件部分采用模块化设计,包括图像处理与识别模块、数据存储模块及输出显示。系统工作原理:当干电池遮蔽光电开关时,触发摄像机拍照并将数字图像传送到计算机,经过图像处理模块完成干电池缺陷的识别并存储输出。
生产者/消费者模式是由生产者循环和消费者循环组成,生产者和消费者循环的队列存储开辟了一个缓存区,依据先进先出(First Input First Output,FIFO)的原则进行,生产者循环生产的数据存入缓存区,消费者循环从缓存区取出数据处理。两循环中的任务执行是并行的,相互之间不受影响。任务执行的并行性和基于队列的数据传输,使程序具有更高的运行效率和设计灵活性,并且可以防止出现数据丢失。
为了充分利用计算机硬件资源和提升程序设计的灵活性,采集系统使用单生产者多消费者设计模式,并结合状态机编程,设计模式示意图如图2 所示。多通道图像采集系统具体实现步骤:(1)在循环中加入事件结构用于响应前面板控件,事件结构中开辟一个队列,并向队列中传输与控件对应的状态枚举,通过队列状态传输到生产者循环。(2)在生产者循环中开辟四个队列,通过捆绑状态枚举和IMAQdx Grab 函数采集到的图像,向生产者队列传输数据。四个队列中捆绑的数据将传输到对应的四个消费者循环,解除数据捆绑实现状态控制和数据传输。
此设计模式对经典状态机做了改进,队列缓存状态枚举,可以在队列任意添加新状态,从而方便控制采集程序运行状态。程序中使用多个循环实现数据传输,由于LabVIEW 平台是自动多线程编程,采用多消费者设计模式的采集系统具有更高效的处理机制和更强的结构扩展性。
图1 干电池视觉检测系统结构
图2 结合状态机的多消费者模式
图3 锌筒图像分割程序和效果
图4 锌筒轮廓识别程序
图像预处理可以消除图像无关信息,改善图像质量,提高后续图像分割与图像识别的可靠性。系统预处理采用IMAQ Lowpass 函数对图像低通滤波,采用IMAQ Mathlookup 函数的square 运算符对图像增强。
为了分析图像的特征,往往需要通过图像分割将对象从图像中分离出来。采用边缘检测和阈值分割可以有效划分背景区域和目标特征区域。模块采用IMAQ EdgeDetection 函数的Robert 算子来完成边缘检测,用IMAQ AutoBThreshold 函数聚类法来实现自动阈值分割。锌筒图像分割如图3 所示。
特征提取是图像识别的重要环节,系统的干电池锌筒识别采用圆度特征,碳棒识别采用灰度特征,识别效果如图6 所示。经过图像分割的锌筒图像具有明显的形状特征,使用IMAQ Extract Contour 函数提取锌筒轮廓,通过IMAQ Compute Contour Distances 计算提取轮廓与拟合轮廓的最大距离,与设定阈值比较,实现锌筒缺陷识别,锌筒识别程序如图4 所示。
模板匹配是一种有效的模式识别技术,它能利用图像信息和识别模式的先验知识,更直接反映图像间的相似度。常见的碳棒缺陷有偏心、折断和缺失,通过模板匹配可以快速实现碳棒定位。匹配输出的Matchs 包含匹配锌筒的坐标、转角等信息,通过计算匹配碳棒坐标与锌筒圆心的偏心率实现碳棒偏心缺陷识别,若无匹配信息则为碳棒折断或缺失,碳棒识别程序如图5 所示。
图5 碳棒模板匹配程序
图6 锌筒和碳棒识别效果
干电池图像处理完后需对相应输出参数进行存储,以便日后调出分析或打印报表,本文使用TDMS 文件进行数据存储和查询。对比基于SQL 数据库的数据存储,TDMS 文件最大的特点就存取速度快,非常适合用于存储海量数据,在实时系统中广泛应用。高速的干电池生产线要求整个系统在采集图像后,需对图像快速处理及存储数据,消费者循环中加入的TDMS 存储模块可以满足干电池检测数据的快速及海量存储要求。
基于虚拟仪器LabVIEW 的干电池检测系统实现了多通道图像采集,多循环并行图像处理和识别以及数据存储。采集与处理任务分开执行提高了程序的运行效率,保证其干电池检测的实时性和连续性。本文针对实际干电池生产线展开研究,同时也给工业检测领域提供一定的参考。