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