摘 要:污垢檢測是石英晶片缺陷檢測的重要組成部分。為實(shí)現(xiàn)比較理想的污垢檢測,采用基于開源計(jì)算機(jī)視覺庫OpenCV的圖像處理技術(shù)對石英晶片污垢缺陷進(jìn)行檢測。在此通過依次對圖像進(jìn)行平滑去噪、二值化閾值分割、輪廓提取和跟蹤等處理,計(jì)算出輪廓的周長,將有缺陷與無缺陷晶片輪廓進(jìn)行比較,為晶片污垢檢測提供依據(jù)。實(shí)驗(yàn)結(jié)果表明在Visual Studio 2008環(huán)境下,利用OpenCV庫函數(shù)縮短了大量編程時(shí)間,提高了工作效率。
關(guān)鍵詞:OpenCV; 石英晶片; 輪廓提??; 污垢檢測
中圖分類號(hào):TN91934 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1004373X(2012)22015503
基金項(xiàng)目:北京市教委面上項(xiàng)目:相位偏移法石英晶體動(dòng)態(tài)電參數(shù)測試技術(shù)研究(Km201110772004) 石英晶體諧振器是當(dāng)今電子設(shè)備不可缺少的關(guān)鍵組件,被廣泛應(yīng)用于電子鐘表、彩電、音響、DVD、計(jì)算機(jī)、移動(dòng)數(shù)碼設(shè)備,無線通信、電視信號(hào)轉(zhuǎn)播等各領(lǐng)域,隨著電子信息產(chǎn)業(yè)的飛速發(fā)展,尤其是數(shù)字化電路的廣泛應(yīng)用,石英晶體諧振器的市場需求量快速增長[1]。石英晶片(以下簡稱晶片)是石英晶體在鍍電極和封裝前的半成品,對石英晶體諧振器進(jìn)行封裝前要首先檢測石英晶片的電參數(shù),然后對其進(jìn)行分選,將其合格石英晶片成品封裝。石英晶片自身存在的任何微小缺陷都會(huì)破壞其工作性能,其中污垢是自身缺陷之一。目前,國內(nèi)外大多采用人工目測檢測的方式。這種方法主觀性強(qiáng)、誤判率高,且工作人員易眼部疲勞,造成檢測精度降低。
計(jì)算機(jī)檢測技術(shù)在工業(yè)生產(chǎn)中有著廣泛的應(yīng)用,產(chǎn)品成品和次品的檢測很大程度上依賴于圖像處理技術(shù)。本文采用圖像處理技術(shù),利用OpenCV函數(shù)庫,對CCD相機(jī)采集的圖像進(jìn)行處理,從而利用少量的代碼實(shí)現(xiàn)對晶片是否有污垢缺陷的檢測,提高了檢測精度和工作效率。實(shí)驗(yàn)證明對石英晶片的污垢缺陷能可靠的檢測出。
1 晶片污垢檢測原理圖
本文主要目的是利用OpenCV提供的圖像處理函數(shù),對采集的晶片圖像進(jìn)行一系列預(yù)處理,提取到晶片的輪廓,利用輪廓特征參數(shù)進(jìn)行污垢缺陷的檢測[2],檢測原理如圖1所示。
2 晶片污垢檢測具體實(shí)現(xiàn)方法
2.1 OpenCV優(yōu)點(diǎn)
OpenCV是由Intel公司資助的開源計(jì)算機(jī)視覺庫,它由一系列C函數(shù)和少量C++類構(gòu)成,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法;擁有包括 300 多個(gè)C/C++函數(shù)的跨平臺(tái)的中、高層 API;不依賴于其他的外部庫,同時(shí)也可以使用某些外部庫;它為圖像處理、模式識(shí)別、三維重建、物體跟蹤、機(jī)器學(xué)習(xí)和線性代數(shù)提供了各種各樣的算法;OpenCV 對非商業(yè)應(yīng)用和商業(yè)應(yīng)用都是免費(fèi)(Free)的,研究者可以通過調(diào)用OpenCV算法庫,在前人已完成的成熟算法基礎(chǔ)上快速有效的開展自己的工作[3]。本文采用OpenCV2.1版本,主要模塊具體功能是:CV主要的OpenCV函數(shù),包含圖像處理和計(jì)算機(jī)視覺的算法;CVAUX輔助的(實(shí)驗(yàn)性)OpenCV函數(shù);CXCORE包含數(shù)據(jù)結(jié)構(gòu)及線性代數(shù)的基本運(yùn)算;HIGHGUI包含圖像界面函數(shù)、視頻輸入輸出函數(shù)以及一些系統(tǒng)調(diào)用函數(shù);ML機(jī)器學(xué)習(xí),包括模式分類和回歸分析等。在編程過程中只需包含OpenCV庫,調(diào)用相關(guān)函數(shù)即可,較以前的OpenCV版本代碼更簡潔,縮短了編程時(shí)間,提高了開發(fā)效率。
2.2 圖像平滑去噪
本文利用黑白CCD照相機(jī)和黑白圖像采集卡采集圖像,對采集到的灰度圖像進(jìn)行處理,數(shù)據(jù)量少,效率高[4]。采集到的晶片的灰度圖像如圖2所示,(a)為無缺陷晶片,(b)為有污垢缺陷的晶片。在圖像采集過程中,因光線、成像條件、光電轉(zhuǎn)換、A/D轉(zhuǎn)換等因素,會(huì)使采集的圖像產(chǎn)生一定的噪聲,并使圖像模糊,從而惡化了圖像的質(zhì)量[5]。因此對圖像處理之前必須進(jìn)行平滑去噪,常見的平滑去噪方法有:頻域去噪法、鄰域平均法、噪聲消除法、中值濾波法、選擇式掩膜平滑法等。結(jié)合本系統(tǒng)特點(diǎn)采用中值濾波法[6],基本原理是把數(shù)字圖像或數(shù)字序列中一點(diǎn)的值用該點(diǎn)的一個(gè)鄰域中各點(diǎn)值的中值代替,讓周圍的像素值接近真實(shí)值,從而消除孤立的噪聲點(diǎn),是一種非線性濾波。實(shí)驗(yàn)證明該方法能很好的抑制噪聲、有效的保留圖像細(xì)節(jié)、且處理速度快。
圖2 晶片的灰度圖像對圖像的中值濾波由函數(shù)medianBlur(const Mat src, Mat dst, int ksize)實(shí)現(xiàn),src為輸入圖像,dst為輸出圖像,ksize為線性光圈的大小,此處設(shè)置為5。經(jīng)平滑去噪后的處理結(jié)果如圖3所示。
由圖3可知,圖像中一些瑣碎的細(xì)節(jié)融入背景中變得模糊,減小了孤立的噪聲點(diǎn)。由于中值濾波不是簡單的取均值,產(chǎn)生的模糊比較少,晶片邊界細(xì)節(jié)得到了較好的保持。
圖3 平滑去噪后的圖像2.3 圖像二值化閾值分割
閾值分割是一種基于區(qū)域的圖像分割技術(shù),其基本原理是:通過設(shè)定不同的特征閾值,把圖像象素點(diǎn)分為若干類。二值化閾值分割就是,設(shè)原始圖像為f(x,y),按一定準(zhǔn)則在 f(x,y)中找到灰度值T作為分割閾值,然后將大于等于T的像素判為1(白色),將小于T的像素判為0(黑色),結(jié)果是把灰度圖像二值化。本文目的是利用二值化閾值分割將晶片對象與背景有效的分割開來[7],即通過實(shí)驗(yàn)設(shè)定好閾值,經(jīng)過二值化閾值分割將晶片對象處理為比較容易識(shí)別的白色,背景處理為黑色。從而盡可能的去除無效區(qū)域,完整的保存感興趣的部分,提高污垢識(shí)別的精度。圖像二值化閾值分割由函數(shù)threshold(const Mat src, Mat dst, double thresh, double maxVal, int thresholdType)實(shí)現(xiàn)。經(jīng)過多次實(shí)驗(yàn),取thresh=200,maxVal=255,thresholdType設(shè)為THRESH_BINARY即二值化濾波。當(dāng)圖像中某點(diǎn)像素值大于200時(shí),該點(diǎn)被判為1;小于200時(shí),該點(diǎn)被判為0。二值化閾值分割后的圖像如圖4所示。
圖4 二值化閾值分割后圖像2.4 輪廓提取和跟蹤
輪廓提取的原理就是掏空內(nèi)部點(diǎn),如果圖中有一點(diǎn)為黑,且它的8個(gè)相鄰點(diǎn)都是黑色時(shí),則判斷該點(diǎn)是內(nèi)部點(diǎn),并將該點(diǎn)刪除[8]。輪廓跟蹤就是通過順序查找邊緣點(diǎn)來跟蹤出邊界,其基本原理為:首先在圖像中按照從左到右、從上到下的順序搜索圖像的所有像素點(diǎn),首先找到晶片左上方的邊界點(diǎn),它的下,左下,右,右下4個(gè)鄰點(diǎn)中至少有一個(gè)是邊界點(diǎn),記為B。從B開始找起,按右,右下,下,左下,左,左上,上,右上的順序找相鄰點(diǎn)中的邊界點(diǎn)C。如果C是A點(diǎn),則表示邊界查找已經(jīng)循環(huán)一次,查找結(jié)束;否則從C點(diǎn)繼續(xù)找,直到找到A或找不到點(diǎn)為止[9]。
二值圖像中輪廓的查找由函數(shù)findContours(const Mat image, vector
contours, int mode, int method, Point offset=Point())實(shí)現(xiàn),image為輸入的8 b,單通道圖像,即threshold函數(shù)的輸出圖像;contours 為檢測到輪廓的存儲(chǔ)容器,輪廓以向量點(diǎn)的形式被存儲(chǔ);本文要找的是所有的輪廓,所以mode設(shè)置為CV_RETR_TREE提取所有輪廓,method設(shè)置為CV_CHAIN_APPROX_NONE將所有點(diǎn)由鏈碼形式翻譯(轉(zhuǎn)化)為點(diǎn)序列形式。
找到輪廓后將輪廓繪制出來由函數(shù):
drawContours(Mat image, const
vector
contourIdx, const Scalar color,int
thickness=1,int lineType=8, const
vector hierarchy=vector(), int
maxLevel=INT_MAX, Point offset=Point())實(shí)現(xiàn)
image為輸出圖像,contours為輸入的輪廓,輪廓是以點(diǎn)向量的形式存儲(chǔ)的;contourIdx指示繪制的輪廓;由于圖像背景是黑色,為了讓繪制的輪廓清晰可見,將顏色設(shè)為白色即color為Scalar(255)。輪廓跟蹤提取后圖像如圖5所示。
圖5 輪廓跟蹤提取后圖像3 污垢缺陷識(shí)別和結(jié)論
通過對輪廓的提取和跟蹤后的圖像可知,由于一般情況下污垢覆蓋在晶片表面,導(dǎo)致有污垢缺陷的晶片邊緣大輪廓內(nèi)部會(huì)有些小輪廓,而無缺陷晶片只有一個(gè)大的邊緣輪廓,其內(nèi)部沒有小輪廓。通過計(jì)算出圖像中每個(gè)輪廓的像素點(diǎn)個(gè)數(shù),將其與無缺陷晶片的輪廓像素點(diǎn)個(gè)數(shù)進(jìn)行比較,實(shí)現(xiàn)對晶片污垢缺陷的檢測。實(shí)驗(yàn)結(jié)果如下:無缺陷晶片輪廓長度[10]為429;有污垢缺陷的晶片輪廓長度分別為:426,10,8,4,10,40。通過查找相關(guān)資料并由多次實(shí)驗(yàn)采集到的數(shù)據(jù)得出,晶片污垢大小一般不會(huì)超過晶片大小的1/4,所以本文將閾值設(shè)置為(1/4)×429(標(biāo)準(zhǔn)輪廓的長度),在計(jì)算輪廓長度時(shí)如果發(fā)現(xiàn)存在輪廓像素個(gè)數(shù)小于(1/4)×429的,則將其視為有污垢缺陷的晶片,在工業(yè)生產(chǎn)中應(yīng)將其剔除。本實(shí)驗(yàn)是在CPU為 Intel Core(TM)2 E7200 ,主頻為2.53 GHz,內(nèi)存為2 GB的硬件平臺(tái)下進(jìn)行的,取10次實(shí)驗(yàn)的時(shí)間平均值,完成整個(gè)圖像處理的時(shí)間為115 ms。目前石英晶片自動(dòng)分選技術(shù)每小時(shí)檢測3 600個(gè)晶片,用在圖像處理上的時(shí)間約為400 ms/個(gè),與本文的圖像處理時(shí)間115 ms/個(gè)相比較,該論文的方法明顯提高了工作效率。
4 結(jié) 語
本文重點(diǎn)介紹了石英晶片污垢缺陷的檢測過程,并給出各個(gè)步驟的實(shí)驗(yàn)結(jié)果。通過實(shí)驗(yàn)可以看出,在Visual Studio 2008環(huán)境下,利用OpenCV庫函數(shù)能夠方便地對圖像進(jìn)行預(yù)處理,比較完整地將目標(biāo)從背景中分離出來,得到比較理想的晶片輪廓,方便對輪廓進(jìn)行運(yùn)算,為晶片缺陷識(shí)別檢測打下基礎(chǔ)。代碼量少,大大減少了計(jì)算機(jī)視覺方面的編程時(shí)間,提高了檢測精度,縮短了開發(fā)周期,具有很高的工業(yè)使用價(jià)值。
參 考 文 獻(xiàn)
[1] 李璟.石英晶體負(fù)載諧振電阻測試技術(shù)研究[D].北京:北京信息科技大學(xué),2008.
[2] GONZALEZ R C.數(shù)字圖像處理[M].2版.北京:電子工業(yè)出版社,2007.
[3] 陳勝勇,劉盛.基于OpenCV的計(jì)算機(jī)視覺技術(shù)實(shí)現(xiàn)[M].北京:科學(xué)出版社,2008.
[4] 陳勇.基于機(jī)器視覺的表面缺陷檢測系統(tǒng)的算法研究及軟件設(shè)計(jì)[D].天津:天津大學(xué),2006.
[5] 朱煜,姚傳俊.基于圖像處理技術(shù)的銅箔疵點(diǎn)檢測系統(tǒng)研究[J].電子技術(shù)應(yīng)用,2005(2):1920.
[6] WANG Zhiyu, LI Dong. Design of detection system ofquartz wafer's defect \[C\]// Proceedings of 2012 IWIEE. Harbin, China: Procedia Engineering, 2012: 37083712.
[7] 朱冠南.掃描圖像中的微小污點(diǎn)進(jìn)行識(shí)別和消除[EB/OL].\[20090619\].http://www.chinaqking.com/%D4%AD%B4%B4%D7%F7%C6%B7/2009/40400.html.
[8] 劉慧英,王小波.基于OpenCV的車輛輪廓檢測[J].科學(xué)技術(shù)與工程,2010,10(12):29872991.
[9] 劉海波,沈晶,郭聳.Visual C++ 數(shù)字圖像處理技術(shù)詳解[M].北京:機(jī)械工業(yè)出版社,2010.
[10] 佚名.輪廓長度與面積[EB/OL].\[20090220\].http://bbs.ednchina.com/BLOG_ARTICLE_200925.HM.
作者簡介: 宋文寧 女,1986年出生,碩士研究生。主要研究方向?yàn)闇y試計(jì)量技術(shù)及儀器。
李 東 男,1959年出生,教授。主要研究方向?yàn)闇y試計(jì)量技術(shù)及儀器。2012年11月15日第35卷第22期