【VC++开源代码栏目提醒】:网学会员,鉴于大家对VC++开源代码十分关注,论文会员在此为大家搜集整理了“OpenCV在装箱缺条视觉检测系统中的应用 - 硕士论文”一文,供大家参考学习!
OpenCV在装箱缺条视觉检测系统中的应用 The app¨cation of 0penCV on the machine v。
is。
ion detection system of cigarette mlsslng in packing 周传宏,王怀虎,康少博 ZHOU Chuan.hong。
WANG Huai-hu,KANG Shao.bo (上海大学上海市机械自动化及机器人重点实验室,上海200072) 摘要:装箱缺条视觉检测系统是集机械、光电、计算机和数字图像处理等技术于一体的机器视觉系 统,主要针丸封装箱偶尔会出现箱缺条现象而研制的在线图像检测系统。
本文在VC++6.0开 发环境中设计了一种采用自适应阈值处理,基于OpenOV的装箱缺条检测算法。
实验结果表明 该算法识别效果好、检测速度快、实时性好。
关键词:OoenOVl装箱缺条l Otsu,机器视觉;图像处理 中囝分类号:TP278 文献标识码:A 文童编号:1009-01 34(2011)9(上)-0085-03 Doi:10。
3969/J。
Issn。
1 009—01 34.2011.9(上)。
27 0引言 元等:软件则是根据具体的检测内容和精度要求 目前我国烟草生产广泛采用生产流水线方 由设计人员自行开发。
式,生产速度比较快,而且还要保证产品及包装 1.2 OpenCV简介 的质量。
人工抽检测显得非常困难,它检测效率 OpenCV是由Intel公司开发的
开源计算机视觉 低,在装箱的过程中可能会出现缺条的现象,一 库,该库由一系列C函数和少量C++类构成,实现 旦流入市场,会给产品和烟厂品牌声誉带来不利 了图像处理和计算机视觉方面的很多通用算法, 的影响。
为了杜绝和防止装箱缺条现象的发生, 机器视觉研发人员在软件开发过程中可以直接 就目前我国烟草行业而言,采用机器视觉技术是 调用库内函数,从而省去常用图像处理算法的编 最好的解决方案。
写,可以提高软件的检测速度和精度。
OpenCV主体分为五个模块:CV模块包含基 1机器视觉与OpenCV简介 本的图像处理函数和高级的计算机视觉算法;ML 1.1机器视觉系统组成 是机器学习库,包含一些基于统计的分类和聚集 机器视觉就是用机器代替人眼来做测量和判 工具;HighGUI包含图像和视频输入/输出的函 断。
机器视觉系统是指通过机器视觉产品(即图 数;CXCore包含OpenCV的一些基本数据结构和 像摄取装置,分为CMOS和CCD两种)将被摄取 相关函数:CvAux模块主要存放一些即将被淘汰 目标转换成图像信号,传送给专用的图像处理系 的算法和函数,同时还有一些新出现的实验性的 统,根据像素分布和亮度、颜色等信息,转变成 算法和函数肛J。
数字化信号,图像系统对这些信号进行各种运算 1.3 OpenCV在Visual C++6.0环境下的配置pJ 来抽取目标的特征,如面积、数量、位置、长 度,再根据预设的允许度和其他条件输出结果, 本次设计的视觉检测系统是在Visual C++6.0 包括尺寸、角度、个数、合格/不合格、有/无等, 环境下开发的,安装好的OpenCV在VC6.0中配置 实现自动识别功能,进而根据判别的结果来控制 如下:首先用VC新建一个工程,选择莱单Tools> 现场的设备动作¨1。
Options>Directories:分别设置Iib路径、include路 机器视觉系统通常由硬件和软件两大部分组 径、src路径。
接着进行项目配置,选择project> 成,硬件主要包括:光源、镜头、CCD相机、工 Settings…进入工程设置对话框,点击Link选项卡, 业PC机、图像采集卡、监视器和通讯/输入输出单 在Object/library modules文本框中添)JflOpenCV lib库。
敬糟日期:2011-06-20 基金项目:“校学科开放课题”资助(B.13-0109—05-022) 作者简介:周传宏(1971一),男.上海人,副教授,博士后.主要从事制造业信息化方面的科研与教学工作。
第33卷第9期2011-0(上) 185l万方数据 2基于OpenCV的装箱缺条图像检测 2.2_2自适应阈值处理的实现 图像二值化处理的关键是最佳阈值的选择和 算法 确定。
二值化处理的最理想的方法就是对图像的 “装箱缺条视觉检测系统”是针对封装机 自动阈值选择。
比较常用的一种方法就是Otsu方 偶尔出现箱缺条现象而研制的在线图像检测系 法,该方法一直被认为是阈值自动选取的最佳方 统,它安装在封装机25条烟装箱推板入口处, 法【5】o 在原机缺条检测点位置,装箱作业过程中进行 Otsu算法选择使类间方差最大的灰度值为阈 在线检测,从根本上预防和杜绝箱缺条现象的 值。
这里设计一个函数cvThresholdOtsu0来实现 发生。
Otsu算法的原理,该函数的设计思路如下:1)首 2.1算法设计 先计算图像的直方图并归一化:2)计算图像灰度 该算法主要是对采集到的图像进行实时处 均值;3)计算直方图的零阶和一阶距;4)计算 理,采用自适应阈值处理方法进行图像分割,将 最大的类问方差,找到对应的阈值。
检测轮廓的面积与阈值比较,从而判断缺条与 经过实验验证, 直接使用函数 否。
算法流程图如图1所示。
cvThresholdOtsu0计算出的的阈值进行图像分割, 由于照明系统的不同,图像的效果不同,效果也 一般。
经过实验计算出的阈值乘以一个修正系数 0.70,效果更佳。
2.2_3轮廓检测的实现 OpenCV提供了在二值图像中寻找轮廓的方法 cvFindContours0,函数原型如下: int cvFindContours( Ipllmage高image.|| 输入的8一比特、单通道二值图像 CvMemStorage高storage。
|| 得到的轮廓的存储容器 CvSeq木木firstContour. /,输出参数:包含第一个输出轮廓的指针 int headerSize=sizeof(CvContour),//序列头的 大小 CvContourRetrievalMode mode=CV—RETR— LIST, //提取模式 CvChainApproxMethod method=CV_C:HAIN_ 图l装箱缺条图像检测算法流程图 APPROX—SIMP’LE, -//逼近方法 2.2基于OpenCV典型算法的实现 ); 2.2.1 ROI设置的实现 检测轮廓的面积可以通过OpenCV提供的 OpenCV提供了对感兴趣区域操作的函数,如 cvContourAreaO函数得到,它的函数原型如下: double cvContourArea( 果想设置ROI,可以使用函数cvSetlmageROIO,并 为其传递一个图像指针和矩形。
而取消ROI,只需 eonst CvA—comollr. 要为函数cvResetImageR010传递一个图像指针。
,,要计算面积的轮廓 函数原型如下HI: CvSlice sliee=CV_WHOLE_SEQ|瞅真南 void cvSetImageROI(IpiImage}image,CvRect 式 rect); ); void cvResetImageROI(IplImage}image); 若计算得到的轮廓面积大于设定的阂值面 〔ae】 第33卷第9期201 1-9(上)万方数据积,就判定出现缺条现象,绘制该缺条区域的轮 状且绘制比较简单。
OpenCV提供了得到矩形边界廓。
OpenCV提供了一个绘制轮廓的函数cvDraw 框的函数cvBoundingRect(),该函数得到的是四边Contours(),它可以把筛选出来的轮廓绘制出来。
水平和竖直的矩形,函数的原型如下: 经过以上三步的图像处理,得到的效果图如 CvRect cvboundingRect(图2所示。
CvArr4 points.|| 由点组成的序列,可以是一个轮廓或者一个矩阵 int update=0 //记载轮廓边界框 参数 ); 该函数返回的是一个包围轮廓的CvRect对 象。
为了绘制这个包围轮廓的矩形框,可以使用 绘图函数cvRectangle0,它可以绘制一个矩形框。
同时我们还可以利用cvPutTex“)函数来进行绘制文 (a)ROl图 字操作。
绘制结果如图3所示。
3结束语 目前,机器视觉技术已经广泛应用于烟草行 业的产品质量检测领域,极大地促进了工业自动 化的发展。
OpenCV作为一款优秀的
开源视觉库, 也将随着机器视觉技术的发展而不断成熟。
本文 (b)自适应阀值二值化图 采用Otsu算法进行自适应阐值图像分割, 基于 OpenCV进行算法设计,缩短了检测软件的开发 周期,检测快速、识别准确,从现场调试的情况 看,该系统的各项指标都达到了要求。
(c)检测轮廓图 参考文献: 图2图像处t犟ROI、图像分割、检溯轮廓图 【1】贾云得机器视觉【M】北京:科学出版社,2000. 【2】2 Gary Bradski,Adrian Kaebler.Learning OpenCV【M〕.O’Reilly Media,Inc.2009. 【3】http;//www opencv.org.cn设计. 【4】黎松,平西建.丁益宏开放源
代码的计算机视觉类库 OpenCV的应用【Jl计算机应用与软件,2005.22(8):134一 136 【5】薛孝琴.吴怀宇一种改进Otsu算法在Kirsch边缘检测中 的应用【11计算机与数字工程,2009,3(37):167. 〔6】6陈磊计算机视觉类库OpenCV在Vc中的应用【J】.微计算 机信息,2007,23(4):169-171 【71张留刚基于机器视觉技术的烟条检测系统研究【D】.南 京:南京航空航天大学,2008 【8】8 Sonka M.Hlavac V,Boyle R图像处理与机器视觉IMI北 京:人民邮电出版社.2009. 【9】贾小军.喻擎苍基于
开源计算机视觉库OpenCV的图像 图3缺条区域矩形边界框图 处理IJ】计算机应用与软件,2008.25(4):276·278.2.2.4缺条区域边界框绘制的实现 缺条区域选用矩形边界框,比较符合烟条形 第33卷第0期2011—9(上) 1871万方数据OpenCV在装箱缺条视觉检测系统中的应用作者: 周传宏, 王怀虎, 康少博, ZHOU Chuan-hong, WANG Huai-hu, KANG Shao-bo作者单位: 上海大学上海市机械自动化及机器人重点实验室上海200072刊名: 制造业自动化英文刊名: Manufacturing Automation年,卷期: 201117参考文献9条1.贾小军喻擎苍 基于
开源计算机视觉库OpenCV的图像处理期刊
论文-计算机应用与软件 2008042.Sonka MHlavac VBoyle R 图像处理与机器视觉 20093.张留刚 基于机器视觉技术的烟条检测系统研究学位
论文 20084.陈磊 计算机视觉类库OpenCV在
vC中的应用期刊
论文-微计算机信息 2007045.薛孝琴吴怀宇 一种改进Otsu算法在Kirsch边缘检测中的应用期刊
论文-计算机与数字工程 2009376.黎松平西建丁益宏 开放源
代码的计算机视觉类库OpenCV的应用期刊
论文-计算机应用与软件 2005087.查看详情8.Gary BradskiAdrian Kaebler Learning OpenCV 20099.贾云得 机器视觉 2000本文链接:http://d.g.wanfangdata.com.cn/Periodical_zzyzdh201117027.aspx.