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