高磊,郎加云
(安徽文達信息工程學院,安徽合肥 231201)
如今,由于集成電路工藝突飛猛進的發展,電子元件變得更加微小化、片式化、輕量化,主流的電路板焊接方式也變為了貼片式。隨著PCB 制作技術的逐漸發展,印制電路板上的元器件越來越多,結構越來越復雜。在電路板制造工業中,應用機器視覺替代傳統的人工檢測已成趨勢[1]。機器視覺與圖像處理技術的融合,在檢測強度與速度、標準規范程度上都具有很大的優勢。
實際中,工業生產制造電路板時有可能產生復雜多樣的缺陷,國際電聯協會將電路缺陷分為了不同的種類,例如:短路、斷路、凸起、凹陷等[2]。在用圖像處理方法檢測PCB 缺陷時,本文發現,進行輪廓對比時會出現偽缺陷,本文主要工作為剔除PCB缺陷檢測時的偽缺陷。
針對傳統PCB 檢測方法高成本、低效率問題,本文提出一種以機器視覺為基礎的PCB缺陷檢測方法,使用數字圖像處理相關算法,通過對比待測圖像和標準圖像,針對PCB 板缺陷檢測中真偽缺陷的識別問題,本文提出使用引進領域特征的BLOB算法,來檢測這個問題。經實驗結果分析,該方法能有效辨別真偽缺陷。實現了參考圖像與待測圖像的快速精準配準。
對PCB缺陷檢測的流程圖如圖1。

圖1 電路板缺陷檢測流程
人工或機器攝取PCB電路板圖像后,有很多因素都會導致圖像擁有五花八門的噪聲,比如拍攝過程設備的抖動,光照不勻,灰塵或其他雜物的遮掩,對圖像采用預處理方法,可以有效去除周圍環境帶來的噪聲,提升圖像保真率,為進一步處理圖片打下基礎,以便進行缺陷檢測時準確率更高[3]。對圖像進行預處理的方法主要分為圖像分割,提取前景目標,測試圖像與模板圖像校正。
相機采集到的測試圖經過圖像校正,與模板圖在大小與方向上實現了圖像對齊。為了定位測試圖中的缺陷信息,需要將測試圖與模板圖作差[4]。作差的原理是模板圖與測試圖在對應位置處的灰度值相減,表達式如下:
其中d(x,y)為差值圖,fTemplate(x,y)為模板圖,fTest(x,y)為測試圖。
對PCB圖像作差之后,通過分析差值圖中的亮區域,可以判斷測試圖中有無缺陷。亮區域分為兩類:一類是PCB 板生產過程引入的缺陷,屬于真缺陷;另一類是由于PCB板采集過程抖動引起圖像畸變、圖像校正沒有與模板對齊而引入的灰度差異,稱為偽缺陷,常對缺陷分析結果造成干擾[5]。缺陷分析的目的標記真缺陷,剔除缺陷。
本文使用一種多模板檢測算法來剔除偽缺陷。該算法求取多個模板,并且統計每個模板在配準后對應的像素點處的最大、最小灰度值,生成亮模板與暗模板,計算公式如下:
其中,w表示學習樣本數,An表示第n幅圖中點(x,y)處灰度值。
多模板比較算法相當于在匹配時,進行BLOB 算法作缺陷檢測時引入了比較鄰域點的灰度值,可以有效去除輪廓偽缺陷。此外,還可以通過灰度形態學原理計算模板的最大、最小灰度值。
Blob算法是描述一幅圖像中連通域像素的方法,通常用于分析閉合的目標形狀[6]。Blob 的解釋是一滴、一團的意思,圖像處理中的Blob是指一個像素塊,處于該像素塊中的像素點在位置上相互連通,并且具有相似的紋理、顏色特征。Blob缺陷分析的目的是描述目標像素的四鄰域或八鄰域連通區塊的特征,例如像素區域的周長、面積、質心、形狀等,如圖2所示[7]。

圖2 Blob特征示意圖
Blob分析主要分為兩部分,連通域標記與區域描述,編寫算法時通常把這兩部分結合起來,在連通區域的同時,記錄區域信息[8]。
本文中采用像素標記法,圖像經過一次掃描完成標記。差值圖經過灰度化處理后,亮色區域灰度值255,背景灰度值為0,為防止重復標記,將已經標記過的像素其灰度值賦值為254。一次掃描標記算法的主要流程如下:
1)創建動態指針記錄需要標記的像素塊信息,創建一個空棧隊列用于臨時存放標記像素,設置八鄰域檢測數組順序。
2)從下向上、從左向右掃描圖像,如果當前掃描像素灰度值為0,跳過當前像素,繼續掃描;當前掃描像素的灰度值為255,區域信息個數計數加1,記錄當前像素的坐標值。
3)根據八鄰域數組檢測當前像素的鄰域像素是否為前景點,如果為前景點,標記該鄰域像素,同時將該像素坐標壓入棧,區域面積值加1,更新當前連通域邊緣坐標值;否則,繼續掃描鄰域像素。
4)當前像素的八鄰域掃描完以后,檢查壓入棧中的像素點的八鄰域像素,從棧中彈出像素坐標值,按照步驟3)檢查像素,直至棧為空。
5)掃描完畢當前區域后,按照步驟2)繼續掃描圖像,直至整幅圖像掃描完成。
本文中Blob算法標記的連通域特征主要有:缺陷塊個數Nnmber;每個缺陷塊分別記錄面積Size,左下角像素點坐標x0,y0,右上角像素點坐標x1,y1這五個元素。根據記錄信息,可以計算出缺陷塊的其他信息如缺陷中心坐標,缺陷塊的寬度Δx,高度Δy,從而分析出缺陷的形狀。上述特征在連通域標記過程中的計算方法如下:
Ri——第i個連通區域。
其中,xi,yi表示標記像素的坐標。
根據式(3)可得出缺陷塊的特征點,式(4)可計算出缺陷區域邊角坐標,因此可以計算出缺陷區域面積,式(5)可表示區域面積大小:
其中Δx表示缺陷區域橫坐標變化范圍,Δy表示曲線區域縱坐標變化范圍。
然而實際檢測中此方法仍然存在偽缺陷,這類偽缺陷多為合格區域,但是由于圖像變形等原因難以濾除。只從缺陷塊自身的角度來考慮分辨真偽缺陷,可能會造成漏檢,因此在判斷的過程中需要引入缺陷塊的鄰域像素塊信息來辨別。
分析測試圖與模板圖的差值圖,可以得出關于真缺陷與偽缺陷的特征(表1),根據這些特征來選擇判別方法。

表2 缺陷檢測結果
首先確定鄰域的選擇,根據表1的分析可以看出,偽缺陷的出現大多是因為測試圖與模板圖出現偏移造成的,偽缺陷鄰域范圍內,在模板圖中會出現與偽缺陷圖案相同或者相似的部分。鄰域的選擇以偽缺陷塊為中心塊,水平方向以缺陷塊的寬度Δx為單位寬度,垂直方向以缺陷塊高度Δy為單位高度,從中心塊向四周各擴展一個單位長度,鄰域圖如圖3所示。

圖3 缺陷鄰域示意圖

圖4 標準電路板卡圖像

圖5 待測電路板卡圖像
真偽缺陷的判別條件引用了谷歌相似圖片搜索的技術原理:感知哈希算法。感知哈希算法主要用于圖片相似性的描述,給每幅圖像生成一個“指紋”,之后與其他圖像生成的“指紋”比較,比較結果越接近,圖片越相似[9]。下面介紹一種常用的低頻圖像哈希算法:
1)將圖片縮小成為8 × 8的尺寸,共64個像素,目的是去除圖片高頻細節。
2)將圖像轉化為灰度圖像,簡化色彩。
3)計算小圖像的平均灰度值。
4) 8 × 8 圖像的像素灰度值與平均灰度值比較,大于或等于均灰度,記為1;小于均灰度,記為0。
5)記錄哈希值:將第四步比較的結果記錄下來,組成一個64位的整數,即為圖像的“指紋”。
本文將感知哈希算法圖片相似理論運用到缺陷判別過程中,在缺陷塊鄰域找相似圖像塊,如果在模板圖缺陷塊鄰域中找到與測試圖缺陷塊相似的圖案,說明缺陷是由于對齊誤差造成的偽缺陷,可以排除。如果在模板圖八鄰域中沒有與缺陷塊相似的圖案,則該缺陷為真缺陷,是測試圖中獨有的圖案[10]。
因為缺陷塊像素面積通常不會超過10 × 10,所以不需要經過圖片壓縮的過程;本文中需要比較的模板圖像為灰度圖,去掉彩色圖像灰度化步驟;改進計算哈希值的相關算法,將灰度化序列改為灰度化后“1”的個數,便于比較。鄰域缺陷判別的算法流程如下:
1)遍歷缺陷塊信息,對于每一個缺陷塊信息,計算其鄰域范圍。
2)在模板圖中,從鄰域起始點,以缺陷塊大小為單位,計算每一個鄰域塊的均灰度值MeanGrayi,以及缺陷塊均灰度化后1的個數Num1i。
3) 模板圖計算的MeanGrayi與Num1i,與測試圖缺陷塊的MeanGray,Num1參數比較,當滿足條件1)~3)時,說明出現缺陷塊的相似圖案,判別缺陷為偽缺陷。
其中Size表示缺陷塊面積。
4)遍歷完畢,未出現相似圖案,判別為真缺陷。
在獲取到待測圖像后,需要和標準圖像進行對比,從而獲得缺陷點的圖像。首先,需要規定一個圖像的最大面積值,從而消除在誤差允許的范圍內的較小的缺陷。然后,以該缺陷為圖像中心,圈定一個范圍,進行詳細的缺陷檢測。
缺陷檢測和分析需要通過以下幾個方面進行考慮:
1)多/少線及缺失焊盤的情況
當出現這種缺陷時就代表此電路板缺陷重大,其特征是從對比圖中能夠明顯發現較大面積的不同,即缺陷面積很大,并且是遠遠超過其他類型缺陷。可以根據缺陷面積的大小同其他缺陷分隔開來。
2)電路板發生短路和斷路的情況
在對比圖中通過判別連通區域數的方法進行識別短路和斷路。當短路時,其特征是與標準圖像相比,圖像中連通區域數較少。相反的,當斷路時,其特征是與標準圖像相比,圖像中連通區域數較多。
3)電路板發生凸起和凹陷的情況
圖像對比時面積是否出現增多和減少的情況,這類情況是反映在不同導線間間距的變化,當凸起時,導線間間距變窄,即面積增加;當凹陷時,導線間間距變寬,即面積減少。
4)電路板發生漏洞和錫點堵塞的情況
當連通區域數不變,連接線區域距離間隔不變,區域數的數量也沒有發生改變,就需要考慮漏洞和錫點堵塞的可能。計算歐拉數是應對這種缺陷的最好辦法,待測PCB 圖像歐拉數小于標準圖則為漏洞,反之大于則為錫點堵塞。
對采集PCB圖像經過灰度化處理后,使用邊緣檢測算法,雙線性插值法對已經采集到的PCB電路板卡圖像進行去噪分割和校正,得到PCB電路板卡待對比灰度化圖像。
對待測電路板卡圖像和標準電路板卡圖像做差后,使用引進領域特征的BLOB 算法進行和未引入領域特征的BLOB真偽缺陷辨別,得到結果圖如下:
經過鄰域缺陷判別,實現了濾除偽缺陷的目的。圖6 為引入鄰域灰度特征判別后的缺陷圖。其中缺陷點滿足4.3 中領域缺陷判別條件1)~3),即為本文所得真缺陷。

圖6 引入鄰域特征

圖7 未引入鄰域特征
對待測圖進行標號以便后續識別,如圖8。

圖8 標號圖
對PCB缺陷類型進行識別:在差值結果圖中按順序定位缺陷點位置。計算缺陷位置面積大小,設定面積閾值,小于閾值,則該缺陷點是允許誤差情況內的缺陷,可以忽略。如果遠大于此閾值,則是多/少線及缺失焊盤的嚴重缺陷。待測PCB 圖面積大于標準PCB面積,則判斷為凸起,否則為凹陷。如果相等,則計算包含缺陷點的一定區域內的連通區域數,對于連通區域數,待測PCB圖大于標準PCB圖,判斷為斷路,否則為短路。如果相等則進行下一步,計算待測PCB和標準PCB 的歐拉數,對于歐拉數,待測PCB 圖大于標準PCB圖,則判斷為錫點堵塞,否則為電路空洞,若相等,則進行灰度化圖像面積判斷。若待測圖像灰度化圖像面積大于標準圖像,則該缺陷點為凸起缺陷,若小于,則為凹陷缺陷。
從實驗結果可以看出,本文方法可以剔除偽缺陷的影響,并且不會干擾真缺陷的檢測。而且該方法在綜合考慮到了小的瑕疵和允許的誤差情況下,還能夠有效檢測出如斷路、短路、空洞、各類常規缺陷。
本文設計了基于改進的Blob 缺陷分析方法對PCB 進行缺陷檢測。引入領域特征解決了真偽缺陷難以辨別的問題,并通過設計的算法流程有效檢測出待測PCB 板的常規缺陷,由此說明,該方法能較準確地檢測出待檢測電路板上存在的缺陷,提高了檢測效率,達到了自動無接觸實時檢測的目的。綜上所述,本文提出的檢測方法能夠高標準自動化檢測有效剔除偽缺陷,并保留真缺陷,節省了人力資源,提高了檢測的效率。