APP下载

OpenCV耦合机器视觉的背光板表面异物检测算法研究

2015-10-31宋军强

组合机床与自动化加工技术 2015年11期
关键词:异物机器定位

宋军强

(无锡科技职业学院 物联网技术学院,江苏 无锡 214028)



OpenCV耦合机器视觉的背光板表面异物检测算法研究

宋军强

(无锡科技职业学院 物联网技术学院,江苏 无锡214028)

在平板电脑组装过程中,重要零部件背光板表面往往沾有微型异物,如灰尘,这些异物不易依靠人眼检测,且对最终产品质量有很大影响。对此,文章提出了一个基于OpenCV与机器视觉的背光板表面异物检测算法。首先,对待检测零部件图像进行最大类间阈值分割处理与形态学处理,得到包含背光板待检部分的区域;随后利用OpenCV轮廓查找函数cvStartFindContours,定位背光板待检部分的最大外接矩形区域,并联合OpenCV的cvFloodFill函数对背光板轮廓数组内进行置白,生成掩码模板,进行图像按位相与运算处理,从而提取出不规则的待检测区域。再将提取出的ROI复制一份给RGB图像,且对ROI图像进行开运算处理,对两幅图像进行线性相减,使异物处明显化。最后,基于图像卷积处理,进一步突出异物,完成异物检测。实验测试结果表明:与当前图像异物检测算法相比,文章机制具有更好的检测定位效果,准确识别出背光板异物。

异物检测;背光板;机器视觉;OpenCV;图像卷积;掩码模板

0 引言

随着智能工厂概念的深入和实施,现代制造业正在向无人化、机器化、自动化、智能化方向不断地深化改革。尤其在无人化和机器化方面,工厂开始越来越多的采用机器代替作业员,实现产业自动化生产,这样不仅可以提高生产效率和产品质量,还可以节约人力成本,将宝贵的人力成本流向更需要的行业[1-4]。本文研究的主要问题是平板电脑生产组装过程中,背光板(BLU)表面异物检测,用机器自动检测代替用人眼检测。背光板是平板电脑的重要零部件,在进入正式组装工位前,需经过一段传送带,往往不可避免的会沾有异物,按照以往的工作方法是安排若干位熟练作业员,用人眼进行检查,是否存在异物。而异物多为空气中的灰尘、粉尘、丝线等,非常微小,如果依靠人眼,会产生一定量的漏检和误判,如果采用高倍工业相机取像,传送至带智能图像分析的PC机处理和检测,可以显著提高检测精度和效率[5-7]。

实际上,近几年来机器视觉检测技术已经在该领域内得到广泛应用,并且已在很大程度上推动了制造业发展[8-10],尤其是在产品外观缺陷检测上面。目前,已有部分学者设计了相应的缺陷检测算法,并且达到了一定的效果。如江伟荣等人[11]利用梯度均方差进行特征分析后,提取角点的缺陷检测算法,实验结果表明去算法具有较好的检测精度。还有利用局部图像区域直方图特性定位角点的缺陷检测算法[12]。这些算法的实验结果表明其具有良好的缺陷检测效果[8]。

尽管上述这些缺陷检测机制能够取得较好的效果;但是当目标非常微小时,这些算法的检测精度较低,存在明显的检测偏差。

对此,本文提出了一个基于OpenCV与缺陷检测的背光板表面异物识别机制。并通过实验,验证了本文算法与传统检测算法的性能。

1 本文整体检测与识别机制

在平板电脑组装生产线中,传送带上的背光板表面如果沾有灰尘、颗粒等其他微型异物,将影响最终产品的质量。因此,对产线中的背光板表面异物进行视觉检测,是十分必要的。由于灰尘、颗粒的面积非常小,一般只有10μm2,而人眼具有一定的生理局限和主观性,在这样的背景下,如果依赖人眼进行检测,往往会发生误判和漏判,整个检测系统的效率也会大受影响。在这样的项目需求背景下,将基于图像智能处理的机器视觉检测应用在背光板表面异物检测上的思想应运而生。

背光板是平板电脑的重要零部件,如下图1所示,灰白色区域为待视觉检测区域,黑色边框以为不需检测,需要用软件的方法剪除。表面异物非常微小,将表面异物进行较大倍数的放大后,如图2所示,异物成颗粒状,颜色偏亮偏白,与周边背景有一定的对比度。

对此,为了能够精确检测出这种缺陷,本文提出了背光板表面异物检测算法,如图3所示。并基于C++和OpenCV来实现本文算法。首先,对待检测图像进行最大类间阈值分割处理与形态学处理,得到包含背光板待检部分的区域。然后,基于OpenCV轮廓查找函数cvStartFindContours定位背光板待检部分的最大外接矩形区域,基于OpenCV的cvFloodFill函数对背光板轮廓数组内进行置白,生成掩码模板,进行图像相与处理,从而提取出不规则的待检测区域。最后,将提取出的ROI复制一份RGB图像,然后再对ROI图像进行开运算处理,两幅图像进行线性相减,使异物处明显化。再基于图像卷积处理,进一步突出异物,并在原图中用红色圆圈标注,以展示检测效果。

图1 反光板

图2 放大后的异物

图3 本文机制架构

2 背光板表面异物ROI提取

2.1背光板ROI粗定位

首先,对待检测图像(如图1所示)进行灰度化:

(1)

再进行最大类间阈值分割处理,得到包含背光板待检部分的区域[13]:

σ(t)2=w1(t)w2(t)[u1(t)-u2(t)]2

(2)

接着对包含背光板待检部分的区域进行一次腐蚀一次膨胀,以去除边缘离散点,使边缘平滑化,见图4。

图4 二值图

2.2背光板ROI细定位

再基于OpenCV轮廓查找函数cvStartFindContours和最大面积特征,定位背光板待检部分的最大外接矩形区域,并提取出来,如图5所示。从图中可见,背光板待检部分全部提取出,但是四边有少量黑色边框,需要剪除这些黑色边框,否则会影响后期处理,因为黑色边框与背光板待检部分差异较大。随后,将背光板待检部分轮廓数组保存在OpenCV的数据格式CvSeq中;基于OpenCV的cvFloodFill函数对背光板轮廓数组内进行置白,生成掩码模板,见图6;再将图6与图5进行图像按位相与运算处理,从而提取出不规则的待检测区域,非待检区域用黑色像素置黑(如图7所示)。

图5 提取出的带少量黑色边框的背光板待检测区域图

图6 掩码模板图

图7 ROI图

背光板表面异物ROI提取部分代码:

IplImage*image=cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);

IplImage*imagei=cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);

cvCvtColor(image1,image,CV_BGR2GRAY);

cvCvtColor(image1,imagei,CV_BGR2GRAY);

cvThreshold( image, image,50,255,CV_THRESH_BINARY);

IplConvKernel*element=cvCreateStructuringElementEx(5,5,1,1,CV_SHAPE_RECT,0);

cvDilate( image, image, element, 1);

cvErode( image, image, element, 1);

cvSaveImage("D:/image.bmp",image);

CvMemStorage *storage=cvCreateMemStorage();

CvContourScanner scanner=NULL;

CvSeq *contour=0;

CvSeq *con=0;

double tmparea=0.0;

double maxarea=0.0;

CvRect rect;

int xmin=10000;

int ymin=10000;

int xmax=0;

int ymax=0;

int xais=0;

int yais=0;

CvPoint pt1,pt2;

scanner=cvStartFindContours(image,storage,sizeof(CvContour),CV_RETR_CCOMP,CV_CHAIN_APPROX_NONE,cvPoint(0,0));

while (contour=cvFindNextContour(scanner))

{

tmparea=fabs(cvContourArea(contour));

rect=cvBoundingRect(contour,0);cvDrawContours(image,contour,CV_RGB(0,0,0),CV_RGB(0,0,0),-1,CV_FILLED,8);*/

if (tmparea>maxarea)

{

maxarea=tmparea;

xmin=rect.x;

ymin=rect.y;

xmax=rect.x+rect.width;

ymax=rect.y+rect.height;

con=contour;

}

}

contour = cvEndFindContours(&scanner);

CvRect s;

CvPoint pt;

s=cvBoundingRect(con);

pt=cvPoint(s.x+s.width/2 , s.y+s.height/2);

cvFloodFill(image,pt,cvScalarAll(255));

3 本文背光板表面异物检测算法

3.1背光板异物增强

将提取出的ROI复制一份RGB图像,然后再对ROI图像进行开运算处理,由于异物是孤立的,并且与周边有一定对比度,开运算处理后,异物会被弱化或者消除;再将两幅图像进行线性相减,原存在异物的坐标处的差值最大,而本无异物处的差值很小,甚至为0,即完成异物处明显化。

随后,基于图像卷积处理,即5×5的矩阵核,如式(3),顺序卷积处理图像每个像素:

(3)

最后生成新图像,并基于矩阵阈值,即将图像分为两部分,即原存在异物处为白点,阈值以下,即正常的其他区域为全黑,从而进一步突出异物(如图8所示)。

图8 被突出的异物点

3.2背光板异物检测

最后,记录异物坐标,并在原图中用红色圆圈标注,以展示检测效果,见如图9。再对检测出的异物点区域放大,以方便观察检测效果,见图10。从图中可知,白色微型异物被检测出和标记。

图9 被检测出的异物点

图10 检测出的异物点放大展示

背光板表面异物检测部分代码:

cvSetImageROI(image,cvRect(xmin,ymin,xmax-xmin,ymax-ymin));

cvSetImageROI(imagei,cvRect(xmin,ymin,xmax-xmin,ymax-ymin));

IplImage*ROI=cvCreateImage(cvGetSize(image),image->depth,image->nChannels);

IplImage*src=cvCreateImage(cvGetSize(imagei),imagei->depth,imagei->nChannels);

IplImage*dst=cvCreateImage(cvGetSize(imagei),imagei->depth,imagei->nChannels);

cvCopy(image, ROI, NULL);

cvCopy(imagei, src, NULL);

cvResetImageROI(image);

cvResetImageROI(imagei);

cvErode( ROI, ROI, element, 3);

cvNamedWindow( "1", 0 );

cvResizeWindow("1",cvGetSize(ROI).width*0.5,cvGetSize(ROI).height*0.5);

cvShowImage("1",ROI);cvWaitKey(1);

cvAnd(src,ROI,dst,NULL);//提取不规则区域

CvScalar pixel;

int Xxiao=0;

int Yxiao=0;

int Xda=cvGetSize(ROI).width;

int Yda=cvGetSize(ROI).height;

for(int x=0;x

{

pixel=cvGet2D(ROI,cvGetSize(ROI).height/2,x);

if(pixel.val[0]==255)

{

Xxiao=x;

Xxiao=2*Xxiao;

break;

}

}

for(int y=cvGetSize(ROI).height-5;y>0;y--)

{

pixel=cvGet2D(ROI,y,cvGetSize(ROI).width/2);if(pixel.val[0]==255)

{

Yda=y;

Yda=Yda-(cvGetSize(ROI).height-Yda);

break;

}

}

4 实验与讨论

为了验证本文算法的可行性与优越性,将当前的缺陷检测精度较好的算法:文献[11]视为对照组,记为A算法。并利用C++、OpenCV编程,完成对背光板表面异物图像(如图11所示)的灰度化、阈值分割、形态学处理、背光板待检区域的轮廓定位、ROI提取(如图12所示)、图像线性运算、图像卷积。评判标准为:是否能准确定位圈出异物点位置。

以图11为待检测对象,利用本文算法与对照组机制进行处理,结果见图12~图14。从图中可知,在异物特征微弱的情况下,本文算法仍然能准确识别目标,并标注位置,如图13所示。而对照组是利用梯度均方差进行特征分析后,通过提取角点完成缺陷检测,在图像目标非常小,且特征微弱时,往往存在目标识别不准确,如图14所示。

图11 原图

图12 ROI效果图

图13 本文算法检测效果

图14 文献[4]的检测效果

为了量化不同算法的检测精确度,本文采用对同一枚背光板检测,先用精密光学距离测量工具测算出实际异物点坐标;然后分别用传统算法和本文算法定位出异物目标,即得出坐标,反复测试10次,然后综合取平均值后,结果见表1。从表中可知,本文算法的定位精度比传统技术要高,定位偏移非常小;而传统的异物定位技术产生了较大的偏移。

表1 测试数据表

5 结论

为了解决背光板表面异物微小,依靠人眼检测,较困难的问题,本文提出了一个基于OpenCV与机器视觉的背光板表面异物检测机制。首先,对背光板表面异物特征分析后,进行最大类间阈值分割处理与形态学处理,得到包含背光板待检部分的区域。然后,利用OpenCV轮廓查找函数定位背光板待检部分区域,并基于OpenCV的cvFloodFill函数对背光板轮廓数组内进行置白,生成掩码模板,进行图像按位相与运算处理,从而提取出不规则的ROI区域。最后,将提取出的ROI复制一份给RGB图像,然后再对ROI图像进行开运算处理,两幅图像进行线性相减,使异物处更加突出。再基于图像卷积处理,进一步使异物区别于背景,并在原图中用红色圆圈标注,以展示检测效果。最后测试了本文机制性能,结果表明:与普通的图像异物检测算法相比,本文机制具有更好的检测效果,准确定位出背光板图像异物的坐标。

[1] 潘武, 张莉彦, 徐俊成.基于机器视觉的工件的在线检测 [J]. 组合机床与自动化加工技术,2012(7):75-78.

[2] 李龙. 基于OpenCV的机场跑道异物检测系统设计与研究[J]. 计算机测量与控制,2013,18(11):383-387.

[3] S Ghorai, A Mukherjee, M Gangadaran. Automatic defect detection on hot-rolled flat steel products[J]. Instrumentation and Measurement, IEEE Transactions,2013, 62(3):612-621.

[4] 聂华. 基于先验知识的微型零件检测中异物伪信息的剔除[J]. 计算机应用,2013, 21(7):1906-1913.

[5] 段铮昱. 基于机器视觉的电子产品外观表面缺陷检测方法研究 [J]. 计算机测量与控制,2014, 22(4):1009-1014.

[6]秦绪佳,桑贤生,程时伟. 农产品异物检测的机器视觉采集控制系统构建[J]. 计算机辅助设计与图形学学报,2011, 23(2):371-376.

[7] Ning He, Lulu Zhang, Ke Lu. Aluminum CT Image Defect Detection Based on Segmentation and Feature Extraction[J].Computer Science,2014, 85(32):446-454.

[8] L Wang, A Li, X Tian. Detection of Fruit Skin Defects Using MachineVision System[J].Business Intelligence and Financial, 2013, 43(16): 44-48.

[9]S Cubero, N Aleixos, E Moltó. Advances in machine vision applications for automatic inspection and quality evaluation of fruits and vegetables[J]. Food and Bioprocess Technology, 2011, 4(4): 487-504.

[10]史进伟, 郭朝勇, 刘红宁. 基于机器视觉的枪弹外观缺陷检测系统研究 [J]. 组合机床与自动化加工技术, 2013(4): 59-64.

[11] 江伟荣. 基于机器视觉的橡胶密封圈检测的研究[D]. 合肥:合肥工业大学, 2014.

[12] 王新新. TFT-CD缺陷检测系统的研究[J].电子测量与仪器学报2014, 28(24):906-913.

[13]邹小林, 冯国灿. 融合视觉模型和最大类间方差的阈值分割算法[J]. 计算机应用研究,2013,33(3): 670-673.

(编辑李秀敏)

The Study on Image Objects Location and Compensation Technology Based on OpenCV and Machine Vision

SONG Jun-qiang

(Institute of Technology of Internet of Things, Wuxi Professional College of Science and Technology, Wuxi Jiangsu 214028, China)

Assembled in flat computer process, important parts of the backlight board surface often stained with micro foreign bodies, such as dust, these foreign bodies are not easy to rely on eye detection, and has a great influence on the quality of the final product. Therefore, this paper proposes a backlight plate surface based on foreign recognition mechanism and defect detection of OpenCV. First of all, treat the detected image maximum between class threshold segmentation and morphological processing, including the backlight board inspected region. Then, the largest outer OpenCV contour search function of cvStartFindContours positioning to be detected based on the backlight board part of the rectangle region, cvFloodFill function of OpenCV on the backlight plate profile in an array of the white based, generated mask template, image and processing, to extract the irregular tested area. Finally, the extracted ROI copy of a RGB image, and then the ROI image to open operation treatment, two images are linear subtraction, so that the foreign matters at the obvious. Then image convolution based processing, further highlight the foreign body, and in the original image with a red circle labeling, to display the detection result. The final test performance, the foreign body recognition results show that: compared with the current image recognition algorithm in this paper, foreign body, mechanism has better recognition effect, accurately identify the backlight board foreign body.

foreign detection; backlight plate; machine vision; OpenCV; image convolution;mask template

1001-2265(2015)11-0083-05DOI:10.13462/j.cnki.mmtamt.2015.11.024

2015-01-09

宋军强(1978—),男,江苏无锡人,无锡科技职业学院讲师,硕士,研究方向为图像处理、机器视觉检测,(E-mail)SongJunqiang1978@163.com。

TH166;TG506

A

猜你喜欢

异物机器定位
机器狗
定位的奥秘
机器狗
食管异物不可掉以轻心
如何处理异物进入眼睛
自制异物抓捕器与传统异物抓捕器在模拟人血管内异物抓取的试验对比
KEY G6型异物剔除机轴承损坏频次过高的分析及改进
《导航定位与授时》征稿简则
Smartrail4.0定位和控制
银行业对外开放再定位