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