程金緯,邱曉暉,陳青青,2
(1.南京郵電大學(xué),江蘇 南京 210003;2.信息產(chǎn)業(yè)部南京第五十五研究所,江蘇 南京 211100)
近幾年隨著焊接工藝的發(fā)展,共晶焊接技術(shù)日漸成熟,經(jīng)過共晶焊接后的封裝元件電阻率、導(dǎo)熱系數(shù)以及熱阻等往往低于其他焊接方式。故而該技術(shù)在工業(yè)上的應(yīng)用日漸廣泛,尤其在大功率器件方面,逐漸取代了使用導(dǎo)電膠粘貼貼片的生產(chǎn)方式。
共晶焊接又稱為低熔點合金焊接,該技術(shù)以具有較低熔點的合金為焊料,通過加熱的方式將合金焊料融化,利用外界施壓讓元件與焊盤完全貼合。例如使用金錫合金作為焊料時,為了保證焊料完全融化需保證溫度在280 ℃~360 ℃之間,該過程中焊料與氧氣的接觸極易發(fā)生氧化反應(yīng)產(chǎn)生氧化膜,即燒結(jié)空洞。而大面積的燒結(jié)空洞會影響器件的散熱性能,當器件功率過大時甚至?xí)龤骷V挥性诶硐氲恼婵窄h(huán)境下進行共晶焊接才能避免產(chǎn)生燒結(jié)空洞,但是由于技術(shù)條件的限制,工業(yè)生產(chǎn)還不足以提供絕對的真空環(huán)境,大規(guī)模生產(chǎn)后部分產(chǎn)品仍存在缺陷。因此生產(chǎn)后需檢測產(chǎn)品是否存在燒結(jié)空洞,以評估其質(zhì)量。同時如何有效、快速地檢測焊接缺陷也是當前熱門的研究方向之一。
X射線檢測技術(shù)在焊接、鑄件、組裝等加工領(lǐng)域以及醫(yī)學(xué)領(lǐng)域的應(yīng)用尤為廣泛。使用X射線不僅可以避免對識別目標造成損害,而且可以更直觀地得到圖像結(jié)果,提取圖像特征[1]。
X射線能直觀地反映被測物的內(nèi)部結(jié)構(gòu),但未經(jīng)處理的X射線圖像具有灰度及對比度低、噪聲大等缺點,難以清晰地呈現(xiàn)細小目標[1-2]。目前工業(yè)上主要通過X射線直接成像,利用人工檢測產(chǎn)品缺陷,但是該手段具有一定的主觀性,可能會漏判甚至誤判部分細小缺陷。所以對于大量的鑄件,人工檢測產(chǎn)品缺陷的效率并不高。為了提高檢測效率,尤其針對PCB板上燒結(jié)空洞經(jīng)X光成像后不易識別的問題,基于形態(tài)學(xué)方法提出了一種自動檢測并標記燒結(jié)空洞的處理思路。
研究表明人眼通過識別邊緣、背景來分辨目標形狀。為直觀地反映圖像所包含的對象,可借助邊緣將圖像分割為多個具有不同特征的區(qū)域,邊緣即圖像中亮度突變的區(qū)域[3-4]。目前常見的邊緣檢測算子主要分為微分算子和形態(tài)學(xué)梯度算子。而想要標記出X光圖像中的燒結(jié)空洞,關(guān)鍵在于分離空洞邊界。故本節(jié)選取其中兩種典型算子─Sobel算子和腐蝕膨脹梯度算子進行介紹。
Sobel算子是一種典型的微分算子。該類算子將灰度圖像中每一行、列所包含的像素點數(shù)值視為一段連續(xù)的函數(shù),而出現(xiàn)圖像邊緣的區(qū)域在這段函數(shù)上往往會表現(xiàn)為函數(shù)值突變,即此時該連續(xù)函數(shù)的一階導(dǎo)數(shù)取極值。微分算子正是以此為依據(jù)檢測圖像邊界。
Sobel算子是一種以3*3矩陣為模板的微分算子,其輸出如式(1)所示。其中I表示圖像,Sx表示水平算子與圖像I的卷積結(jié)果,Sy表示垂直算子與圖像的卷積結(jié)果,g表示圖像與Sobel算子模板卷積的結(jié)果。基于式(1),Sobel算子模板可用矩陣表示,如式(2)所示。

(1)

(2)
由式(2)可以看出,Sobel算子是將模板邊緣選中的像素值按照行列分別求差分,并將差分結(jié)果取絕對值相加,故Sobel算子提取的圖像邊界具有粗亮的特征[5]。
與微分算子提取圖像邊緣原理不同,形態(tài)學(xué)方法將圖像視為由像素點組成的矩陣,通過特定的矩陣,即結(jié)構(gòu)元素,令圖形作簡單的形態(tài)學(xué)變換,從而提取圖像中的某些特征。
1.2.1 灰度級腐蝕與膨脹
腐蝕與膨脹是最簡單的兩種形態(tài)學(xué)變換,也是最基本的變換。腐蝕的定義如式(3)所示[3-4]:
(fΘb)(s,t)=min{f(s+x,t+y)-b(x,y)|
(s-x,t-y)∈Df;(x,y)∈Db}
(3)
其中,Df和Db分別表示輸入圖像f(x,y)和結(jié)構(gòu)元素b(x,y)的定義域。腐蝕運算即使用結(jié)構(gòu)元素b(x,y)確定像素點及其鄰域范圍,將被選中的像素點與結(jié)構(gòu)元素作差,選取其中的最小值作為輸出。
灰度級膨脹的定義如式(4)所示[3-4]:
(f⊕b)(s,t)=max{f(s-x,t-y)+b(x,y)|
(s-x,t-y)∈Df;(x,y)∈Db}
(4)
其中,Df和Db分別表示輸入圖像f(x,y)和結(jié)構(gòu)元素b(x,y)的定義域。膨脹運算即使用結(jié)構(gòu)元素b(x,y)確定像素點及其鄰域范圍,將被選中的像素點與結(jié)構(gòu)元素相加,選取其中的最大值作為輸出。
由此可以得到如下結(jié)論:當結(jié)構(gòu)元素模板b內(nèi)的數(shù)均為正數(shù)時,圖像f經(jīng)腐蝕變換后像素點灰度值減小,而膨脹變換則會令圖像f內(nèi)像素點灰度值增大。即式(5)所示的不等式恒成立。
f⊕b≥f≥fΘb
(5)
1.2.2 腐蝕膨脹梯度算子
腐蝕膨脹梯度算子是一種先將圖像作腐蝕、膨脹變換再作差的算法,其定義如式(6)所示[5-7]:
Grad1=f⊕b-fΘb
(6)
其中,f表示輸入圖像,b表示結(jié)構(gòu)元素。
由1.2.1節(jié)可知,選取結(jié)構(gòu)元素b令圖像f作腐蝕、膨脹變換,其定義域為被選中像素點及其鄰域。假設(shè)結(jié)構(gòu)元素b中元素僅為0和一較小常數(shù)A,圖像f中點(x,y)的灰度值為B,其經(jīng)結(jié)構(gòu)元素b的腐蝕輸出為E,膨脹輸出為D。若是點(x,y)及其鄰域內(nèi)各像素灰度值相差不大,則E≈B-A,D≈B+A,即該點腐蝕膨脹梯度的輸出結(jié)果Grad較小,約為2A。假設(shè)點(x,y)及其鄰域內(nèi)存在像素灰度值相差較大的兩個區(qū)域,這兩區(qū)域內(nèi)的像素值分別約為C、D(C>D),即該區(qū)域內(nèi)存在圖像邊界,則E≈D-A,D≈C+A,即該點腐蝕膨脹梯度的輸出結(jié)果Grad較大,約為C-D+2A。圖像f中邊界區(qū)域的Grad輸出更大,該區(qū)域提取邊界后的亮度高,反之非邊界區(qū)域的Grad輸出較小,該區(qū)域提取邊界后的亮度低,故使用膨脹腐蝕梯度算子可以有效提取圖像邊界[8-10]。
實際PCB板的X光圖像可能包括燒結(jié)空洞、焊盤焊點以及由導(dǎo)線和介電層組成的背景區(qū)域。如圖1所示,PCB板X光圖像I,其四類區(qū)域明顯具有不同的灰度特征。(1)焊盤焊點所占面積最小,亮度最低,呈點狀分布在整個PCB板上;(2)燒結(jié)空洞面積次之,亮度最高;(3)具有更大面積的是導(dǎo)線區(qū)域,該部分亮度介于介電層與焊盤焊點之間,以水平、垂直線的形式分布在整張PCB板上;(4)介電層區(qū)域面積最大,其亮度介于導(dǎo)線與燒結(jié)空洞之間。
燒結(jié)空洞區(qū)域內(nèi)還存在部分導(dǎo)線以及焊點焊盤。從圖1可見,部分導(dǎo)線直接貫穿燒結(jié)空洞,存在重疊區(qū)域。燒結(jié)空洞內(nèi)也存在部分點狀的焊盤,由于該部分與需提取目標無關(guān),可考慮將其直接視為噪聲濾除。

圖1 PCB板X光圖像I
由2.1節(jié)分析PCB板X光圖像I表面特征可知:圖像I中存在四類對象,其中目標對象燒結(jié)空洞亮度最高。故該文采取如下處理思路:先通過預(yù)處理濾除圖像中噪聲以及焊盤焊點,再提取圖像余下對象邊界并設(shè)法分離出燒結(jié)空洞邊界。提取邊界思路的選取將于第3節(jié)給出,預(yù)處理流程如下:
(1)高斯濾波[11-12]:X射線成像時產(chǎn)生的大量內(nèi)能會導(dǎo)致圖像I內(nèi)存在高斯噪聲,即圖像內(nèi)灰度值波動較大,這會影響提取邊界精度,故該文選取了標準差為10的3*3模板對原圖像I作了高斯濾波,得到如圖2(b)所示的圖像G1;
(2)中值濾波[13]:中值濾波可以有效去除呈點狀分布的椒鹽噪聲,為了減少圖像G1內(nèi)需要處理的對象,故將焊點焊盤視為椒鹽噪聲,使用7*7的模板對圖像G1作中值濾波,得到如圖2(c)所示的圖像M1。

圖2 燒結(jié)空洞邊緣提取預(yù)處理
本節(jié)選用了Sobel算子和膨脹腐蝕梯度算子分別提取圖像M1邊界,根據(jù)各自提取效果分析處理思路。通過實驗證明膨脹腐蝕梯度算子對水平、垂直方向的干擾有更好的抑制效果。
3.1.1 基于Sobel算子的燒結(jié)空洞提取實驗
如圖3所示,本節(jié)對預(yù)處理后圖像M1使用Sobel算子提取邊界并統(tǒng)計了其灰度直方圖,其中圖3(a)為使用Sobel算子提取的邊界圖像S1,圖3(b)為圖S1的灰度直方圖。

圖3 Sobel算子提取的邊界圖像及其灰度直方圖
由圖S1可見,此時圖像中包含對象為燒結(jié)空洞邊界、導(dǎo)線邊界和背景,導(dǎo)線邊界灰度與背景相近,空洞邊界則粗亮。故空洞邊界分布于直方圖的高灰度區(qū)域,假設(shè)燒結(jié)空洞邊界亮度約為b,導(dǎo)線邊界亮度約為a(b>a),理論上在區(qū)間[a,b]上選取一常數(shù)作為閾值可以將燒結(jié)空洞邊界分離出來。而圖像S1的灰度值直方圖存在兩個峰,區(qū)間(0.5,1)像素點分布較少,高灰度值像素點主要集中于“1”處,即在區(qū)間(0.5,1)上極有可能存在可以分離出燒結(jié)空洞邊界的閾值。故該文選取了四個數(shù)k1、k2、k3、k4作為閾值分割圖S1,其中k1取0.4,k2取0.5,k3取0.7,k4取0.8。分割圖像O1、O2、O3、O4如圖4所示。

圖4 選取閾值分離燒結(jié)空洞邊界
3.1.2 Sobel算子提取燒結(jié)空洞效果分析
由圖4發(fā)現(xiàn),圖像S1分割后并不能完整保留燒結(jié)空洞邊界,圖中標紅區(qū)域均存在不同程度的空缺。取0.4的k1在區(qū)間(0.5,1)之外,且分割圖像O1中已存在部分導(dǎo)線邊界,但是仍然存在燒結(jié)空洞邊界空缺的問題,即燒結(jié)空洞邊界灰度值取值區(qū)間過大,與導(dǎo)線邊界取值區(qū)間重疊。
經(jīng)對比發(fā)現(xiàn)出現(xiàn)空缺處均為導(dǎo)線和空洞的交界處。即水平、垂直方向上的噪聲會影響Sobel算子提取邊界的效果,甚至出現(xiàn)邊界缺失的問題。證明如下:
以PCB板X光圖像為例,假設(shè)燒結(jié)空洞的灰度值為5,導(dǎo)線區(qū)域的灰度值為3,背景區(qū)域灰度值為0。如式(7)所示,現(xiàn)依據(jù)原圖像I燒結(jié)空洞分布特征構(gòu)造四種3*3模板,I1、I2、I3、I4。其中I1表示空洞區(qū)域分布在一側(cè),背景區(qū)域分布在另一側(cè)的情況;I2表示空洞區(qū)域與垂直導(dǎo)線相鄰,提取空洞邊界時的情況;I3表示導(dǎo)線區(qū)域分布在一側(cè),背景區(qū)域分布在另一側(cè)的情況;I4表示空洞區(qū)域與垂直導(dǎo)線相鄰,提取導(dǎo)線邊界時的情況。
(7)
將這四個種模板分別帶入式(1)計算可得結(jié)果g1=20,g2=8,g3=12,g4=8。假設(shè)導(dǎo)線邊界亮度的取值區(qū)間為Dd,燒結(jié)空洞邊界亮度取值區(qū)間為Ds,那么Dd?[8,12],Ds?[8,20],即區(qū)間Dd與區(qū)間Ds存在重疊區(qū)間,可能無法找到合適的閾值分離兩種邊界,甚至存在邊界缺失的問題。故水平、垂直方向上的干擾會影響Sobel算子提取邊界的效果,想要完整提取燒結(jié)空洞邊界,需要尋找一種不受導(dǎo)線影響的邊緣檢測算法。
3.2.1 形態(tài)學(xué)邊緣檢測算法優(yōu)勢分析
由2.1節(jié)預(yù)處理后圖像M1所包含對象為燒結(jié)空洞、導(dǎo)線以及介電層。導(dǎo)線呈線狀密集分布在PCB板上,且與燒結(jié)空洞區(qū)域于水平、垂直方向存在部分重疊區(qū)域,這是導(dǎo)致Sobel算子提取空洞邊界不完整的主要原因。想要提取完整的燒結(jié)空洞邊界,需要克服導(dǎo)線對邊界亮度的影響。
而由1.2節(jié)可知影響形態(tài)學(xué)運算結(jié)果的主要是結(jié)構(gòu)元素b(x,y)。假設(shè)結(jié)構(gòu)元素b(x,y)內(nèi)元素值相等,那么點(x,y)處腐蝕或膨脹的輸出僅與被結(jié)構(gòu)元素b(x,y)選中區(qū)域內(nèi)的最值有關(guān),與區(qū)域內(nèi)灰度值分布的順序無關(guān)。故若是在導(dǎo)線與空洞交界區(qū)域令結(jié)構(gòu)元素b(x,y)選中部分灰度更低的介電層區(qū)域,即可提高交界處燒結(jié)空洞邊界的亮度,避免邊界缺失。

(8)


圖5 基于不同結(jié)構(gòu)元素提取的燒結(jié)空洞邊界
3.2.2 利用腐蝕膨脹梯度算子提取、標記燒結(jié)空洞實驗流程
由3.2.1節(jié)可知使用形態(tài)學(xué)方法提取空洞邊界可以有效抑制導(dǎo)線干擾,基于此本節(jié)通過實驗對分離燒結(jié)空洞邊界方法作了簡單的介紹。其流程如下:
(1)腐蝕膨脹梯度算子提取邊界:選取s3作為腐蝕膨脹梯度算子的結(jié)構(gòu)元素,提取圖像M1邊界,其輸出圖像G3如圖6(a)所示;
(2)基于形態(tài)學(xué)方法填充空洞區(qū)域:由于需要自動計算閾值分離出燒結(jié)空洞區(qū)域,而Otsu法無法準確分割與圖像大小相差過大的對象,故需要增大提取對象的面積,即通過填充空洞區(qū)域以此增大分割對象面積。如圖6(b)所示是使用結(jié)構(gòu)元素s4填充圖像后的結(jié)果F1,結(jié)構(gòu)元素s4如式(9)所示,是半徑為1的圓形結(jié)構(gòu)模板;
(9)
(3)腐蝕:假設(shè)結(jié)構(gòu)元素內(nèi)元素均為正數(shù),腐蝕變換圖像會整體變暗,即可以削弱暗處細節(jié)。故使用結(jié)構(gòu)元素s4對圖像作腐蝕變換,抑制細長的導(dǎo)線,其變換后圖像E1如圖6(c)所示;
(4)Otsu法[14-15]分割圖像:使用Otsu法分離出圖像E1中的燒結(jié)空洞,分離所得圖像O1如圖6(d)所示,所用閾值k5=0.070 6;
(5)開運算去除毛刺:開運算可以去除孤立點和毛刺,故以s4為結(jié)構(gòu)元素對圖像O1作開運算,所的圖像X1如圖6(e)所示;
(6)腐蝕梯度算子提取空洞內(nèi)邊緣:以結(jié)構(gòu)元素s4提取圖像X1空洞區(qū)域的內(nèi)邊界并去除圖像邊緣毛刺,所得圖像B1如圖6(f)所示,腐蝕梯度算子定義如式(10)所示,式中f表示輸入圖像,b表示結(jié)構(gòu)元素;
Grad2=f-fΘb
(10)
(7)統(tǒng)計并標記燒結(jié)空洞:以圖像E1所得邊界為依據(jù)在原圖像I上標記燒結(jié)空洞并統(tǒng)計各空洞面積,其結(jié)果F如圖6(g)所示,統(tǒng)計各空洞面積結(jié)果如表1所示。

圖6 基于形態(tài)學(xué)方法標記燒結(jié)空洞實驗

表1 燒結(jié)空洞面積統(tǒng)計
通過以Sobel算子提取PCB板X光圖像燒結(jié)空洞的實驗,分析了PCB板中各類對象的分布特征以及Sobel算子的缺陷,發(fā)現(xiàn)提取燒結(jié)空洞的難點在于抑制導(dǎo)線對燒結(jié)空洞邊界的影響,避免提取后空洞邊界缺失。
分析了基于形態(tài)學(xué)邊緣檢測算法的優(yōu)勢后,通過實驗證實了該方法可以有效抑制水平、垂直方向上的導(dǎo)線干擾。并最終確定了檢測、標記燒結(jié)空洞的處理思路,其流程如圖7所示。

圖7 基于形態(tài)學(xué)方法檢測、標記燒結(jié)空洞流程
PCB板上焊盤大小不一,焊盤越大,中值濾波所需模板也越大。由于該思路抑制焊盤的方式較為簡單,焊盤較大時,僅使用中值濾波會造成圖像模糊,從而降低標記空洞的精度。針對該問題,文中的預(yù)處理方式還有待改善。但是,在工業(yè)上,該處理思路計算量小、處理時間短且可以較為準確地標記燒結(jié)空洞,具有一定的實際應(yīng)用價值。