程德強,李 碩,薛 陽,黃成華
(1.中國礦業大學信息與電氣工程學院,江蘇 徐州 221008;2.安徽省皖北煤電集團有限責任公司,安徽 宿州 234000)
責任編輯:魏雨博
隨著PCB行業朝著超薄型、高密度、細間距、低缺陷等方向發展,傳統的PCB缺陷人工目檢方式已遠遠不能滿足實際生產的需求,自動光學檢測技術被大量的使用[1]。自動光學檢測(AOI,Automatic Optical Inspection)是指通過光學成像的方法獲得被測對象的圖像,經過特定處理算法處理及分析,與標準模板圖像進行比較,獲得被測對象缺陷的一種檢測方法[2]。在電路印刷板的定位和電子元件組裝的過程中,識別和精確計算Mark點的位置至關重要。Mark點也叫基準點,為裝配工藝中的所有步驟提供共同的可測量點[3],保證了裝配使用的每個設備能精確地定位電路圖案,如圖1所示。

圖1 Mark點及其在PCB板中的位置
國內外對圓的識別及定位已做了許多研究,在所研究的AOI設備(在線式MF-830IL)原有程序中通過計算圖像對比后截取的圖像中心來替代Mark的圓心,受人工因素干擾大。文獻[4-5]提及了基于Hough變換的圓檢測方法,在圖片較小的情況下效果較好。結合之前的先進思想并對不足之處加以改進,本文提出了利用Otsu算法計算閾值并用改進的Hough變換計算計算圓心坐標的方法,結果表明,該方法可以減少大量的計算負擔,同時快速精確地識別并定位圓心。
圖像的二值化需要特定的閾值(Threshold),閾值是把目標和背景區分開的標尺[6],選取適當的閾值就是既要盡可能保存圖像信息,又要盡可能減少背景和噪聲的干擾。根據Mark點的圖像特征,圖像主要分為Mark點及背景PCB板兩部分,它的灰度直方圖呈現明顯的雙峰狀。選取雙峰之間的谷底所對應的灰度級作為閾值分割會得到理想的二值化結果,本文使用Delphi7作為編譯工具,通過多種計算閾值的方法進行分析。
手動動態調節閾值實現圖像的二值化可動態觀察其分割圖像的具體結果。首先讀取圖像每一點的灰度值,利用Delphi7軟件中的Trackbar控件(兩端的值設為0和255)實現閾值調節。每次調節后讀取Trackbar控件滑塊的位置Trckbar.Position作為閾值。
由于圖片灰度平均值應處于Mark點及背景這兩部分灰度之間,故將圖像上每一點的灰度累加,除以總點數得到整幅圖像的平均灰度,以此平均值作為閾值將Mark點及背景區分開來,可以通過下面的方法將其轉換為灰度

式中:R、G、B為每個像素的紅、綠、藍色值。
Otsu算法原理是把圖像直方圖用某一灰度值分割成兩類,分別計算這兩類的像素點數和灰度平均值,然后計算它們的類間方差[7]。當被分割成的兩類類間方差最大時,此灰度值就作為圖像二值化處理的閾值。
記t為前景與背景的分割閾值,前景點數占圖像比例為w0,平均灰度為u0;背景點數占圖像比例為w1,平均灰度為u1,則圖像的總平均灰度為

前景和背景的方差為

當方差u3最大時,可以認為此時前景和背景差異最大,此時的灰度t就是最佳閾值。
圖像灰度化處理后,可將灰度圖像的像素分成大于閾值的像素群和小于閾值的像素群兩部分。例如輸人灰度圖像函數為f(x,y),輸出二值圖像函數為g(x,y),則

本程序二值化算法如下:
1)掃描圖片每個點;
2)計算每一點的灰度值;
3)灰度大于閾值的點染為白色,灰度小于閾值的點染為黑色。
為方便進行圓心計算,需要對二值化后的圖像進行輪廓提取,二值圖像輪廓提取的算法原理非常簡單,就是掏空內部點:如果原圖中有一點為黑,且它的8個相臨點都是黑色時,則將該黑點刪掉。二值化和輪廓提取后的效果如圖2所示。

圖2 圖像處理結果
AOI設備原有的程序利用第三方控件eVision中的函數庫進行圖像對比。首先制作好Mark圖像標準,定位時利用圖像對比尋找新的Mark圖像(包括Mark點與鄰近背景的方形區域),計算圖像的中心點并返回中心點位置。使用到的EMatch庫中的函數有:
LearnPattern:準備了隨后的匹配操作的模板。模板圖像保存到匹配結束。
Match:準備需要匹配的圖像。
GetPosition:返回的對象包含圖像的的中心位置坐標。
這是改進的算法之一。思路是:首先在圓內找到一點,接著從該點出發,向上、下、左、右檢測到圓的邊緣四點,以左右兩點橫坐標的平均值作為圓心的橫坐標,同樣,以上下兩點縱坐標的平均值作為圓心的縱坐標。
此方法的關鍵在于確定Mark的邊緣。基于圖像特點,在圓的邊緣兩側有較大灰度差值,而圓形Mark及背景區域內部整體灰度差別不大,因此將兩側有較大灰度差值的點判定為圓的邊緣。以檢測左邊緣為例,選取一點,將該點兩側兩個像素的灰度差與該店左右第二個像素的灰度差相加,得到總的灰度差,從圓心向左依次選取多個點,計算他們各自兩側的灰度差值,從中選取差值最大的點作為圓的左邊緣。
4.3.1 算法思路
Hough變換于1962年由Paul Hough提出,它所實現的是一種從圖像空間到參數空間的映射關系[8]。Hough變換利用圖像空間和Hough參數空間的點—線對偶性,把圖像空間中的檢測問題轉換到參數空間。通過在參數空間里進行簡單的累加統計,然后在Hough參數空間尋找累加器峰值的方法檢測圖形,如圖3所示。

圖3 Hough變換原理
如圖4所示,首先掃描輪廓提取后的Mark圖像,檢測到輪廓線時,以該點為圓心畫圓,直徑從0依次增大到Mark圖像寬與高之間的較小值。設定三維數組circle[a,b,r],記錄每次畫圓的痕跡。其中(a,b)為圓上某點的坐標,r為圓的半徑。對參數空間量化后中的每個(a,b),考慮圖像空間中每個邊界像素點(x,y),代入圓的方程,若(x-a)2+(y-b)2=r2成立,則相應的累加器circle[a,b,r]加1 ,最后比較數組 circle[a,b,r]中的數值,選出最大的數,并記錄對應的(a,b,r),則(a,b)為待檢測圓的圓心,r為檢測出圓的半徑。

圖4 Hough變換計算圓心流程
4.3.2 算法改進
在校正Mark點時,因搜索Mark會在原圖像的基礎上擴大搜索范圍,閾值的計算時間隨著檢測圖形的增大會大大加長,因此對Hough變換進行了改進。
在邊緣選取一點,計算該點到ROI(通過圖像對比所截取的Mark圖像)中心的角度,由于圓心與ROI中心接近,故將搜索范圍以該角度為基準范圍擴展20°,從而當檢測到輪廓線時,只需在圓心方向畫20°的圓弧,并對圓弧上點的位置加以統計。理論上改進后速度可以提升360/20=18倍。同時將圖片掃描搜索范圍改為自動設為加載圖片的寬與高,以滿足不同Mark檢測的要求。
主要語句如下:

不同方法計算的閾值二值化后效果如圖5所示。

圖5 不同方法計算出的閾值效果
觀察多種算法求閾值后的效果及計算速度,如表1所示,比較結果可以發現:
1)手動調節閾值直觀明顯,可處理污染嚴重及有缺損的Mark點,錯誤少,二值化效果好,缺點是速度慢。
2)利用平均灰度計算閾值計算方法簡單,運行速度快,但當Mark與背景顏色差別不明顯或存在塊狀大片污染時,易出錯誤。
3)利用Otsu算法計算準確,二值化效果好,只是計算較復雜,對運行速度有影響。

表1 閾值三種算法測試比較結果
不同方法計算的閾值二值化后效果如圖6所示。

圖6 圓心算法效果對比
比較三種圓心定位方法,可以得到以下結論:
1)圖像對比計算圖片中心:運行速度快,在Mark點清晰完整的情況下檢測結果較為準確,Mark可選取任意圖形。缺點是受操作人員的影響嚴重,每次設定Mark會出現不同程度的偏差。
2)四點確定圓心:受操作員選取Mark范圍影響小,Mark可為圓、方形等形狀。缺點是受Mark輪廓和污染程度限制較大。
3)Hough變換檢測圓心:改進后的算法繼承了Hough變換精度高、抗噪能力強的優點,速度明顯提高,可滿足測試需求。
本文提出一種新型的圖像處理算法來計算圓形Mark的準確坐標。其良好的性能取決于兩個策略:1)Otsu算法計算閾值,考慮到實際因素,由于Mark點常會受到不同程度的污染,圖像存在一定的噪聲等干擾因素,Otsu算法有著較強的抗干擾能力,在AOI系統應用中不失為較好的選擇。2)改進的Hough變換,Hough變換計算圓心精度高、抗噪能力強,但其存在計算量大、占用內存多等缺陷,鑒于Mark圖像實際尺寸不大,且改進的算法可降低計算復雜度,明顯提升運算速度,可以滿足應用要求,該方法適合機器視覺中圓形PCB Mark的檢測。
[1]李欽,張憲民,鄺泳聰,等.AOI設備運動控制系統的研究[J].機電工程技術,2008,37(5):43-108.
[2]季秀霞.基于多特征的PCB缺陷識別算法研究[J].理論與研究,2007(3):1-3.
[3]陳克勇,王輔明.工業光學檢測中定位點的識別[J].計算機應用,2007(6):432-433.
[4]王敏,李啟堂,丁書斌.單參數Hough變換實現圓檢測方法的研究[J].機械設計與制造,2007(7):61-63.
[5]王林,練秋生.虹膜定位算法研究[J].電視技術,2006,30(7):77-79.
[6]高永英,張麗,吳國威.一種基于灰度期望值的圖像二值化算法[J].中國圖象圖形學報,1999(6):524-528.
[7]陳琪,熊博蒞,陸軍,等.改進的二維Otsu圖像分割方法及其快速實現[J].電子與信息學報,2010(5):1101-1104.
[8]萬發平,劉志,張兆楊.基于Hough變換的散焦模糊圖像復原方法[J].電視技術,2010,34(10):29-31.