高磊,郎加云
(安徽文達信息工程學(xué)院,安徽合肥 231201)
如今,由于集成電路工藝突飛猛進的發(fā)展,電子元件變得更加微小化、片式化、輕量化,主流的電路板焊接方式也變?yōu)榱速N片式。隨著PCB 制作技術(shù)的逐漸發(fā)展,印制電路板上的元器件越來越多,結(jié)構(gòu)越來越復(fù)雜。在電路板制造工業(yè)中,應(yīng)用機器視覺替代傳統(tǒng)的人工檢測已成趨勢[1]。機器視覺與圖像處理技術(shù)的融合,在檢測強度與速度、標(biāo)準(zhǔn)規(guī)范程度上都具有很大的優(yōu)勢。
實際中,工業(yè)生產(chǎn)制造電路板時有可能產(chǎn)生復(fù)雜多樣的缺陷,國際電聯(lián)協(xié)會將電路缺陷分為了不同的種類,例如:短路、斷路、凸起、凹陷等[2]。在用圖像處理方法檢測PCB 缺陷時,本文發(fā)現(xiàn),進行輪廓對比時會出現(xiàn)偽缺陷,本文主要工作為剔除PCB缺陷檢測時的偽缺陷。
針對傳統(tǒng)PCB 檢測方法高成本、低效率問題,本文提出一種以機器視覺為基礎(chǔ)的PCB缺陷檢測方法,使用數(shù)字圖像處理相關(guān)算法,通過對比待測圖像和標(biāo)準(zhǔn)圖像,針對PCB 板缺陷檢測中真?zhèn)稳毕莸淖R別問題,本文提出使用引進領(lǐng)域特征的BLOB算法,來檢測這個問題。經(jīng)實驗結(jié)果分析,該方法能有效辨別真?zhèn)稳毕?。實現(xiàn)了參考圖像與待測圖像的快速精準(zhǔn)配準(zhǔn)。
對PCB缺陷檢測的流程圖如圖1。
圖1 電路板缺陷檢測流程
人工或機器攝取PCB電路板圖像后,有很多因素都會導(dǎo)致圖像擁有五花八門的噪聲,比如拍攝過程設(shè)備的抖動,光照不勻,灰塵或其他雜物的遮掩,對圖像采用預(yù)處理方法,可以有效去除周圍環(huán)境帶來的噪聲,提升圖像保真率,為進一步處理圖片打下基礎(chǔ),以便進行缺陷檢測時準(zhǔn)確率更高[3]。對圖像進行預(yù)處理的方法主要分為圖像分割,提取前景目標(biāo),測試圖像與模板圖像校正。
相機采集到的測試圖經(jīng)過圖像校正,與模板圖在大小與方向上實現(xiàn)了圖像對齊。為了定位測試圖中的缺陷信息,需要將測試圖與模板圖作差[4]。作差的原理是模板圖與測試圖在對應(yīng)位置處的灰度值相減,表達式如下:
其中d(x,y)為差值圖,fTemplate(x,y)為模板圖,fTest(x,y)為測試圖。
對PCB圖像作差之后,通過分析差值圖中的亮區(qū)域,可以判斷測試圖中有無缺陷。亮區(qū)域分為兩類:一類是PCB 板生產(chǎn)過程引入的缺陷,屬于真缺陷;另一類是由于PCB板采集過程抖動引起圖像畸變、圖像校正沒有與模板對齊而引入的灰度差異,稱為偽缺陷,常對缺陷分析結(jié)果造成干擾[5]。缺陷分析的目的標(biāo)記真缺陷,剔除缺陷。
本文使用一種多模板檢測算法來剔除偽缺陷。該算法求取多個模板,并且統(tǒng)計每個模板在配準(zhǔn)后對應(yīng)的像素點處的最大、最小灰度值,生成亮模板與暗模板,計算公式如下:
其中,w表示學(xué)習(xí)樣本數(shù),An表示第n幅圖中點(x,y)處灰度值。
多模板比較算法相當(dāng)于在匹配時,進行BLOB 算法作缺陷檢測時引入了比較鄰域點的灰度值,可以有效去除輪廓偽缺陷。此外,還可以通過灰度形態(tài)學(xué)原理計算模板的最大、最小灰度值。
Blob算法是描述一幅圖像中連通域像素的方法,通常用于分析閉合的目標(biāo)形狀[6]。Blob 的解釋是一滴、一團的意思,圖像處理中的Blob是指一個像素塊,處于該像素塊中的像素點在位置上相互連通,并且具有相似的紋理、顏色特征。Blob缺陷分析的目的是描述目標(biāo)像素的四鄰域或八鄰域連通區(qū)塊的特征,例如像素區(qū)域的周長、面積、質(zhì)心、形狀等,如圖2所示[7]。
圖2 Blob特征示意圖
Blob分析主要分為兩部分,連通域標(biāo)記與區(qū)域描述,編寫算法時通常把這兩部分結(jié)合起來,在連通區(qū)域的同時,記錄區(qū)域信息[8]。
本文中采用像素標(biāo)記法,圖像經(jīng)過一次掃描完成標(biāo)記。差值圖經(jīng)過灰度化處理后,亮色區(qū)域灰度值255,背景灰度值為0,為防止重復(fù)標(biāo)記,將已經(jīng)標(biāo)記過的像素其灰度值賦值為254。一次掃描標(biāo)記算法的主要流程如下:
1)創(chuàng)建動態(tài)指針記錄需要標(biāo)記的像素塊信息,創(chuàng)建一個空棧隊列用于臨時存放標(biāo)記像素,設(shè)置八鄰域檢測數(shù)組順序。
2)從下向上、從左向右掃描圖像,如果當(dāng)前掃描像素灰度值為0,跳過當(dāng)前像素,繼續(xù)掃描;當(dāng)前掃描像素的灰度值為255,區(qū)域信息個數(shù)計數(shù)加1,記錄當(dāng)前像素的坐標(biāo)值。
3)根據(jù)八鄰域數(shù)組檢測當(dāng)前像素的鄰域像素是否為前景點,如果為前景點,標(biāo)記該鄰域像素,同時將該像素坐標(biāo)壓入棧,區(qū)域面積值加1,更新當(dāng)前連通域邊緣坐標(biāo)值;否則,繼續(xù)掃描鄰域像素。
4)當(dāng)前像素的八鄰域掃描完以后,檢查壓入棧中的像素點的八鄰域像素,從棧中彈出像素坐標(biāo)值,按照步驟3)檢查像素,直至棧為空。
5)掃描完畢當(dāng)前區(qū)域后,按照步驟2)繼續(xù)掃描圖像,直至整幅圖像掃描完成。
本文中Blob算法標(biāo)記的連通域特征主要有:缺陷塊個數(shù)Nnmber;每個缺陷塊分別記錄面積Size,左下角像素點坐標(biāo)x0,y0,右上角像素點坐標(biāo)x1,y1這五個元素。根據(jù)記錄信息,可以計算出缺陷塊的其他信息如缺陷中心坐標(biāo),缺陷塊的寬度Δx,高度Δy,從而分析出缺陷的形狀。上述特征在連通域標(biāo)記過程中的計算方法如下:
Ri——第i個連通區(qū)域。
其中,xi,yi表示標(biāo)記像素的坐標(biāo)。
根據(jù)式(3)可得出缺陷塊的特征點,式(4)可計算出缺陷區(qū)域邊角坐標(biāo),因此可以計算出缺陷區(qū)域面積,式(5)可表示區(qū)域面積大?。?/p>
其中Δx表示缺陷區(qū)域橫坐標(biāo)變化范圍,Δy表示曲線區(qū)域縱坐標(biāo)變化范圍。
然而實際檢測中此方法仍然存在偽缺陷,這類偽缺陷多為合格區(qū)域,但是由于圖像變形等原因難以濾除。只從缺陷塊自身的角度來考慮分辨真?zhèn)稳毕?,可能會造成漏檢,因此在判斷的過程中需要引入缺陷塊的鄰域像素塊信息來辨別。
分析測試圖與模板圖的差值圖,可以得出關(guān)于真缺陷與偽缺陷的特征(表1),根據(jù)這些特征來選擇判別方法。
表2 缺陷檢測結(jié)果
首先確定鄰域的選擇,根據(jù)表1的分析可以看出,偽缺陷的出現(xiàn)大多是因為測試圖與模板圖出現(xiàn)偏移造成的,偽缺陷鄰域范圍內(nèi),在模板圖中會出現(xiàn)與偽缺陷圖案相同或者相似的部分。鄰域的選擇以偽缺陷塊為中心塊,水平方向以缺陷塊的寬度Δx為單位寬度,垂直方向以缺陷塊高度Δy為單位高度,從中心塊向四周各擴展一個單位長度,鄰域圖如圖3所示。
圖3 缺陷鄰域示意圖
圖4 標(biāo)準(zhǔn)電路板卡圖像
圖5 待測電路板卡圖像
真?zhèn)稳毕莸呐袆e條件引用了谷歌相似圖片搜索的技術(shù)原理:感知哈希算法。感知哈希算法主要用于圖片相似性的描述,給每幅圖像生成一個“指紋”,之后與其他圖像生成的“指紋”比較,比較結(jié)果越接近,圖片越相似[9]。下面介紹一種常用的低頻圖像哈希算法:
1)將圖片縮小成為8 × 8的尺寸,共64個像素,目的是去除圖片高頻細(xì)節(jié)。
2)將圖像轉(zhuǎn)化為灰度圖像,簡化色彩。
3)計算小圖像的平均灰度值。
4) 8 × 8 圖像的像素灰度值與平均灰度值比較,大于或等于均灰度,記為1;小于均灰度,記為0。
5)記錄哈希值:將第四步比較的結(jié)果記錄下來,組成一個64位的整數(shù),即為圖像的“指紋”。
本文將感知哈希算法圖片相似理論運用到缺陷判別過程中,在缺陷塊鄰域找相似圖像塊,如果在模板圖缺陷塊鄰域中找到與測試圖缺陷塊相似的圖案,說明缺陷是由于對齊誤差造成的偽缺陷,可以排除。如果在模板圖八鄰域中沒有與缺陷塊相似的圖案,則該缺陷為真缺陷,是測試圖中獨有的圖案[10]。
因為缺陷塊像素面積通常不會超過10 × 10,所以不需要經(jīng)過圖片壓縮的過程;本文中需要比較的模板圖像為灰度圖,去掉彩色圖像灰度化步驟;改進計算哈希值的相關(guān)算法,將灰度化序列改為灰度化后“1”的個數(shù),便于比較。鄰域缺陷判別的算法流程如下:
1)遍歷缺陷塊信息,對于每一個缺陷塊信息,計算其鄰域范圍。
2)在模板圖中,從鄰域起始點,以缺陷塊大小為單位,計算每一個鄰域塊的均灰度值MeanGrayi,以及缺陷塊均灰度化后1的個數(shù)Num1i。
3) 模板圖計算的MeanGrayi與Num1i,與測試圖缺陷塊的MeanGray,Num1參數(shù)比較,當(dāng)滿足條件1)~3)時,說明出現(xiàn)缺陷塊的相似圖案,判別缺陷為偽缺陷。
其中Size表示缺陷塊面積。
4)遍歷完畢,未出現(xiàn)相似圖案,判別為真缺陷。
在獲取到待測圖像后,需要和標(biāo)準(zhǔn)圖像進行對比,從而獲得缺陷點的圖像。首先,需要規(guī)定一個圖像的最大面積值,從而消除在誤差允許的范圍內(nèi)的較小的缺陷。然后,以該缺陷為圖像中心,圈定一個范圍,進行詳細(xì)的缺陷檢測。
缺陷檢測和分析需要通過以下幾個方面進行考慮:
1)多/少線及缺失焊盤的情況
當(dāng)出現(xiàn)這種缺陷時就代表此電路板缺陷重大,其特征是從對比圖中能夠明顯發(fā)現(xiàn)較大面積的不同,即缺陷面積很大,并且是遠遠超過其他類型缺陷。可以根據(jù)缺陷面積的大小同其他缺陷分隔開來。
2)電路板發(fā)生短路和斷路的情況
在對比圖中通過判別連通區(qū)域數(shù)的方法進行識別短路和斷路。當(dāng)短路時,其特征是與標(biāo)準(zhǔn)圖像相比,圖像中連通區(qū)域數(shù)較少。相反的,當(dāng)斷路時,其特征是與標(biāo)準(zhǔn)圖像相比,圖像中連通區(qū)域數(shù)較多。
3)電路板發(fā)生凸起和凹陷的情況
圖像對比時面積是否出現(xiàn)增多和減少的情況,這類情況是反映在不同導(dǎo)線間間距的變化,當(dāng)凸起時,導(dǎo)線間間距變窄,即面積增加;當(dāng)凹陷時,導(dǎo)線間間距變寬,即面積減少。
4)電路板發(fā)生漏洞和錫點堵塞的情況
當(dāng)連通區(qū)域數(shù)不變,連接線區(qū)域距離間隔不變,區(qū)域數(shù)的數(shù)量也沒有發(fā)生改變,就需要考慮漏洞和錫點堵塞的可能。計算歐拉數(shù)是應(yīng)對這種缺陷的最好辦法,待測PCB 圖像歐拉數(shù)小于標(biāo)準(zhǔn)圖則為漏洞,反之大于則為錫點堵塞。
對采集PCB圖像經(jīng)過灰度化處理后,使用邊緣檢測算法,雙線性插值法對已經(jīng)采集到的PCB電路板卡圖像進行去噪分割和校正,得到PCB電路板卡待對比灰度化圖像。
對待測電路板卡圖像和標(biāo)準(zhǔn)電路板卡圖像做差后,使用引進領(lǐng)域特征的BLOB 算法進行和未引入領(lǐng)域特征的BLOB真?zhèn)稳毕荼鎰e,得到結(jié)果圖如下:
經(jīng)過鄰域缺陷判別,實現(xiàn)了濾除偽缺陷的目的。圖6 為引入鄰域灰度特征判別后的缺陷圖。其中缺陷點滿足4.3 中領(lǐng)域缺陷判別條件1)~3),即為本文所得真缺陷。
圖6 引入鄰域特征
圖7 未引入鄰域特征
對待測圖進行標(biāo)號以便后續(xù)識別,如圖8。
圖8 標(biāo)號圖
對PCB缺陷類型進行識別:在差值結(jié)果圖中按順序定位缺陷點位置。計算缺陷位置面積大小,設(shè)定面積閾值,小于閾值,則該缺陷點是允許誤差情況內(nèi)的缺陷,可以忽略。如果遠大于此閾值,則是多/少線及缺失焊盤的嚴(yán)重缺陷。待測PCB 圖面積大于標(biāo)準(zhǔn)PCB面積,則判斷為凸起,否則為凹陷。如果相等,則計算包含缺陷點的一定區(qū)域內(nèi)的連通區(qū)域數(shù),對于連通區(qū)域數(shù),待測PCB圖大于標(biāo)準(zhǔn)PCB圖,判斷為斷路,否則為短路。如果相等則進行下一步,計算待測PCB和標(biāo)準(zhǔn)PCB 的歐拉數(shù),對于歐拉數(shù),待測PCB 圖大于標(biāo)準(zhǔn)PCB圖,則判斷為錫點堵塞,否則為電路空洞,若相等,則進行灰度化圖像面積判斷。若待測圖像灰度化圖像面積大于標(biāo)準(zhǔn)圖像,則該缺陷點為凸起缺陷,若小于,則為凹陷缺陷。
從實驗結(jié)果可以看出,本文方法可以剔除偽缺陷的影響,并且不會干擾真缺陷的檢測。而且該方法在綜合考慮到了小的瑕疵和允許的誤差情況下,還能夠有效檢測出如斷路、短路、空洞、各類常規(guī)缺陷。
本文設(shè)計了基于改進的Blob 缺陷分析方法對PCB 進行缺陷檢測。引入領(lǐng)域特征解決了真?zhèn)稳毕蓦y以辨別的問題,并通過設(shè)計的算法流程有效檢測出待測PCB 板的常規(guī)缺陷,由此說明,該方法能較準(zhǔn)確地檢測出待檢測電路板上存在的缺陷,提高了檢測效率,達到了自動無接觸實時檢測的目的。綜上所述,本文提出的檢測方法能夠高標(biāo)準(zhǔn)自動化檢測有效剔除偽缺陷,并保留真缺陷,節(jié)省了人力資源,提高了檢測的效率。