李文龍,袁縱橫,孫 偉
(1.桂林電子科技大學(xué) 電子工程與自動化學(xué)院,廣西 桂林 541004;2.安徽品至信息科技有限公司,安徽 合肥 230031)
隨著印制電路板線路精細化、表面貼裝器件(Surface Mounted Devices,SMD)元件微型化、快速組裝技術(shù)等在表面組裝技術(shù)(Surface Mount Technology,SMT)中的使用,裝配印刷電路板(Printed Circuit Board +Assembly,PCBA)元器件密度增加,而微電子行業(yè)對PCBA板的要求越來越嚴(yán)格。為適應(yīng)現(xiàn)代SMT生產(chǎn)線上的檢測要求就必須對傳統(tǒng)人工光學(xué)檢測等方式革新。因此新型自動檢測技術(shù)有了飛躍式的發(fā)展,其中通電測試、自動X射線、自動光學(xué)檢測[1](Automatic Optical Inspection,AOI)等技術(shù)是最為常用的。其中AOI因其相對其他方法而言具有非接觸、速度快、效率高、成本低等優(yōu)點廣泛使用。PCBA檢測原理是將電路板(例如元器件、焊點等[2])捕捉成像,通過軟件綜合處理分析,判斷元件是否出現(xiàn)裝貼錯位、引腳焊錫不足等問題。而載板元器件的自動檢測的關(guān)鍵步驟之一就是PCBA圖像的定位問題[3]。要有效地對PCBA圖像進行總體和局部的檢測,首先需要有精確的mark點坐標(biāo),才可以進行[4]?;贏OI的PCBA檢測方法,基本都是采用雙圓心mark點定位的方法[5-6],多數(shù)算法基于Hough變換原理計算mark點坐標(biāo)。其改進方法也是基于Hough變換原理[7-9]的,利用圓的幾何特征[10]、或者基于幾何特征不變檢測[11]等方法改進。
綜合已有成果分析此問題:PCBA板過大整張拍攝圖像有些重要細節(jié)像素點過少無法識別,同時也會帶來光照不均(中間亮邊緣暗)[12]、邊緣模糊等問題[13];若獲取圖片再拼接可用原PCBA板上的mark參考點,但會浪費大量時間,且拼接處會帶來新的噪聲。針對上述問題提出解決辦法:對較大的PCBA板縮小相機視野分塊獲取圖像提高器件識別精度。
原方法是從興趣區(qū)域的第一個坐標(biāo)點開始讀取像素與模板進行匹配,直至遍歷所有像素[14]。這種方法也存在一些缺點:計算量大、耗時多,面對生產(chǎn)線的大批量產(chǎn)品檢測要求,迫切需要縮短每張圖像的檢測時間。因此在精度滿足要求的前提下減少程序時間開銷是很有意義的。
由于分塊獲取的圖像無法利用PCB設(shè)計者給定的參考定位點,故需要自行尋找一個標(biāo)定的坐標(biāo)點作為參考點,元器件為要檢測目標(biāo)不能作為mark參考點,PCBA板上的圓形、矩形等其他幾何形狀的錫點不是所有待處理照片都有。結(jié)合PCBA板自身特點和mark點特征,表面印刷的字符可作為參考點,而且每一個PCBA表面都存在唯一的字符,部分字符存在多個拐點包含較多的紋理特征。經(jīng)過實踐本項目最終選取PCBA板上的字符作為標(biāo)識符且字符唯一,使用模版與興趣區(qū)域匹配過程中可信度最高的坐標(biāo)點為mark參考點。
機械軸運動誤差和PCBA板擺放位置不確定性誤差,導(dǎo)致圖像的位移誤差可以在任意方向,由CCD相機獲取PCBA圖像每張圖像的邊緣不一致,如圖1所示。同時程序中mark點坐標(biāo)為一個固定值,不確定的誤差導(dǎo)致興趣區(qū)域包含的像素信息存在較大偏差。
圖1 現(xiàn)場采集到的圖片
由圖1可知,CCD相機獲得的圖像不完全一致(從圖中可以看到圖像邊緣相差較多),導(dǎo)致每張圖像mark點坐標(biāo)相同像素不同,這給定位帶來了困難。為了在每一張待處理圖像的興趣區(qū)域內(nèi)都能找到mark點,需要把興趣區(qū)域劃分得大一些,這就大幅增加了程序的計算時間開銷,這是導(dǎo)致mark點定位耗時過多的主要原因。
選用基于灰度值的模板匹配的方法,把模板看作矩陣A,將其轉(zhuǎn)換為行向量,記作向量a,將模板像素映射到興趣區(qū)域?qū)?yīng)的矩陣為B,同理記作向量b,應(yīng)用余弦夾角公式
(1)
當(dāng)cosθ=1意味著兩向量方向相同,相關(guān)運算產(chǎn)生最大響應(yīng)。在圖像中的匹配計算如式[15](2)所示。
(2)
其中,w(s,t)表示模板圖像中坐標(biāo)為(s,t)的像素值,f(x+s,y+t)表示興趣區(qū)域坐標(biāo)點為(x,y)與模板進行匹配過程中所遍歷的像素值。實際上計算的是向量a,b之間夾角余弦值。顯然,它只和圖案模式本身的形狀或紋理相關(guān),與幅值(亮度)無關(guān)。
根據(jù)相關(guān)理論,如果模版中的非零元素數(shù)目大于132(約13×13),則在頻域計算較劃算。考慮到本文模板像素數(shù)目遠大于132,選擇在頻域中實現(xiàn)相關(guān)能較好地提高計算效率,由傅里葉變換和卷積定理建立空間卷積和頻域乘積的關(guān)系[16]
(3)
其中,“o”表示相關(guān),“ * ”表示復(fù)共軛。將興趣區(qū)域的空域圖像轉(zhuǎn)換到頻域圖像得到F(u,v),將模板擴展到與興趣區(qū)域等像素數(shù)目進行頻域變換后再取頻譜的共軛得到H*(u,v)。相乘后變換回空域再取實部即可。
模板匹配算法耗時由計算量大小決定,經(jīng)分析計算耗時可表示為
(4)
N=(Rm-m)(Rn-n)
(5)
T=N×n1×ξ1
(6)
式(4)中,w1=(x1,x2,…,xn)表示模板像素灰度值;w2=(y1,y2,…,yn)表示由w1映射到興趣區(qū)域的像素值,nt表示匹配一次的計算次數(shù)。式(5)中m、n和Rm、Rn分別是模板、興趣區(qū)域長和寬的像素數(shù)目,N表示原方法匹配次數(shù)。式(6)中ξt表示時間系數(shù),其只和計算機本身硬件有關(guān),T表示一次完整的mark點計算用時。
觀察興趣區(qū)域圖像及其二值圖像發(fā)現(xiàn),要使T減小,只能令式(4)和式(5)減小,式(4)減小會導(dǎo)致匹配精度下降,在對匹配要求精度低時可以考慮,所以只能優(yōu)先考慮減小式(5)計算結(jié)果,即:減少在匹配過程中過多的匹配計算,且此方法可行。
N2=(Rm-m-a)(Rn-n-b)
(7)
其中,(a,b)為在原興趣區(qū)域計算得出的新匹配計算起點,其坐標(biāo)值為相對一次興趣區(qū)域坐標(biāo)值計算出的新坐標(biāo)值,N2表示需要匹配的次數(shù)。
由式(7)可以得出,只要能確定a,b值是大于0的正整數(shù)即可使N2減小,從而大幅降低mark點計算用時。具體思想為:在進行模板匹配前先用遍歷法在興趣區(qū)域搜索到模板的字母大概位置,以此位置為起點再次確定較小的興趣區(qū)域,能減少模板匹配次數(shù)提高程序的運行效率。分析二值圖像發(fā)現(xiàn):在遍歷法縮小范圍時遇到多個大于180(此項目中選取的像素為180)的像素點即可認為定位到與模板相似的位置點,考慮到光線、噪聲干擾等原因引入距離誤差補償值δ(x,y)增加算法的魯棒性。
坐標(biāo)系中A(i,j)表示興趣區(qū)域的第1行第1列的像素坐標(biāo),A(i1,j1)表示尋找到的最佳匹配度區(qū)域的第一行第一列的坐標(biāo)。由于CCD相機存在隨機噪聲等干擾,把最佳匹配點k(ix,jy)丟失的概率較大,而把次最佳點誤認為最佳點,引入誤差補償δ(x,y)對數(shù)據(jù)修正,最終確定二次選擇的興趣區(qū)域起始坐標(biāo)為A(i2,j2),且二次確定的興趣區(qū)域要小于初始興趣區(qū)域,即:可以減少在計算mark點過程中冗余的匹配運算。
計算mark點坐標(biāo)轉(zhuǎn)變在矩陣中快速求解某一特征的坐標(biāo)點。以CCD相機獲取的任意一張PCBA圖像的左上頂點坐標(biāo)作為原點建立直角坐標(biāo)系,并標(biāo)記為原點O,如圖2所示。
圖2 改進算法原理圖
在興趣區(qū)域T中以A(i,j)為起始位置尋找模板匹配度最佳位置坐標(biāo)為A(i1,j1),但是由于邊緣模糊、噪聲等帶來的誤差,可能使得尋找到的第一個像素大于180的坐標(biāo)點是誤差點的概率較大,如圖中k(ix,jy)點。為了使程序更加準(zhǔn)確運行引入誤差量,這樣就可以把最佳匹配點和誤差像素點都包含在二次興趣區(qū)域。誤差數(shù)學(xué)表達為
A2(i2,j2)=A1(i1,j1)+δ(i,j)
(8)
其中,δ(x,y)表示先驗誤差,補償后的坐標(biāo)為A(i2,j2)由具體PCBA圖像坐標(biāo)分析得到。新得出的坐標(biāo)之前的所有像素點不再進行匹配計算。
設(shè)改進方法找到的mark點坐標(biāo)為A(x,y),由于兩次在興趣區(qū)域內(nèi)計算起點坐標(biāo)均為(1,1),新方法計算得到的mark點坐標(biāo)表示為A(i,j)+δ(i,j)+A1(i1,u1)+A(x,y),化簡為A(i,j)+A2(i2,j2)+A(x,y)。驗證改進算法計算得到的mark點坐標(biāo)正確與否,用得到的坐標(biāo)值與原算法得到的坐標(biāo)值對比,坐標(biāo)一致說明改進算法正確,在得出mark點坐標(biāo)的同時記錄程序計算出坐標(biāo)點用時。改進算法的流程圖如圖3所示。
圖3 改進算法流程圖
本文處理圖像的軟件為MATLAB R2010b和Visual C++(2010),處理器為Intel(R) Core(TM)i3 CPU M380@2.53 GHz,RAM 4.0 GB,需要對數(shù)據(jù)進行對比分析時采用控制單一變量法。
工業(yè)現(xiàn)場環(huán)境中,光源強弱變換、隨機噪聲等干擾問題,需要對CCD相機實時拍攝到的圖像預(yù)處理,流程大致是:將采集的2 592×1 944像素BMP格式圖像轉(zhuǎn)換為灰度圖像,由精度要求適當(dāng)降維,使用3×3模板對圖像進行中值濾波。本文隨機選用PCBA板如圖4,記作A板。選用的匹配模板為圖5左上模板圖像(A)。
圖4 A板圖像
圖5 A板模板和其興趣區(qū)域
如圖5所示,興趣區(qū)域(a)、(b)、(c)為同一程序?qū)Χ鄰埓幚韴D像獲得的興趣區(qū)域,圖5下半部分為相應(yīng)灰度圖像的二值圖像。
在保證其他條件相同條件下,用原算法在頻域計算mark點坐標(biāo),同時記錄整個過程耗時;再用改進算法在頻域計算mark點坐標(biāo),同樣記錄整個過程耗時。分析50張A型號PCBA板圖像以兩種不同算法計算mark點的時間,并求出匹配平均用時,其中改進算法用時為兩部分匹配用時之和,一部分為粗定位用時,另一部分為精確定位用時,如表1所示。
表1 A板匹配平均用時
原算法計算坐標(biāo)值用時平均值為90 ms,改進算法計算坐標(biāo)值用時平均值為52 ms。改進算法匹配用時比原算法匹配用時減少約42%,改進算法顯著提高了mark點計算速度且計算得出的mark點數(shù)值與原方法計算出的坐標(biāo)值相同。
應(yīng)用上述原理和步驟選取另外一塊待檢測PCBA板,記作B板,驗證上述方法在計算效率、程序耗時和普遍適用性等方面優(yōu)點。B板由CCD相機拍攝圖像如圖6所示。
圖6 B板圖像
B板由程序直接計算獲得的興趣區(qū)域如圖7所示。
圖7 B板興趣區(qū)域和其二值圖像
B板在使用改進算法計算mark點定位時,應(yīng)考慮選取興趣區(qū)域過程中的非目標(biāo)像素干擾,如二值圖像中類似中括號的高亮點像素,應(yīng)在程序中濾除干擾。應(yīng)用同樣的方法和步驟分析50張圖像得出平均匹配用時,結(jié)果如表2所示。
表2 B板匹配平均用時
原方法頻域計算坐標(biāo)值平均用時為75 ms,改進算法計算的坐標(biāo)值平均用時為47 ms。應(yīng)用改進算法計算mark點坐標(biāo)平均速度提高約37%。相比原算法用時大幅減少。
原方法是對興趣區(qū)域全部匹配后計算出最相似位置來確定mark點,計算量取決于興趣區(qū)域的像素數(shù)量;改進方法是先進行粗略定位、誤差補償后重新獲得較小興趣區(qū)域,在二次興趣區(qū)域計算得到mark點,但整體耗時仍然比原方法降低了許多。
通過原算法、改進算法對2種PCBA圖像各50張獲取的坐標(biāo)值在二維坐標(biāo)中分布圖,如圖8所示。兩種方法得到的坐標(biāo)值一致,每種PCBA板的mark點不在同一點而是分布在一個小范圍區(qū)域,由于待檢測的PCBA板相對CCD相機有位移誤差導(dǎo)致,這是興趣區(qū)域選取較大的原因。證明應(yīng)用改進算法能較好解決此問題,具有較好的準(zhǔn)確性,能夠快速計算出mark點。但是擺放位置、機械軸運動等誤差過大,會出現(xiàn)匹配失敗情況,這要求擺放位置不能偏差過大,興趣區(qū)域劃分大小要合理,才能在最合理時間內(nèi)獲取正確的mark點坐標(biāo)。
圖8 坐標(biāo)值分布圖
本文研究表明:改進算法與原算法找到的參考點的坐標(biāo)是一致的,兩種方法得到的mark點坐標(biāo)值能進行互相驗證,進而驗證了改進后算法的正確性和方法具有一般性,且定位時間能節(jié)約40%左右。此方法需要在CCD相機獲取圖像時PCBA位置盡量擺放在標(biāo)準(zhǔn)位置,錯誤的位置可能引起補償值計算時出現(xiàn)負數(shù),得出錯誤的結(jié)果。因為位移誤差較大導(dǎo)致興趣區(qū)域內(nèi)不包含模板匹配需要的有效信息,或者含有大量干擾信息。在使用此方法時應(yīng)該確保所選擇的興趣區(qū)域含有較少干擾項,PCBA位移小于最大位移誤差,且興趣區(qū)域大小要合理才能確保mark點坐標(biāo)有效且耗時較少。