【VC++开源代码栏目提醒】:以下是网学会员为您推荐的VC++开源代码-一种基于OpenCV的织物疵点检测方法 - 计算机教材,希望本篇文章对您学习有所帮助。
— 38 —2010年4月 第04期研究与技术 Apr. 2010 No.04摘要在织物疵点自动检测开发中传统的图像处理
代码编写繁琐、效率不高。
OpenCV具有较强的图像处理能力且提供了丰富的图像处理函数可以把OpenCV运用到织物疵点检测上。
以断经、纬疵样本为例提出在OpenCV环境下采用阈值分割提取疵点图像利用形态学技术实现噪点分离及断线连接。
边缘检测实现了疵点图像在原图像中的准确定位。
实验结果表明OpenCV有简化
代码、提高编程效率的图像处理强大功能疵点检测结果准确效率高。
关键词OpenCV疵点检测阈值分割中图分类号TS101.9TN911.73 文献标识码A 文章编号1001-7003201004-0038-04一种基于OpenCV的织物疵点检测方法陆趣趣陈传克徐晓龙虞 佳贾小军嘉兴学院 数学与信息工程学院 浙江 嘉兴 314001A Method of Fabric Defects Detection Based on OpenCVLU Qu-qu CHEN Chuan-ke XU Xiao-long YU Jia JIA Xiao-junCollege of Mathematics and Information Engineering Jiaxing College Jiaxing 314001 ChinaAbstract: In the fabric defects automatic detection development traditional image processing code compilation is tedious and inefficient. OpenCV has powerful image processing ability and providing rich image processing functions which may be utilized to process fabric defects detection. This paper took broken end irregular pick fabric as the examples. Under OpenCV environment using the thresholding segmentation to extract fabric defects image. Morphological techniques can remove noise pixels and connect broken lines. Edge detection achieves positioning defect image in the original image. The experimental results showed that OpenCV had the powerful functions of simplifying code raising efficiency to process images and the results of fabric detection were accurate and efficient. Keywords: OpenCV Defects detection Threshold segmentation收稿日期2009-11-05修回日期2010-03-10基金项目浙江省教育厅大学生科技创新项目嘉兴市科技局项目2008AY2014作者简介陆趣趣1987 男计算机科学与技术专业本科生。
通讯作者贾小军副教授xjjiadsina.com。
在纺织品生产过程中质量控制与检测非常重要织物疵点检测是其中最重要的一部分。
采用人工检测织物疵点在检测过程中会由于人的一些主观或客观因素使检测结果受到影响。
如一个检验员精力集中的最长时间只有2030 min超过这个时间就会疲劳注意力就会降低引起漏检。
检验员的工作状态同时受外界因素的影响如疵点类型和大小、频率、天气、身体情况等也影响着检查结果。
随着计算机技术及数字图像处理技术的发展基于图像处理和微机平台的织物疵点自动检测成为可能。
以摄像头和图像采集卡获取织物图像信息由计算机执行相应的图像处理程序来进行织物疵点的监测这降低了生产成本提高了产品质量及生产效率减轻了工人的劳动强度。
基于图像处理的织物疵点自动检测克服了人工织物疵点检测的大部分缺点。
但如果只使用MatlabCC.net等一些开发工具来开发编写织物疵点检测程序会因为
代码繁琐且因编写的
代码量大从而导致
代码编写困难耗时维护困难。
因此需要一个计算机视觉函数库来方便开发和编写图像处理程序。
OpenCV1-4是计算机视觉库由一系列C函数和少量C类构成它实现了图像处理和计算机视觉方面的很多通用算法可以非常方便地嵌入到C或C开发平台大大缩短应用程序的开发周期降低
代码编写难度。
其强大的图像处理功能在计算机视觉领域可以广泛应用。
本研究利用OpenCV数据结构及常用图像处理算法提出一种织物疵点检测系统新的开发平台利用此环境对现有织物疵点算法进行改进并和OpenCV— 39 —Apr. 2010 No.042010年4月 第04期视觉库结合开发出具有较高效率的织物疵点检测系统。
相对于Matlab一般的C或C通用平台基于OpenCV的疵点检测系统开发周期短程序运行速度快疵点检测准确。
1 OpenCV特性OpenCV具有以下特征
开源计算机视觉库采用C/C编写使用目的是开放实时应用程序独立于操作系统、硬件和图形管理器具有通用的图像/视频载入、保存和获取模块具有底层和高层的应用开发包。
应用OpenCV能实现以下功能对图像数据的操作包括分配、释放、复制、设置和转换数据对图像和视频的输入输出具有对矩阵和向量的操作以及线性代数的算法程序可对各种动态数据结构如列表、队列、集合、树和图进行操作具有基本数字图像处理能力如可进行滤波、边缘检测、角点检测、采样和差值、色彩转换、形态操作、直方图和图像金字塔操作可对各种结构进行分析包括连接部件分析、轮廓处理、距离变换、各种距的计算、模板匹配、Hough变换、多边形逼近、直线拟合和Delaunay三角划分等对摄像头的定标包括发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计和立体对应对运动的分析如对光流、运动分割和跟踪的分析对目标的识别可采用特征法和隐马尔可夫模型法具有基本的GUI功能等等。
OpenCV自1999年1月发布Alpha版本开始它就被广泛用在许多领域、产品和研究成果中5。
相关应用包括卫星地图和电子地图的拼接扫描图像的对齐医学图像去噪消噪或滤波图像中的物体分析安全和入侵检测系统自动监视和安全系统制造业中的产品质量检测系统摄像机标定军事应用以及声音和音乐识别等领域。
OpenCV的最新版本是于2009年10月1日发布的OpenCV-2.0.0a-win32.exe文献6给出了最新下载地址。
2 .Net下OpenCV视觉库的配置OpenCV作为一个独立的计算机视觉库不能直接使用必须先进行安装。
先从官方网站下载OpenCV的最新版本然后进行安装安装方法等同于一般应用程序的安装。
本研究假设OpenCV安装在目录“C:Program FilesOpenCV”。
安装好OpenCV后为了正确使用OpenCV须配置其应用环境。
不同的编译器配置方法略有不同。
下面给出.Net环境下的配置方法。
第一步在“我的电脑”的属性选项卡中添加环境变量“C:Program FilesOpenCVlib”。
第二步打开
VC.net应用程序在菜单项里选择Tools→Options。
在列表中选择Projects→
VC Directories。
从“Show Directories for”的“List Box”中选择“Library files”。
单击“Insert New”图标定位要安装OpenCV的文件夹。
假设它安装于“C:Program FilesOpenCV”。
在库文件列表中定位并添加“C:Program FilesOpenCVlib”。
第三步在“List Box”中选择“Include”文件定位并添加以下路径C:Program FilesOpenCVcvincludeC:Program FilesOpenCVcxcoreincludeC:Program FilesOpenCVotherlibshighgui。
第四步选择“List Box”中的“Source”文件定位并添加以下路径C:Program FilesOpenCVcvsrcC:Program FilesOpenCVcxcoresrcC:Program FilesOpenCVotherlibshighgui。
最后创建一个项目在程序开头添加相应的include语句并在菜单“Project”→“Properties”选择“Link”→“Input”→“Additional Dependencies”。
添加所有需要的库如cv.libcxcore.libhighgui.lib等。
完成以上步骤就可以使用OpenCV函数运行OpenCV程序。
3 OpenCV疵点检测实现3.1 算法分析算法的思想是找出正常图像灰度值的可信区间把疵点和背景分离提取出疵点的特征值最后进行处理。
算法分成4个部分图像采集、计算可信区间、提取疵点特征值、疵点处理。
OpenCV可以从摄像头中采集织物表面图像采集到的图像是彩色的BMP格式。
在分析图像之前可以使用OpenCV中的cvCvtColor函数把采集到的BMP格式的彩色图像转换成灰度图像。
提取疵点特征值首先要将采集的原图像进行阈值分割7-9即把疵点图像从背景图像中分离出来。
图像阈值分割的关键是阈值选择。
大多单色织物图像都有一个特点织物图像的灰度值几乎都落在一个较小的灰度值区间内只有一部分由于布匹本身的纹— 40 —2010年4月 第04期 Apr. 2010 No.04理、光照条件及采集设备等的影响而落在这个正常灰度值区间之外。
疵点图像的灰度值必落在这正常灰度值区间之内所以找出这个区间及找到这个区间的上阈值和下阈值就可以把疵点从背景图像分割出来。
可通过正态分布求可信区间的方法求出这个区间。
对织物图像进行正态分布求可信区间方法就是把织物图像上的每一点像素点看作一个样本像素点上的灰度值看作样本值对其先求解正态分布及使用OpenCV的cvAvgSdv函数统计图像像素点的平均灰度值mean和标准差devc。
最后求上阈值为mean2.5devc.下阈值为mean2.5devc。
可信区间为下阈值上阈值。
使用正态分布求可信区间的方法的优点是可以较大程度地减少噪点对阈值选择的影响。
图1a是正常织物图像图1b是其灰度图像像素值从117255的直方图。
计算其可信区间为140175在这区间内的像素点数为65 357点占总像素点数的99.72 。
图1c为断经疵点图像图1d为其灰度图像从117255的像素值直方图。
对比图1b和图1d疵点主要在直方图1d的左边部分即灰度值124139区间内。
在这区间内的像素数占总像素数的1.54 。
实际疵点所占像素点约为1 548点占总像素的2.32 。
从上述数据表明此方法可行。
a 正常织物 b 直方图 c 断经织物 d 直方图图1 正常织物和疵点织物及其直方图Fig.1 Normal and Defect Fabrics and their Histograms3.2 实验过程以处理含有断经、纬疵的疵点图像的实验为例利用OpenCV计算机视觉函数库在.Net平台下编写上述算法实现织物疵点检测。
以下是实验过程中一些运行图片和疵点处理办法。
图2是经OpenCV中的cvCvtColor函数转换得到的灰度图像分别是断经、纬疵。
利用上述的正态分布求可信区间方法得到双阈值对灰度疵点图像使用cvThreshold函数进行阈值二值化分割得到疵点特征值图像如图3所示。
a 断经 b 纬疵 图2 灰度图像Fig.2 Gray Images a 断经 b 纬疵 图3 阈值分割后的疵点图Fig.3 Segmentation Results of Fabric Images图3的疵点特征图像有很多噪点利用OpenCV中的cvMorphologyEx形态函数和cvErode腐蚀函数除去这些噪点处理效果见图4。
a 断经 b 纬疵 图4 腐蚀运算后的疵点图像Fig.4 Eroded Results of Fabric Images经过噪点处理图像中仍然存在一些孤立点。
这些孤立点大部分是布匹的小疵点。
处理这些孤立点的思想是先把小于一定点尺寸的孤立点当作噪点除去再把尺寸稍大的孤立点当作疵点与邻近的疵点相连接起来。
调用OpenCV中cvFindContours函数计算各个孤立点的周长根据周长剔除噪点。
孤立点相连就需要调用OpenCV中cvGetReal2D函数和cvSetReal2D函数逐个访问图像中的像素点和修改图像中的像素值结果见图5。
— 41 —Apr. 2010 No.042010年4月 第04期 a 断经 b 纬疵图5 对孤立点处理后的图像Fig.5 Processed Results for Isolated Pixels最后调用cvCanny边缘检测函数对图5中二值化的疵点图像进行边缘检测。
再调用cvCopy函数在原彩色疵点图像中勾画出疵点轮廓进行疵点定位结果见图6。
a 断经 b 纬疵图6 织物图像的检测结果Fig.6 Located Results for Fabric Images4 结 论在上述实验中核心
代码只有120行。
说明OpenCV的图像处理能力较强
代码编写效率高解决了程序
代码编写繁琐、效率不高等问题。
如在程序中要对图像进行边缘检测这种需要大量
代码实现的功能时只需要调用OpenCV中的边缘检测函数使用一条语句即可而且疵点检测、定位准确。
OpenCV是织物疵点自动检测研究的一个好工具在织物疵点检测中可以广泛使用提高编程效率。
参考文献1刘瑞祯于仕琪.OpenCV教程——基础篇M.北京北京航空航天大学出版社2007.2贾小军喻擎苍. 基于
开源计算机视觉库OpenCV的图像处理J.计算机应用与软件2008254276-278.3YU Qingcang CHENG Harry H CHENG Wayne W et al. CH OpenCV for Interactive Open Architecture Computer VisionJ. Advances in Engineering Software 2004. 359: 527-536.4YU Qingcang CHENG Harry H CHENG Wayne W et al. Interactive Open Architecture Computer VisionC//15th IEEE International Conference on Tools with Artificial IntelligenceICTAI’03.Sacramento California USA: IEIE Computer Society 11 2003: 406-410.5于仕琪刘瑞祯.学习OpenCVM.北京清华大学出版社2009.6OpenCV-2.0.0a-win32.exeCP/OL.2009-10-152009-11-05.http://sourceforge.net/pro- jects /opencvlibrary/files/.7刘晶璟刘素一. 基于链码的织物疵点图像形态特征提取J. 现代电子技术20073023155-157.8RADOVAN S PANAGIOTIS M CHRISTOS Ket al. Realtime Vision-based System for Textile FabricInspectionJ.Real-Time Imaging200176:507-518.9刘建立左保齐.基于小波变换和阈值分割的织物疵点边缘检测J. 丝绸2008842-4450.