胡秀亮,高 志,葉健敏,王 濤
(華東理工大學 機械與動力工程學院,上海 200237)
我國是PCB生產大國,據世界電子電路理事會WECC各協會統計[1],2007年中國大陸PCB產值占全球總產值的27.9%,僅一年時間就比2006年增長了17.0%。但在我國PCB行業高速發展的同時,也面臨著巨大的挑戰,那就是PCB質量問題。在生產過程中任何一道工序甚至PCB上的任何1條線路出現問題都會導致整個PCB板的報廢。高廢品率提高了生產成本。如何及時發現并減少廢品率,是當前所有PCB生產廠家的迫切需求。在當前人工目測、在線測試等眾多檢測方法中,自動光學檢測 AOI(Automatic Optic Inspection)在成本、效率、可靠性等方面都顯示出獨特的優勢。本文通過圖像處理技術開發了一套PCB缺陷自動檢測系統。本文主要介紹該系統的軟件實現部分。

圖1 系統的軟件處理流程
系統軟件組成如圖1所示。首先在同一個工作臺上拍攝PCB標準圖,這是為了盡量保持拍攝標準圖與待測圖具有相同的物距、焦距等,以減少圖像配準的耗時以及盡量減少誤差,提高識別率。對標準圖進行中值濾波以濾除噪聲平滑圖像,然后保存標準圖。檢測時打開被測圖,首先進行濾除噪聲等預處理,然后通過定位圓進行圖像配準;再做差影運算,通過閾值變換分離出差影特征。由于圖像配準時不能完全做到像素一一對應以及閾值分割得不完美,將引起閾值變換后的二值圖可能存在非缺陷部分。如果不能把這些部分去除,會造成誤檢。所以還需要進行形態學的變換來濾除噪點。最后則對分離出來的缺陷目標進行幾何特征統計并得出結論。
圖像在形成、傳輸、接收和處理的過程中,不可避免地存在著外部和內部干擾,如光電轉換過程中敏感元件靈敏度的不均勻性、數字化過程的量化噪聲、傳輸過程中的誤差以及人為因素等,都會引起噪聲[2]。目前去噪效果很理想的算法是中值濾波。中值濾波是一種非線性的信號處理方法,其原理如下:假設有1個一維序列f1,f2,f3,…,fn,取該窗口長度(點數)為 m(m 為奇數)。對該序列進行中值濾波,即從序列中相繼抽取m個數fi-v,…,fi-1,fi,fi+1,…,fi+v,其中 fi為窗口的中心點值,v=(m-1)/2。再將這m個點值按其數值大小排序,取中間的那個數作為濾波輸出 ,用公式表示為 :yi=med{fi-v,… ,fi-1,fi,fi+1,…,fi+v},其中 i∈Z,v=(m-1)/2。 圖 2 所示為中值濾波前后圖片的對比效果。由此可見,中值濾波對濾除噪聲,保留特征信息具有比較理想的效果。

圖2 中值濾波效果圖
圖像的配準是對取自不同時間、不同傳感器或者不同視角的同一場景的2幅圖像或者多幅圖像圖形匹配的過程。圖像配準通常通過計算圖像的相似度來進行,而圖像的相似度是通過計算相似性測度評價的。相似性測度又分為互相關相似性測度、基于傅里葉分析的測度以及序貫相似性檢測。其中互相關相似測度是最基本的相似性測度,其原理如下:假設有模板 T和搜索圖 S,Si,j表示模板覆蓋下的那塊搜索圖[3],其中i、j表示位置。則其互相關相似度為:

歸一化為:

2.3.1 匹配原理
本文對缺陷檢測采取差影法檢測,差影法檢測必須是待測圖與標準圖的像素基本對應。所以差影法的核心就在于圖像的幾何匹配。待測圖與標準圖的匹配通常采用設置定位標志來解決,也就是在PCB板對角線部位通過添加特定的圖形,定位時通過圖形在標準圖和目標圖板上的幾何位置差異進行縮放、平移和旋轉的幾何操作來實現待測圖與標準圖的像素一一對應。幾何匹配的效果很大程度上取決于定位圖形位置尺寸的獲取[4]。通常定位圖形選用形狀規則的圓來進行,不僅因為圓心坐標具有很好的定位作用,還因為目前對于圓檢測的研究已經相對比較成熟,比較容易檢測出圓的特征尺寸。
2.3.2 圓的檢測
對于圓的檢測目前絕大多數是通過Hough變換來進行。Hough變換是利用圖像空間與參數空間的對應關系,將圖像控件的檢測問題轉化到參數空間,通過參數空間進行簡單的累加統計來完成檢測任務。Hough變換的圓形檢測原理其圓的方程表示為:

在參數空間建立 1個三維的累加數組 A(a,b,r),計算出每 1個三元組(a,b,r),并對 A累加:


圖3 Hough變換的參數空間
如果半徑r固定,則參數空間與圖像空間的對應如圖3所示。黑色部分對應圖像空間中的圓周上的點,而圓周則為可能的圓心位置。因此,在圖像空間中共圓的點在參數空間中對應同一個點,即圖像空間中的點對應參數空間中的圓,參數空間中的點對應圖像空間中的圓。算法的實現也正是利用了這種特性。
如果直接通過這種方法進行圓檢測,由于需要對整幅圖的像素進行逐點運算并判斷,會占用很多系統時間,因此速度上無法滿足實時性的需求。基于Hough變換的圓檢測方法[5]通過先對圖像進行灰度化、去噪、邊緣檢測以及形態學運算等預處理,再通過使用多維數組代替循環計算進行Hough變換,可以大大提高檢測速度與準確率。
此外,Intel公司的視覺擴展庫OpenCV也有Hough圓檢測的函數HoughCircles。該函數檢測圓的速度非常快,但是檢測圓的效果對設定的參數過于依賴,需要多次設置手動尋找最佳參數值,而且效果還是不夠理想。圖4是通過OpenCV和改進的Hough變換檢測圓的效果對比圖。
施工場地狹小,四周全是高大建筑物,基坑南側距大同市古城墻14 m,西側距3座磚混結構的住宅樓15 m,東側距兩座磚混結構住宅樓20 m,北側距雁同東路30 m。

圖4 檢測圓效果對比
2.3.2 圖像的幾何變換
圖5所示為 PCB板定位圓的位置,其中 A(x1,y1)、B(x2,y2)分別為2個定位圓的圓心坐標。由于標準板上和待測板上都有定位圓,因此待測圖因攝像頭畸變或者工作臺振動而產生的偏差可以通過A、B坐標的偏差對待測圖進行幾何變換進行調整,調整步驟為:
(1)計算出待測圖定位圓心的水平偏角θAB和標準圖的θ′AB。 如果θAB≠θ′AB,則對待測圖進行旋轉變換。 旋轉角度為θAB―θ′AB(順時針方向為正)。
(2)計算出待測圖定位圓心的距離LAB和標準圖的L′AB,如果 LAB≠L′AB,則對待測圖進行縮放變換。 縮放倍數為 n=L′AB/LAB(n>1 表示縮放)。
(3)計算出待測圖2個定位圓心線段的中點坐標經過(1)、(2)兩步運算后的坐標 D。將 D與標準圖的 D′進行比較,如果不相等,則 X方向平移 Dx′-Dx,Y方向平移Dy′-Dy(屏幕左上角為原點,X軸正方向朝右,Y軸正方向朝下)。

圖5 定位圓
幾何配準對標準圖和待測圖做差運算,得到的差影圖如圖6(a)所示,此圖并非二值圖,為了對缺陷進行統計識別,需要通過閾值分割將其轉化為二值圖。圖像分割的方法可分為固定閾值分割和自動閾值分割。固定閾值分割是通過一個確定的或者人為操作時選定的閾值進行二值化的方法。由于該法很不靈活且不具有自動性,所以本文主要討論自動閾值分割,通過搜索直方圖的方法來選取全局閾值進行分割。該類方法主要有:雙峰法、最大內間方差閾值(OSTU)法、P_tittle閾值分割法、最大熵法等。本文使用最大內間方差閾值(OSTU)法[5]。該法基本思想是:最佳閾值應當使得不同類之間的可分離性最大。把待處理圖像的直方圖在某一閾值與支出分割為2組,當被分割成2組的間方差最大時,決定閾值。OSTU分割后的圖像如圖6(b)所示。

圖6 差影運算與閾值分割效果

圖7 形態學運算后
由于配準過程存在的誤差以及圖片本身的微小畸變缺陷,所以差影運算后的圖像會有無法消去的非缺陷部分。如圖7所示,其灰度值和缺陷部分灰度值相差不大,閾值分割后也必然存在這部分噪點,如果不把這些部分消除掉,會造成誤檢。通過形態學變換可以消除這些噪點。
形態學又稱數學形態學[6],是一種分析幾何形狀的數學方法,是建立在集合代數基礎上的,用集合論方法定量描述集合結構的科學。最基本的形態學運算子有:腐蝕(Erosion)、膨脹(Delation)、開(Opening)和閉(Closing)。 由于需要濾除噪點,本文使用了腐蝕和開運算。
對于1個給定的目標圖像X和1個結構元素S,如果S在圖像上移動,在每1個當前位置 x,S[x]只要3種可能的狀態 :S[x]?X、S[x]?Xc、S[x]∩X 與 S[x]∩Xc 均不為空。其中滿足S[x]?X的點x的全體構成結構元素與圖像的最大相關點集,則稱這個點集為S對X的腐蝕,記為 X?S。用集合的方式定義為:X?S={x|S[x]?X}。腐蝕的作用是消除物體邊界點,可以把小于結構元素的物體去掉,選取不同大小的結構元素,就可以去掉不同大小的物體。
腐蝕可以看作是將圖像X中每1個結構元素S全等的 S[x]收縮為點x。反之,將 X中的每1個點X擴大為S[x]。這就是膨脹運算,用集合方式定義為:X?S={x|S[x]∩x≠0}。與腐蝕相反,膨脹運算的作用是把圖像周圍的背景點合并到物體中。
開運算和閉運算是在腐蝕和膨脹的基礎上定義的。開運算就是對圖像先進行腐蝕運算再進行膨脹運算。而閉運算是對圖像先進行膨脹運算再進行腐蝕運算。
通過這4種形態學算子的組合可以對圖像進行包括圖像分割、特征抽取、邊緣檢測、圖像濾波、圖像增強和恢復等操作。圖7是對閾值分割后的圖進行1次腐蝕運算和1次開運算后的結果。留下來的4處正是目標電路板上缺陷位置的二值圖。

圖8 檢測結果顯示
最終檢測結果通過連通區域像素標記法對缺陷對象進行查找和標記。而連通區域像素標記采用八連通判別算法,對二值圖進行從左向右、從上至下進行掃描,標記當前正被掃描的黑像素需要檢查它之前掃描到得的4個近鄰像素(包含正上、左上、右上、正前方 4個方位已經被處理過的像素)的值。若該4點均為背景點,則該點加新標記;若其中1點已加標記,則該點加以相同標記;若4點中有2個以上已加標記,則以左前點或右上點為準。標記后可掃描取得每個點的像素值即標號,統計相同標號個數獲得各缺陷目標的面積,統計不同標號個數得到缺陷目標數目。通過該方法可以有效檢測出二值圖中缺陷的個數以及每個缺陷的面積。如圖8所示,可以檢測出短路、斷路、突起、針眼等缺陷,并通過圖像輸出直觀地展示給操作員。
本文采用圖像處理技術和VC開發了一套電路板缺陷檢測系統。介紹了本系統的主要組成部分,重點介紹了檢測過程中的預處理、幾何匹配,以及差影檢測后的處理算法。由于大部分都是采用優化后的改進算法,使其系統運行速度可以滿足實時性的需求,而且可以檢測出大部分的缺陷并以圖形的方式直觀地顯示。實踐證明了該系統具有較強的實用性。
[1]楊宏強.全球 PCB產業發展近況[J].印刷電路信息,2008(12):9-16.
[2]楊淑瑩.VC++圖像處理程序設計[M].北京:清華大學出版社,2003.
[3]楊順遼,蘇明,鐘立,等.基于圖像處理的印制電路板缺陷自動檢測[J].計算機測量與控制,2007,15(5):591-592.
[4]張利.PCB板檢測中的定位研究[J].中國圖像圖形學報,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++數字圖像處理(第二版)[M].北京:人民郵電出版社,2002.