陈 祎 白瑞林 赵 洁 吉 峰
(江南大学物联网工程学院智能控制研究所1,江苏 无锡 214122;无锡信捷电气有限公司2,江苏 无锡 214072)
随着我国工业化整体水平的不断提高,机器视觉技术得到了广泛的发展,它具有速度快、精度高、非接触、自动化程度高等优势。由于嵌入式机器视觉在处理速度、检测精度、图像质量、分辨率和集成度等方面都有较大的提高,因此,其已成为工业应用的主流方向[1]。
目前,国际主要机器视觉产品制造商都有各自的嵌入式检测产品[2],视觉检测软件也发展迅速,如Cognex公司生产的VisionPro视觉软件可将视觉工具库与嵌入式视觉设备组合在一起,实现了计算机数据和控制软件的集成[3]。国内依然是采用结构化建模方法和面向对象的软件开发技术,开发周期过长且系统可重构性、可复用性和可扩展性差,浪费了大量的人力和物力资源[4]。本文利用软件复用技术构建视觉检测软件[5],采用基于构件的思想对视觉算法进行优化与筛选,根据功能和应用类别完成算法构件,形成层次化的机器视觉算法库。
智能相机是嵌入式机器视觉系统的核心组成部分,其总体结构如图1所示。
图1 智能相机总体结构Fig.1 Overall structure of smart camera
智能相机由采集模块、处理模块、外部通信模块及其他外围器件等组成[6]。图像信号由CCD图像采集模块采入,经由并行数据线传送至FPGA中,FPGA将图像数据转换后存储到SDRAM中,DSP(DM642处理器)调用Flash中的图像处理程序对SDRAM中的图像数据进行实时处理,并根据处理结果通过数字I/O向现场设备发送控制信号。整个处理流程可通过以太网进行远程实时监控。
机器视觉检测软件的开发涉及到大量的图像处理算法,既有一些常用的图像处理底层算法,如图像降噪增强、边界检测和几何变换等,又有面向特定领域处理的算法,如图像匹配、Blob分析和圆定位等,且期望能够通过组合复用这些算法来满足不同检测领域的要求。因此,一个设计合理的机器视觉算法库是本系统开发的关键所在。
机器视觉算法库(machine vision algorithms library,MVAL)分为算法层、工具层和作业层。算法层作为MVAL模型的基础,是图像处理底层算法、测量以及标记等算法构件的集合;工具层是算法层构件组合形成的工具模块的集合,主要包括面对实际检测需求的定位、计数、测量、瑕疵检测等检测算法;作业层则是多个工具模块的串/并联组合,并根据应用程序设置的检测宽容度输出最终的检测结果。机器视觉算法库层次结构如图2所示。
图2 机器视觉算法库层次结构Fig.2 Hierarchal structure of the MVAL
算法构件是MAVL结构中的核心构成单元,它具有一定的图像处理功能和结构,并符合一定标准,可以完成一个或多个特定服务。算法构件结构如图3所示。
图3 算法构件结构Fig.3 Structure of algorithm component
在图像处理过程中,一般都有一个基本流程,即先输入图像的数据,再对这些数据进行算法处理,最后再将处理结果格式化输出。因此,处理过程中可以隐藏构件的具体算法功能,通过输入、输出接口对外提供服务,避免暴露复杂的、与输入输出相关的数据结构,从而为数据处理构建一个通用的框架。该结构提供了一种利用多个接口来配置图像处理算法的方法。
算法构件各个接口具体描述如表1所示。其中输入接口主要完成对图像数据的读取和其他构件的关联,包括 GetImageColorNum()、ReadImageHead()、ReadImageContet()、GetPrevComponentInterface()等函数;配置接口是设置被检测特征目标相关的属性参数,如沿线定位检测中的边界类型和边界宽度;资源请求接口主要包括对构件关联、内存分配、DMA通道使用等软硬件资源的调用,通过TI的XDAIS标准中IALG接口实现;输出接口主要输出图像算法的运算结果。
表1 算法构件描述Tab.1 Description of algorithm component
当单一算法构件的功能不能完全满足检测要求时,可通过多个构件的组装来实现所需的功能,如将图像二值化、边界提取、最小二乘圆拟合、圆Hough变换等算法构件组合成圆定位工具。构件组装旨在构件间建立关联,根据关联协调它们的行为,将它们组织成为一个有机整体,构件组装的关键在于搭建合理的体系结构[7]。算法构件组装原理如图4所示。
图4 算法构件组装原理图Fig.4 Assembling principle of algorithm components
根据交互协议,多个算法构件通过匹配的接口与连接件的连接来实现构件的复合。由于算法构件结构参考Darwin构件,是用服务(service)进行定义的,因此,一个构件既能对外提供一些服务,也能请求外部的服务[8]。当多个算法构件组装时,算法库运行框架——虚拟机(virtual machine)将生成一个NativeNode的动态链表,链表的长度由配置参数决定。智能相机加载并读取视觉检测作业时会将算法模块配置信息对应的方法表(function table)的指针传递给虚拟机。该方法表加载与卸载功能对应的接口如下。
①NodeOfNative* InsertNativeNode():加载算法构件;
②void RemoveNativeNode():卸载一个算法构件;
③ void RemoveAllNativeNode():卸载所有算法构件。
本检测系统为通用系统,所处环境和检测对象千差万别。因此,需要根据具体的环境和检测内容进行相应的配置。基于构件的机器视觉算法库设计保证了系统检测作业配置的灵活性和可变性,系统上位机软件采用图像化配置界面,可将不同的图像算法按照工业现场实际检测要求组合起来,并根据实际合格产品质量的宽容度设定通过检测条件,通过以太网快速完成对系统的配置。
以锯齿检测为例,检测内容主要包括测量锯齿的齿距、锯齿齿尖与锯齿边缘的高度、断齿。系统上位机软件配置界面如图5所示。在图5(a)所示的算法工具配置图中,工具1用于获得锯齿的边界点,此边界点将作为图像检测相对参考点。在测量锯齿的齿距过程中,寻找锯齿直线边缘的工具2、寻找锯齿齿尖的工具3和寻找齿尖斜边缘工具4都将继承于定位工具1,这样可以放宽机械定位的需求;计算锯齿齿尖斜边缘到锯齿直线边缘的夹角的工具5继承于定位工具2和工具4;获得锯齿齿尖到锯齿直线边缘距离的工具6继承于齿尖定位工具2和工具3。上位机软件自动生成这些工具的相互关联图,如图5(b)所示,并可根据实际锯齿的距离设置通过检测的条件,从而完成对锯齿有无断齿的检测。
在智能相机中,应用程序进程通过分析上位机图形配置的参数信息来调用MAVL中的相应构件,而MAVL构件的运行就需要算法库运行框架——机器视觉虚拟机来支撑。虚拟机隔离下层的操作系统和硬件层,并为MAVL提供一个与下层具体操作无关的统一接口,以访问采集到的数据、访问和修改产品参数以及与外部设备之间建立通信,从而实现模块调用和动态访问其他工具资源[9]。
虚拟机结构主要由类装载、内存、本地方法接口和仿真引擎等部分组成[10]。由于上位机软件下载到智能相机的配置信息的是一个包含该Class文件信息的字节码数组ByteCode[],为提高系统实时性,虚拟机一方面以本地方法的方式实现算法库,另一方面支持对硬件层的直接访问以及内存和DMA通道分配。虚拟机结构如图6所示。
图6 虚拟机结构Fig.6 Structure of virtual machine
以智能相机加载药品测试作业为例,对软件构件算法执行时间进行测试。相机对药片表面质量问题进行检测,包括药片是否存在破裂、损坏以及边缘处是否留有残余物质。相机首先对标准药片的轮廓学习后记录并存储药品的标准特征,以后的药片都将与该标准进行比较,任何不符合特定标准的药片都会被视为不合格产品。药片检测实例如图7所示,检测药片从左到右依次被标记为1~6,其中1、3、4为正常药片,2为破裂药片,5为边缘具有残余物质药片,6为损坏药片,基本上包括了药片表面的所有缺陷类别。
图7 药片检测实例图Fig.7 Practical example of tablets detection
开始检测时,首先选择1、3、4作为标准的学习药片,然后对从6种药片中随机抽取不同组合进行检测。测试结果如表2所示。其中,检测时间为完成对一组药品组合的检测耗时,而匹配程度则取被检测药片组合中与记录的标准药片特征值的匹配情况的最小值,检测总结果显示Pass或Fail,成功数则为通过检测药品的数目。
表2 测试结果Tab.2 Test results
试验证明,视觉系统能够对药片缺损、破裂和边缘残核等现象进行检测,精确度高,满足实时性要求。
本文在分析了嵌入式机器视觉检测系统特点的基础上,提出了基于构件的系统软件设计方法,设计了机器视觉算法库,详细描述了算法构件组成和运行框架,并给出了实际检测的配置案例。此系统已在工业在线检测上使用,效果良好。本文设计并实现的机器视觉算法库模型为该领域的软件复用技术提供了参考。
[1]Zhu S,潘津,叶敏,等.引领潮流的智能相机[J].现代制造,2007(1):34-36.
[2]邓集杰,刘铁根,杨永,等.基于机器视觉的嵌入式工业在线检测系统[J].计算机工程,2008,2(4):260 -262.
[3]康耐视中国.视觉工具库[EB/OL].[2010-1-15].http://www.cognex.com/ProductsServices/VisionSoftware/default.aspx?id=2406&langtype=2052&locale=cn.
[4]段敬红,冯江,张发存.基于软件构件的表面缺陷检测软件开发[J].计算机工程与科学,2009,31(10):77 -79.
[5]Yardley E.A software approach to integrated machine vision[J].Computing and Control Engineering,2004,15(6):15 -18.
[6]尚佳良,白瑞林,杨文浩.嵌入式机器视觉测控系统的设计与实现[J].计算机测量与控制,2009,17(7):1289 -1291.
[7]字天文,刘晓燕,沈嘉权.实时嵌入式构件模型组装方法及时间性推理[J].计算机工程与应用,2009,45(25):74 -77.
[8]杨芙清,梅宏,黄罡.构件化软件设计与实现[M].北京:清华大学出版社,2008.
[9]Smith J E,Nair R.虚拟机系统与进程的通用平台[M].北京:机械工业出版社,2009.
[10]Courbot A,Grimaud G.Application-driven customization of an embedded Java virtual machine[J].Lecture Notes in Computer Science,2005(3823):81-90.