宋軍強(qiáng)
(無(wú)錫科技職業(yè)學(xué)院 物聯(lián)網(wǎng)技術(shù)學(xué)院,江蘇 無(wú)錫 214028)
?
OpenCV耦合機(jī)器視覺(jué)的背光板表面異物檢測(cè)算法研究
宋軍強(qiáng)
(無(wú)錫科技職業(yè)學(xué)院 物聯(lián)網(wǎng)技術(shù)學(xué)院,江蘇 無(wú)錫214028)
在平板電腦組裝過(guò)程中,重要零部件背光板表面往往沾有微型異物,如灰塵,這些異物不易依靠人眼檢測(cè),且對(duì)最終產(chǎn)品質(zhì)量有很大影響。對(duì)此,文章提出了一個(gè)基于OpenCV與機(jī)器視覺(jué)的背光板表面異物檢測(cè)算法。首先,對(duì)待檢測(cè)零部件圖像進(jìn)行最大類間閾值分割處理與形態(tài)學(xué)處理,得到包含背光板待檢部分的區(qū)域;隨后利用OpenCV輪廓查找函數(shù)cvStartFindContours,定位背光板待檢部分的最大外接矩形區(qū)域,并聯(lián)合OpenCV的cvFloodFill函數(shù)對(duì)背光板輪廓數(shù)組內(nèi)進(jìn)行置白,生成掩碼模板,進(jìn)行圖像按位相與運(yùn)算處理,從而提取出不規(guī)則的待檢測(cè)區(qū)域。再將提取出的ROI復(fù)制一份給RGB圖像,且對(duì)ROI圖像進(jìn)行開運(yùn)算處理,對(duì)兩幅圖像進(jìn)行線性相減,使異物處明顯化。最后,基于圖像卷積處理,進(jìn)一步突出異物,完成異物檢測(cè)。實(shí)驗(yàn)測(cè)試結(jié)果表明:與當(dāng)前圖像異物檢測(cè)算法相比,文章機(jī)制具有更好的檢測(cè)定位效果,準(zhǔn)確識(shí)別出背光板異物。
異物檢測(cè);背光板;機(jī)器視覺(jué);OpenCV;圖像卷積;掩碼模板
隨著智能工廠概念的深入和實(shí)施,現(xiàn)代制造業(yè)正在向無(wú)人化、機(jī)器化、自動(dòng)化、智能化方向不斷地深化改革。尤其在無(wú)人化和機(jī)器化方面,工廠開始越來(lái)越多的采用機(jī)器代替作業(yè)員,實(shí)現(xiàn)產(chǎn)業(yè)自動(dòng)化生產(chǎn),這樣不僅可以提高生產(chǎn)效率和產(chǎn)品質(zhì)量,還可以節(jié)約人力成本,將寶貴的人力成本流向更需要的行業(yè)[1-4]。本文研究的主要問(wèn)題是平板電腦生產(chǎn)組裝過(guò)程中,背光板(BLU)表面異物檢測(cè),用機(jī)器自動(dòng)檢測(cè)代替用人眼檢測(cè)。背光板是平板電腦的重要零部件,在進(jìn)入正式組裝工位前,需經(jīng)過(guò)一段傳送帶,往往不可避免的會(huì)沾有異物,按照以往的工作方法是安排若干位熟練作業(yè)員,用人眼進(jìn)行檢查,是否存在異物。而異物多為空氣中的灰塵、粉塵、絲線等,非常微小,如果依靠人眼,會(huì)產(chǎn)生一定量的漏檢和誤判,如果采用高倍工業(yè)相機(jī)取像,傳送至帶智能圖像分析的PC機(jī)處理和檢測(cè),可以顯著提高檢測(cè)精度和效率[5-7]。
實(shí)際上,近幾年來(lái)機(jī)器視覺(jué)檢測(cè)技術(shù)已經(jīng)在該領(lǐng)域內(nèi)得到廣泛應(yīng)用,并且已在很大程度上推動(dòng)了制造業(yè)發(fā)展[8-10],尤其是在產(chǎn)品外觀缺陷檢測(cè)上面。目前,已有部分學(xué)者設(shè)計(jì)了相應(yīng)的缺陷檢測(cè)算法,并且達(dá)到了一定的效果。如江偉榮等人[11]利用梯度均方差進(jìn)行特征分析后,提取角點(diǎn)的缺陷檢測(cè)算法,實(shí)驗(yàn)結(jié)果表明去算法具有較好的檢測(cè)精度。還有利用局部圖像區(qū)域直方圖特性定位角點(diǎn)的缺陷檢測(cè)算法[12]。這些算法的實(shí)驗(yàn)結(jié)果表明其具有良好的缺陷檢測(cè)效果[8]。
盡管上述這些缺陷檢測(cè)機(jī)制能夠取得較好的效果;但是當(dāng)目標(biāo)非常微小時(shí),這些算法的檢測(cè)精度較低,存在明顯的檢測(cè)偏差。
對(duì)此,本文提出了一個(gè)基于OpenCV與缺陷檢測(cè)的背光板表面異物識(shí)別機(jī)制。并通過(guò)實(shí)驗(yàn),驗(yàn)證了本文算法與傳統(tǒng)檢測(cè)算法的性能。
在平板電腦組裝生產(chǎn)線中,傳送帶上的背光板表面如果沾有灰塵、顆粒等其他微型異物,將影響最終產(chǎn)品的質(zhì)量。因此,對(duì)產(chǎn)線中的背光板表面異物進(jìn)行視覺(jué)檢測(cè),是十分必要的。由于灰塵、顆粒的面積非常小,一般只有10μm2,而人眼具有一定的生理局限和主觀性,在這樣的背景下,如果依賴人眼進(jìn)行檢測(cè),往往會(huì)發(fā)生誤判和漏判,整個(gè)檢測(cè)系統(tǒng)的效率也會(huì)大受影響。在這樣的項(xiàng)目需求背景下,將基于圖像智能處理的機(jī)器視覺(jué)檢測(cè)應(yīng)用在背光板表面異物檢測(cè)上的思想應(yīng)運(yùn)而生。
背光板是平板電腦的重要零部件,如下圖1所示,灰白色區(qū)域?yàn)榇曈X(jué)檢測(cè)區(qū)域,黑色邊框以為不需檢測(cè),需要用軟件的方法剪除。表面異物非常微小,將表面異物進(jìn)行較大倍數(shù)的放大后,如圖2所示,異物成顆粒狀,顏色偏亮偏白,與周邊背景有一定的對(duì)比度。
對(duì)此,為了能夠精確檢測(cè)出這種缺陷,本文提出了背光板表面異物檢測(cè)算法,如圖3所示。并基于C++和OpenCV來(lái)實(shí)現(xiàn)本文算法。首先,對(duì)待檢測(cè)圖像進(jìn)行最大類間閾值分割處理與形態(tài)學(xué)處理,得到包含背光板待檢部分的區(qū)域。然后,基于OpenCV輪廓查找函數(shù)cvStartFindContours定位背光板待檢部分的最大外接矩形區(qū)域,基于OpenCV的cvFloodFill函數(shù)對(duì)背光板輪廓數(shù)組內(nèi)進(jìn)行置白,生成掩碼模板,進(jìn)行圖像相與處理,從而提取出不規(guī)則的待檢測(cè)區(qū)域。最后,將提取出的ROI復(fù)制一份RGB圖像,然后再對(duì)ROI圖像進(jìn)行開運(yùn)算處理,兩幅圖像進(jìn)行線性相減,使異物處明顯化。再基于圖像卷積處理,進(jìn)一步突出異物,并在原圖中用紅色圓圈標(biāo)注,以展示檢測(cè)效果。
圖1 反光板
圖2 放大后的異物
圖3 本文機(jī)制架構(gòu)
2.1背光板ROI粗定位
首先,對(duì)待檢測(cè)圖像(如圖1所示)進(jìn)行灰度化:
(1)
再進(jìn)行最大類間閾值分割處理,得到包含背光板待檢部分的區(qū)域[13]:
σ(t)2=w1(t)w2(t)[u1(t)-u2(t)]2
(2)
接著對(duì)包含背光板待檢部分的區(qū)域進(jìn)行一次腐蝕一次膨脹,以去除邊緣離散點(diǎn),使邊緣平滑化,見(jiàn)圖4。
圖4 二值圖
2.2背光板ROI細(xì)定位
再基于OpenCV輪廓查找函數(shù)cvStartFindContours和最大面積特征,定位背光板待檢部分的最大外接矩形區(qū)域,并提取出來(lái),如圖5所示。從圖中可見(jiàn),背光板待檢部分全部提取出,但是四邊有少量黑色邊框,需要剪除這些黑色邊框,否則會(huì)影響后期處理,因?yàn)楹谏吙蚺c背光板待檢部分差異較大。隨后,將背光板待檢部分輪廓數(shù)組保存在OpenCV的數(shù)據(jù)格式CvSeq中;基于OpenCV的cvFloodFill函數(shù)對(duì)背光板輪廓數(shù)組內(nèi)進(jìn)行置白,生成掩碼模板,見(jiàn)圖6;再將圖6與圖5進(jìn)行圖像按位相與運(yùn)算處理,從而提取出不規(guī)則的待檢測(cè)區(qū)域,非待檢區(qū)域用黑色像素置黑(如圖7所示)。
圖5 提取出的帶少量黑色邊框的背光板待檢測(cè)區(qū)域圖
圖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.1背光板異物增強(qiáng)
將提取出的ROI復(fù)制一份RGB圖像,然后再對(duì)ROI圖像進(jìn)行開運(yùn)算處理,由于異物是孤立的,并且與周邊有一定對(duì)比度,開運(yùn)算處理后,異物會(huì)被弱化或者消除;再將兩幅圖像進(jìn)行線性相減,原存在異物的坐標(biāo)處的差值最大,而本無(wú)異物處的差值很小,甚至為0,即完成異物處明顯化。
隨后,基于圖像卷積處理,即5×5的矩陣核,如式(3),順序卷積處理圖像每個(gè)像素:
(3)
最后生成新圖像,并基于矩陣閾值,即將圖像分為兩部分,即原存在異物處為白點(diǎn),閾值以下,即正常的其他區(qū)域?yàn)槿?,從而進(jìn)一步突出異物(如圖8所示)。
圖8 被突出的異物點(diǎn)
3.2背光板異物檢測(cè)
最后,記錄異物坐標(biāo),并在原圖中用紅色圓圈標(biāo)注,以展示檢測(cè)效果,見(jiàn)如圖9。再對(duì)檢測(cè)出的異物點(diǎn)區(qū)域放大,以方便觀察檢測(cè)效果,見(jiàn)圖10。從圖中可知,白色微型異物被檢測(cè)出和標(biāo)記。
圖9 被檢測(cè)出的異物點(diǎn)
圖10 檢測(cè)出的異物點(diǎn)放大展示
背光板表面異物檢測(cè)部分代碼:
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);//提取不規(guī)則區(qū)域
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; } } 為了驗(yàn)證本文算法的可行性與優(yōu)越性,將當(dāng)前的缺陷檢測(cè)精度較好的算法:文獻(xiàn)[11]視為對(duì)照組,記為A算法。并利用C++、OpenCV編程,完成對(duì)背光板表面異物圖像(如圖11所示)的灰度化、閾值分割、形態(tài)學(xué)處理、背光板待檢區(qū)域的輪廓定位、ROI提取(如圖12所示)、圖像線性運(yùn)算、圖像卷積。評(píng)判標(biāo)準(zhǔn)為:是否能準(zhǔn)確定位圈出異物點(diǎn)位置。 以圖11為待檢測(cè)對(duì)象,利用本文算法與對(duì)照組機(jī)制進(jìn)行處理,結(jié)果見(jiàn)圖12~圖14。從圖中可知,在異物特征微弱的情況下,本文算法仍然能準(zhǔn)確識(shí)別目標(biāo),并標(biāo)注位置,如圖13所示。而對(duì)照組是利用梯度均方差進(jìn)行特征分析后,通過(guò)提取角點(diǎn)完成缺陷檢測(cè),在圖像目標(biāo)非常小,且特征微弱時(shí),往往存在目標(biāo)識(shí)別不準(zhǔn)確,如圖14所示。 圖11 原圖 圖12 ROI效果圖 圖13 本文算法檢測(cè)效果 圖14 文獻(xiàn)[4]的檢測(cè)效果 為了量化不同算法的檢測(cè)精確度,本文采用對(duì)同一枚背光板檢測(cè),先用精密光學(xué)距離測(cè)量工具測(cè)算出實(shí)際異物點(diǎn)坐標(biāo);然后分別用傳統(tǒng)算法和本文算法定位出異物目標(biāo),即得出坐標(biāo),反復(fù)測(cè)試10次,然后綜合取平均值后,結(jié)果見(jiàn)表1。從表中可知,本文算法的定位精度比傳統(tǒng)技術(shù)要高,定位偏移非常?。欢鴤鹘y(tǒng)的異物定位技術(shù)產(chǎn)生了較大的偏移。 表1 測(cè)試數(shù)據(jù)表 為了解決背光板表面異物微小,依靠人眼檢測(cè),較困難的問(wèn)題,本文提出了一個(gè)基于OpenCV與機(jī)器視覺(jué)的背光板表面異物檢測(cè)機(jī)制。首先,對(duì)背光板表面異物特征分析后,進(jìn)行最大類間閾值分割處理與形態(tài)學(xué)處理,得到包含背光板待檢部分的區(qū)域。然后,利用OpenCV輪廓查找函數(shù)定位背光板待檢部分區(qū)域,并基于OpenCV的cvFloodFill函數(shù)對(duì)背光板輪廓數(shù)組內(nèi)進(jìn)行置白,生成掩碼模板,進(jìn)行圖像按位相與運(yùn)算處理,從而提取出不規(guī)則的ROI區(qū)域。最后,將提取出的ROI復(fù)制一份給RGB圖像,然后再對(duì)ROI圖像進(jìn)行開運(yùn)算處理,兩幅圖像進(jìn)行線性相減,使異物處更加突出。再基于圖像卷積處理,進(jìn)一步使異物區(qū)別于背景,并在原圖中用紅色圓圈標(biāo)注,以展示檢測(cè)效果。最后測(cè)試了本文機(jī)制性能,結(jié)果表明:與普通的圖像異物檢測(cè)算法相比,本文機(jī)制具有更好的檢測(cè)效果,準(zhǔn)確定位出背光板圖像異物的坐標(biāo)。 [1] 潘武, 張莉彥, 徐俊成.基于機(jī)器視覺(jué)的工件的在線檢測(cè) [J]. 組合機(jī)床與自動(dòng)化加工技術(shù),2012(7):75-78. [2] 李龍. 基于OpenCV的機(jī)場(chǎng)跑道異物檢測(cè)系統(tǒng)設(shè)計(jì)與研究[J]. 計(jì)算機(jī)測(cè)量與控制,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] 聶華. 基于先驗(yàn)知識(shí)的微型零件檢測(cè)中異物偽信息的剔除[J]. 計(jì)算機(jī)應(yīng)用,2013, 21(7):1906-1913. [5] 段錚昱. 基于機(jī)器視覺(jué)的電子產(chǎn)品外觀表面缺陷檢測(cè)方法研究 [J]. 計(jì)算機(jī)測(cè)量與控制,2014, 22(4):1009-1014. [6]秦緒佳,桑賢生,程時(shí)偉. 農(nóng)產(chǎn)品異物檢測(cè)的機(jī)器視覺(jué)采集控制系統(tǒng)構(gòu)建[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),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ìn)偉, 郭朝勇, 劉紅寧. 基于機(jī)器視覺(jué)的槍彈外觀缺陷檢測(cè)系統(tǒng)研究 [J]. 組合機(jī)床與自動(dòng)化加工技術(shù), 2013(4): 59-64. [11] 江偉榮. 基于機(jī)器視覺(jué)的橡膠密封圈檢測(cè)的研究[D]. 合肥:合肥工業(yè)大學(xué), 2014. [12] 王新新. TFT-CD缺陷檢測(cè)系統(tǒng)的研究[J].電子測(cè)量與儀器學(xué)報(bào)2014, 28(24):906-913. [13]鄒小林, 馮國(guó)燦. 融合視覺(jué)模型和最大類間方差的閾值分割算法[J]. 計(jì)算機(jī)應(yīng)用研究,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 宋軍強(qiáng)(1978—),男,江蘇無(wú)錫人,無(wú)錫科技職業(yè)學(xué)院講師,碩士,研究方向?yàn)閳D像處理、機(jī)器視覺(jué)檢測(cè),(E-mail)SongJunqiang1978@163.com。 TH166;TG506 A4 實(shí)驗(yàn)與討論
5 結(jié)論