余 辉 王 林 王德胜
(1 中国电子科技集团公司第四十一研究所,安徽蚌埠233010;2.四川烟草工业有限责任公司成都分厂,四川成都610051;3.江苏中烟有限责任公司南京卷烟厂,江苏南京210019)
随着科学技术的发展,机器视觉技术也取得了长足的发展,目前已经广泛的应用在各个领域。运动目标检测是视频检测中基础而关键的部分,该技术广泛地应用于工业流水线产品外观特征检测。 本文将以烟包外观金拉线的检测来阐述系统的工作原理和软件算法实现。由于烟包生产速度较快,检测任务非常繁重,采用机器视觉技术提高产品质量和生产效率。
机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是指通过图像采集装置将摄取目标转换成图像信息,传送给图像处理系统,根据像素分布和亮度等信息,转变为数字化信号,机器视觉系统从这些信息中获取目标特征,然后根据预设的条件输出处理结果,进而根据判断结果控制执行机构进行相应的处理动作。
整个检测系统主要由硬件和软件两部分组成, 硬件主要包括:光源、镜头、CMOS 工业相机、工控板等;软件由系统软件和用户软件组成,系统软件是微软公司的WINXP,用户软件是开发人员基于VC++6.0自主开发设计的。
OpenCV 的全称是Open Source Computer Vision Library, 是由Intel 公司开发的开源、 跨平台计算机视觉库。 OpenCV 可以运行在Linux、Windows 操作系统上,该库由一系列C 函数和部分C++类组成,实现了图像处理和计算机视觉方面的很多通用算法,机器视觉开发人员在软件开发的过程中可以直接调用库函数,省去常用图像处理算法的编写,同时也可以提高软件的速度、精度和可靠性。
OpenCV 开发平台的搭建并不复杂, 首先按照提示安装好OpenCV 软件,然后在Visual C++6.0 下编译所要的静态和动态链接库文件,包括lib 路径的设置、include files 路径的添加,再进行工程项目的链接设置就可以了。
在VC++6.0 中建立新工程以后, 在工程设置里添加需要的OpenCV 库, 并在程序文件中包含需要的头文件, 就可以在Windows下基于VC6.0 进行图像程序开发了。
图像的预处理是为接下来的图像处理做准备的一个环节,通过图像预处理可以对图像进行去噪、灰度化、二值化、数学形态学中的膨胀和腐蚀等操作。
图像灰度化就是将彩色图像中的彩色信息剔除, 只包含亮度信息。 这类图像通常显示从最暗黑色到最亮白色的灰度,计算机中把亮度值进行量化等分成0-255 共256 个级别,0 表示最暗(全黑),255 表示最亮(全白)。图像的二值化是指按一定阈值将灰度图像分割为由灰度0 和灰度255 组成的无中间灰度过度值的图像。
数学形态学是一种可以提取出图像成分(如图像的边界、骨架和凸壳等)的工具,它的主要操作方法就是上文所提到的膨胀、腐蚀。 腐蚀是消除物体的所有边界点的一种过程,其结果使剩下的物体沿其周边比原物体小一定像素的面积,腐蚀对于从一幅分割图像中去除小且无意义的物体来说是很有用的。膨胀是将与某物体接触的所有背景点合并到该物体中的过程, 其结果是使物体的面积增大了相应数量的点。先腐蚀后膨胀的过程称为打开运算,具有消除细小物体、在纤细点处分离物体、 和平滑较大物体的边界时又不明显改变其面积的作用。先膨胀后腐蚀的过程称为关闭运算, 它具有填充物体那细小空洞、连接领近物体、在不明显改变物体面积的情况下平滑图像边界的作用。
在机器运转的固定相位,单片机控制系统向工业相机发送图像采集信号,工业相机把获取的图像通过USB 接口传送到工控板。
烟包金拉线的检测主要是检测金拉线是否存在、拉线位置是否偏离。 金拉线的检测方法是对获取烟包图像的拉线区域进行灰度化、二值化、腐蚀和膨胀等处理,查找出拉线轮廓,然后根据轮廓的面积判断拉线是否合格。
金拉线检测算法如图1 所示。
图1 金拉线检测算法
OpenCV 提供了在二值化图像中查找轮廓的方法cvFindContours(),函数原型如下:
Int cvFindContours(
IpIImage* image; //输入的单通道二值化图像
CvMemStorage* storage; //得到轮廓的存储容器
CvSeq* firstContour; //输出参数:包含第一个输出轮廓的指针
Int headerSize = sizeof(CvContour); //序列头的大小
CvContourRetrievalMode mode = CV_RETR_LIST; //提取模式
CvChainApproxMethod method = CV_CHAIN_APPROX_SIM_PLE;//逼近方法
};
从灰度图像中得到二值化图像可以用cvThreshold(),然后再采用cvErode()和cvDilate()函数对二值化图像进行腐蚀和膨胀处理。
目前,机器视觉技术已经广泛应用于各个工业领域,促进了工业自动化的发展,提高了企业的生产效率和产品合格率。OpenCV 作为一款优秀的开源视觉库, 必将随着机器视觉技术的发展而不断成熟。 将OpenCV 应用于产品金拉线检测系统中,极大地的缩短了软件的开发周期,并可以快速、准确的检测出拉线不合格产品,系统的各项指标均达到要求。
[1]Rafael C.Gonzalez,Richard E.Woods.数字图像处理[M].北京:电子工业出版社,2005.
[2]刘直芳,王运琼,朱敏.数字图像处理与分析[M].北京:清华大学出版社,2006.
[3]陈胜勇,刘胜.基于OpenCV 的计算机视觉技术实现[M].北京:科学出版社,2008.
[4]刘瑞祯,于仕琪.OpenCV 教程[M].北京航空航天大学出版社,2007.
[5]林洪文,等.基于背景差技术的运动目标检测方法研究[J].国防科技大学学报,2003,13(6):77-81.