胡秀亮,高 志,葉健敏,王 濤
(華東理工大學(xué) 機械與動力工程學(xué)院,上海 200237)
我國是PCB生產(chǎn)大國,據(jù)世界電子電路理事會WECC各協(xié)會統(tǒng)計[1],2007年中國大陸PCB產(chǎn)值占全球總產(chǎn)值的27.9%,僅一年時間就比2006年增長了17.0%。但在我國PCB行業(yè)高速發(fā)展的同時,也面臨著巨大的挑戰(zhàn),那就是PCB質(zhì)量問題。在生產(chǎn)過程中任何一道工序甚至PCB上的任何1條線路出現(xiàn)問題都會導(dǎo)致整個PCB板的報廢。高廢品率提高了生產(chǎn)成本。如何及時發(fā)現(xiàn)并減少廢品率,是當(dāng)前所有PCB生產(chǎn)廠家的迫切需求。在當(dāng)前人工目測、在線測試等眾多檢測方法中,自動光學(xué)檢測 AOI(Automatic Optic Inspection)在成本、效率、可靠性等方面都顯示出獨特的優(yōu)勢。本文通過圖像處理技術(shù)開發(fā)了一套PCB缺陷自動檢測系統(tǒng)。本文主要介紹該系統(tǒng)的軟件實現(xiàn)部分。
圖1 系統(tǒng)的軟件處理流程
系統(tǒng)軟件組成如圖1所示。首先在同一個工作臺上拍攝PCB標(biāo)準(zhǔn)圖,這是為了盡量保持拍攝標(biāo)準(zhǔn)圖與待測圖具有相同的物距、焦距等,以減少圖像配準(zhǔn)的耗時以及盡量減少誤差,提高識別率。對標(biāo)準(zhǔn)圖進(jìn)行中值濾波以濾除噪聲平滑圖像,然后保存標(biāo)準(zhǔn)圖。檢測時打開被測圖,首先進(jìn)行濾除噪聲等預(yù)處理,然后通過定位圓進(jìn)行圖像配準(zhǔn);再做差影運算,通過閾值變換分離出差影特征。由于圖像配準(zhǔn)時不能完全做到像素一一對應(yīng)以及閾值分割得不完美,將引起閾值變換后的二值圖可能存在非缺陷部分。如果不能把這些部分去除,會造成誤檢。所以還需要進(jìn)行形態(tài)學(xué)的變換來濾除噪點。最后則對分離出來的缺陷目標(biāo)進(jìn)行幾何特征統(tǒng)計并得出結(jié)論。
圖像在形成、傳輸、接收和處理的過程中,不可避免地存在著外部和內(nèi)部干擾,如光電轉(zhuǎn)換過程中敏感元件靈敏度的不均勻性、數(shù)字化過程的量化噪聲、傳輸過程中的誤差以及人為因素等,都會引起噪聲[2]。目前去噪效果很理想的算法是中值濾波。中值濾波是一種非線性的信號處理方法,其原理如下:假設(shè)有1個一維序列f1,f2,f3,…,fn,取該窗口長度(點數(shù))為 m(m 為奇數(shù))。對該序列進(jìn)行中值濾波,即從序列中相繼抽取m個數(shù)fi-v,…,fi-1,fi,fi+1,…,fi+v,其中 fi為窗口的中心點值,v=(m-1)/2。再將這m個點值按其數(shù)值大小排序,取中間的那個數(shù)作為濾波輸出 ,用公式表示為 :yi=med{fi-v,… ,fi-1,fi,fi+1,…,fi+v},其中 i∈Z,v=(m-1)/2。 圖 2 所示為中值濾波前后圖片的對比效果。由此可見,中值濾波對濾除噪聲,保留特征信息具有比較理想的效果。
圖2 中值濾波效果圖
圖像的配準(zhǔn)是對取自不同時間、不同傳感器或者不同視角的同一場景的2幅圖像或者多幅圖像圖形匹配的過程。圖像配準(zhǔn)通常通過計算圖像的相似度來進(jìn)行,而圖像的相似度是通過計算相似性測度評價的。相似性測度又分為互相關(guān)相似性測度、基于傅里葉分析的測度以及序貫相似性檢測。其中互相關(guān)相似測度是最基本的相似性測度,其原理如下:假設(shè)有模板 T和搜索圖 S,Si,j表示模板覆蓋下的那塊搜索圖[3],其中i、j表示位置。則其互相關(guān)相似度為:
歸一化為:
2.3.1 匹配原理
本文對缺陷檢測采取差影法檢測,差影法檢測必須是待測圖與標(biāo)準(zhǔn)圖的像素基本對應(yīng)。所以差影法的核心就在于圖像的幾何匹配。待測圖與標(biāo)準(zhǔn)圖的匹配通常采用設(shè)置定位標(biāo)志來解決,也就是在PCB板對角線部位通過添加特定的圖形,定位時通過圖形在標(biāo)準(zhǔn)圖和目標(biāo)圖板上的幾何位置差異進(jìn)行縮放、平移和旋轉(zhuǎn)的幾何操作來實現(xiàn)待測圖與標(biāo)準(zhǔn)圖的像素一一對應(yīng)。幾何匹配的效果很大程度上取決于定位圖形位置尺寸的獲取[4]。通常定位圖形選用形狀規(guī)則的圓來進(jìn)行,不僅因為圓心坐標(biāo)具有很好的定位作用,還因為目前對于圓檢測的研究已經(jīng)相對比較成熟,比較容易檢測出圓的特征尺寸。
2.3.2 圓的檢測
對于圓的檢測目前絕大多數(shù)是通過Hough變換來進(jìn)行。Hough變換是利用圖像空間與參數(shù)空間的對應(yīng)關(guān)系,將圖像控件的檢測問題轉(zhuǎn)化到參數(shù)空間,通過參數(shù)空間進(jìn)行簡單的累加統(tǒng)計來完成檢測任務(wù)。Hough變換的圓形檢測原理其圓的方程表示為:
在參數(shù)空間建立 1個三維的累加數(shù)組 A(a,b,r),計算出每 1個三元組(a,b,r),并對 A累加:
圖3 Hough變換的參數(shù)空間
如果半徑r固定,則參數(shù)空間與圖像空間的對應(yīng)如圖3所示。黑色部分對應(yīng)圖像空間中的圓周上的點,而圓周則為可能的圓心位置。因此,在圖像空間中共圓的點在參數(shù)空間中對應(yīng)同一個點,即圖像空間中的點對應(yīng)參數(shù)空間中的圓,參數(shù)空間中的點對應(yīng)圖像空間中的圓。算法的實現(xiàn)也正是利用了這種特性。
如果直接通過這種方法進(jìn)行圓檢測,由于需要對整幅圖的像素進(jìn)行逐點運算并判斷,會占用很多系統(tǒng)時間,因此速度上無法滿足實時性的需求?;贖ough變換的圓檢測方法[5]通過先對圖像進(jìn)行灰度化、去噪、邊緣檢測以及形態(tài)學(xué)運算等預(yù)處理,再通過使用多維數(shù)組代替循環(huán)計算進(jìn)行Hough變換,可以大大提高檢測速度與準(zhǔn)確率。
此外,Intel公司的視覺擴展庫OpenCV也有Hough圓檢測的函數(shù)HoughCircles。該函數(shù)檢測圓的速度非???,但是檢測圓的效果對設(shè)定的參數(shù)過于依賴,需要多次設(shè)置手動尋找最佳參數(shù)值,而且效果還是不夠理想。圖4是通過OpenCV和改進(jìn)的Hough變換檢測圓的效果對比圖。
施工場地狹小,四周全是高大建筑物,基坑南側(cè)距大同市古城墻14 m,西側(cè)距3座磚混結(jié)構(gòu)的住宅樓15 m,東側(cè)距兩座磚混結(jié)構(gòu)住宅樓20 m,北側(cè)距雁同東路30 m。
圖4 檢測圓效果對比
2.3.2 圖像的幾何變換
圖5所示為 PCB板定位圓的位置,其中 A(x1,y1)、B(x2,y2)分別為2個定位圓的圓心坐標(biāo)。由于標(biāo)準(zhǔn)板上和待測板上都有定位圓,因此待測圖因攝像頭畸變或者工作臺振動而產(chǎn)生的偏差可以通過A、B坐標(biāo)的偏差對待測圖進(jìn)行幾何變換進(jìn)行調(diào)整,調(diào)整步驟為:
(1)計算出待測圖定位圓心的水平偏角θAB和標(biāo)準(zhǔn)圖的θ′AB。 如果θAB≠θ′AB,則對待測圖進(jìn)行旋轉(zhuǎn)變換。 旋轉(zhuǎn)角度為θAB―θ′AB(順時針方向為正)。
(2)計算出待測圖定位圓心的距離LAB和標(biāo)準(zhǔn)圖的L′AB,如果 LAB≠L′AB,則對待測圖進(jìn)行縮放變換。 縮放倍數(shù)為 n=L′AB/LAB(n>1 表示縮放)。
(3)計算出待測圖2個定位圓心線段的中點坐標(biāo)經(jīng)過(1)、(2)兩步運算后的坐標(biāo) D。將 D與標(biāo)準(zhǔn)圖的 D′進(jìn)行比較,如果不相等,則 X方向平移 Dx′-Dx,Y方向平移Dy′-Dy(屏幕左上角為原點,X軸正方向朝右,Y軸正方向朝下)。
圖5 定位圓
幾何配準(zhǔn)對標(biāo)準(zhǔn)圖和待測圖做差運算,得到的差影圖如圖6(a)所示,此圖并非二值圖,為了對缺陷進(jìn)行統(tǒng)計識別,需要通過閾值分割將其轉(zhuǎn)化為二值圖。圖像分割的方法可分為固定閾值分割和自動閾值分割。固定閾值分割是通過一個確定的或者人為操作時選定的閾值進(jìn)行二值化的方法。由于該法很不靈活且不具有自動性,所以本文主要討論自動閾值分割,通過搜索直方圖的方法來選取全局閾值進(jìn)行分割。該類方法主要有:雙峰法、最大內(nèi)間方差閾值(OSTU)法、P_tittle閾值分割法、最大熵法等。本文使用最大內(nèi)間方差閾值(OSTU)法[5]。該法基本思想是:最佳閾值應(yīng)當(dāng)使得不同類之間的可分離性最大。把待處理圖像的直方圖在某一閾值與支出分割為2組,當(dāng)被分割成2組的間方差最大時,決定閾值。OSTU分割后的圖像如圖6(b)所示。
圖6 差影運算與閾值分割效果
圖7 形態(tài)學(xué)運算后
由于配準(zhǔn)過程存在的誤差以及圖片本身的微小畸變?nèi)毕?,所以差影運算后的圖像會有無法消去的非缺陷部分。如圖7所示,其灰度值和缺陷部分灰度值相差不大,閾值分割后也必然存在這部分噪點,如果不把這些部分消除掉,會造成誤檢。通過形態(tài)學(xué)變換可以消除這些噪點。
形態(tài)學(xué)又稱數(shù)學(xué)形態(tài)學(xué)[6],是一種分析幾何形狀的數(shù)學(xué)方法,是建立在集合代數(shù)基礎(chǔ)上的,用集合論方法定量描述集合結(jié)構(gòu)的科學(xué)。最基本的形態(tài)學(xué)運算子有:腐蝕(Erosion)、膨脹(Delation)、開(Opening)和閉(Closing)。 由于需要濾除噪點,本文使用了腐蝕和開運算。
對于1個給定的目標(biāo)圖像X和1個結(jié)構(gòu)元素S,如果S在圖像上移動,在每1個當(dāng)前位置 x,S[x]只要3種可能的狀態(tài) :S[x]?X、S[x]?Xc、S[x]∩X 與 S[x]∩Xc 均不為空。其中滿足S[x]?X的點x的全體構(gòu)成結(jié)構(gòu)元素與圖像的最大相關(guān)點集,則稱這個點集為S對X的腐蝕,記為 X?S。用集合的方式定義為:X?S={x|S[x]?X}。腐蝕的作用是消除物體邊界點,可以把小于結(jié)構(gòu)元素的物體去掉,選取不同大小的結(jié)構(gòu)元素,就可以去掉不同大小的物體。
腐蝕可以看作是將圖像X中每1個結(jié)構(gòu)元素S全等的 S[x]收縮為點x。反之,將 X中的每1個點X擴大為S[x]。這就是膨脹運算,用集合方式定義為:X?S={x|S[x]∩x≠0}。與腐蝕相反,膨脹運算的作用是把圖像周圍的背景點合并到物體中。
開運算和閉運算是在腐蝕和膨脹的基礎(chǔ)上定義的。開運算就是對圖像先進(jìn)行腐蝕運算再進(jìn)行膨脹運算。而閉運算是對圖像先進(jìn)行膨脹運算再進(jìn)行腐蝕運算。
通過這4種形態(tài)學(xué)算子的組合可以對圖像進(jìn)行包括圖像分割、特征抽取、邊緣檢測、圖像濾波、圖像增強和恢復(fù)等操作。圖7是對閾值分割后的圖進(jìn)行1次腐蝕運算和1次開運算后的結(jié)果。留下來的4處正是目標(biāo)電路板上缺陷位置的二值圖。
圖8 檢測結(jié)果顯示
最終檢測結(jié)果通過連通區(qū)域像素標(biāo)記法對缺陷對象進(jìn)行查找和標(biāo)記。而連通區(qū)域像素標(biāo)記采用八連通判別算法,對二值圖進(jìn)行從左向右、從上至下進(jìn)行掃描,標(biāo)記當(dāng)前正被掃描的黑像素需要檢查它之前掃描到得的4個近鄰像素(包含正上、左上、右上、正前方 4個方位已經(jīng)被處理過的像素)的值。若該4點均為背景點,則該點加新標(biāo)記;若其中1點已加標(biāo)記,則該點加以相同標(biāo)記;若4點中有2個以上已加標(biāo)記,則以左前點或右上點為準(zhǔn)。標(biāo)記后可掃描取得每個點的像素值即標(biāo)號,統(tǒng)計相同標(biāo)號個數(shù)獲得各缺陷目標(biāo)的面積,統(tǒng)計不同標(biāo)號個數(shù)得到缺陷目標(biāo)數(shù)目。通過該方法可以有效檢測出二值圖中缺陷的個數(shù)以及每個缺陷的面積。如圖8所示,可以檢測出短路、斷路、突起、針眼等缺陷,并通過圖像輸出直觀地展示給操作員。
本文采用圖像處理技術(shù)和VC開發(fā)了一套電路板缺陷檢測系統(tǒng)。介紹了本系統(tǒng)的主要組成部分,重點介紹了檢測過程中的預(yù)處理、幾何匹配,以及差影檢測后的處理算法。由于大部分都是采用優(yōu)化后的改進(jìn)算法,使其系統(tǒng)運行速度可以滿足實時性的需求,而且可以檢測出大部分的缺陷并以圖形的方式直觀地顯示。實踐證明了該系統(tǒng)具有較強的實用性。
[1]楊宏強.全球 PCB產(chǎn)業(yè)發(fā)展近況[J].印刷電路信息,2008(12):9-16.
[2]楊淑瑩.VC++圖像處理程序設(shè)計[M].北京:清華大學(xué)出版社,2003.
[3]楊順遼,蘇明,鐘立,等.基于圖像處理的印制電路板缺陷自動檢測[J].計算機測量與控制,2007,15(5):591-592.
[4]張利.PCB板檢測中的定位研究[J].中國圖像圖形學(xué)報,1999(8):659-662.
[5]O’GOMAN L.Binarization and multithresholding of document images using connectivity[J].CVGIP, 1994, 56(6):494-506.
[6]何斌,馬天予,王云堅,等.Visual C++數(shù)字圖像處理(第二版)[M].北京:人民郵電出版社,2002.