雷臻宇,賀香華,駱佩文,周 聰,謝德芳
(廣州大學機械與電氣工程學院,廣州 510006)
芯片技術的不斷發展和進步,其性能越來越高,在各領域的使用越來越廣泛[1-3]。芯片在出廠前一般使用料盤的形式進行包裝,芯片裝入卷帶再纏繞在料盤里,如圖1所示。芯片價格昂貴,出廠前需要對每個料盤內芯片數目進行準確計數,但每個料盤內芯片數量少則幾千,多則幾萬個,且單個芯片體積非常小,無法使用人工進行計數,需要有穩定可靠的解決方案完成整盤芯片的快速自動計數工作。近年來,機器視覺技術以其快速、穩定、可靠的性能,在工農業生產中的尺寸測量、缺陷檢測和自動計數等領域得到了較廣泛的應用。機器視覺技術可用于對農作物計數,評估生產量、優化管理[4-6];對圖像細胞進行計數,用于醫學診斷[7];甚至利用圖像對運動物體進行計數等[8]。利用機器視覺在芯片計數領域,目前還沒有找到相關文獻。
圖2為通過使用X光在料盤垂直方向拍照獲取的料盤圖像,圖3為芯片部分局部放大的圖像。使用圖像對產品進行計數,一般是首先設定產品的模板圖像,然后使用模板匹配的方法在圖像中搜索匹配到與模板類似的對象,從而實現產品的計數[9-10]。但針對芯片計數的應用,使用模版匹配的方法存在以下幾個問題:(1)芯片型號眾多且切換頻繁,每次切換型號都需停機重新制作模版,降低設備使用效率;(2)每張圖片中,芯片數量眾多,全部使用模版匹配耗時較長;(3)芯片包裝緊密,有些相鄰芯片在圖像中粘連在一起,會對匹配造成較大干擾,影響最終計數結果的精度。
圖1 芯片包裝料盤
為了解決以上問題,本文提出基于X光圖像的芯片在線自適應計數算法,可根據不同芯片產品的圖像信息自動調整相關參數;對于圖像中芯片相互粘連的問題,通過自動估算單個芯片的大小,即使緊密粘連在一起的芯片也可以大致估算出相應的數目。
結合實際生產需求,本算法需要滿足以下條件:(1)針對不同類型芯片圖像,算法無需人工干預,可自動調整相關參數;(2)偏差率小于0.3%;(3)單張圖片耗時小于3 s。
算法流程如圖3所示。本算法主要分為以下幾個步驟:
(1)讀取芯片的X光圖像;
(2)自動提取芯片感興趣區域:首先去除滾筒區域的干擾,然后為降低背景區域污漬的影響,利用自動閾值提取卷帶區域,最后在卷帶區域里利用自動閾值提取出芯片區域;
(3)估算單個芯片面積,并計算芯片總數;
(4)輸出結果。
圖3 算法流程圖
首先統計出芯片料盤圖像的灰度直方圖,如圖4所示。結合圖2芯片料盤圖像,芯片、滾筒、卷帶和背景區域分別分布在相應的波峰帶。因此,在各波峰帶做閾值分割,即可提取相應區域。圖4中,滾筒區域峰值與芯片區域峰值相隔不明顯,會影響對芯片區域提取的效果,因此需從原圖中去除滾筒區域。
圖4 灰度直方圖
由于芯片被包裝纏繞在同種規格的料盤上,因此滾筒區域的灰度值范圍基本一致,采用固定閾值分割,對滾筒區域進行自動提取屏蔽。
式中,i,j分別對應圖像中第i行,j列。 f(i,j)、 g(i,j)分別對應閾值分割前后對應點的灰度值,m1、m2為閾值。
對滾筒區域做閾值分割,取m1=0,m2=80,分割后的結果如圖5所示。
對分割后的區域采用最大面積特征提取[11],提取結果即為滾筒區域。從圖5可以看出,滾筒區域邊緣部分并沒有被完全提取出來,因此對滾筒區域做膨脹運算。膨脹后的區域再與原圖做補集運算,得到去除滾筒區域B,如圖6所示,此時滾筒區域已被去除,圖像記為S。
圖5 滾筒區域分割結果
圖6 去除滾筒區域B
補集運算如圖7所示,A區域與B區域構成集合U,對A區域做補集運算得到B。
由于個別圖像上存在著污漬、噪聲干擾且污漬灰度值與芯片灰度值接近,如圖8所示,直接提取芯片區域會一并將污漬提取出來,影響計數結果。為減少污漬干擾,先提取出卷帶區域,在卷帶區域的背景下提取芯片區域。
不同芯片卷帶區域的灰度峰值范圍不同,大小也不同,所以基于固定閾值分割的方式對卷帶區域進行提取是不穩定的,效果也不理想。對此,本文提出一種自動閾值方法,能根據不同芯片圖像的區域信息自動調整相應閾值。
首先統計出S的灰度直方圖,直方圖經過高斯函數(σ=1.5)平滑[11]后如圖9所示。
圖7 補集運算
圖8 帶污漬的圖像
圖9 灰度直方圖
然后找出直方圖上的波峰波谷。將灰度直方圖看成函數f(x),x∈[0,255]∩x∈N的函數圖,定義波峰波谷為函數的極大、極小值(個別波峰由于峰值太小,直方圖上體現不明顯)。對此函數定義:如果存在點x0的某一鄰域[x0-1,x0+1],使得對任意x∈[x0-1,x0+1],都有f(x0) >f(x),則稱x0為f(x)的極大值點,f(x0)為極大值。同理,極小值為對任意x∈[x0-1,x0+1],都有f(x0) <f(x)。經高斯平滑后,灰度值會產生細微波動,造成了f(x)<1的極大值點,為排除此影響,選出的極大值需大于50。若臨界值f(0)>f(1),f(255)>f(254),則x=0,x=255為極大值點。統計出所有波峰點xn(n=1,2,3…且x1<x2<x3…<xn)。
最后在灰度直方圖上,取后2個波峰即xn和xn-12個函數點間的極小值作為閾值m2,m1取0對S2進行閾值分割,對分割后的區域作最大區域面積特征提取,提取結果即為卷帶區域。在做最大區域面積提取后,卷帶區域邊緣可能會有損失,如圖10所示。因此在提取最大區域面積前應對分割區域作膨脹運算。
卷帶區域提取后,在卷帶區域背景下做自動閾值提取芯片區域。
同樣的,首先統計出卷帶區域的灰度直方圖,用高斯函數平滑(σ=1.5),如圖11所示。
圖10 卷帶區域提取結果
圖11 灰度直方圖
取前2個波峰x1和x22個函數點間的極小值作為閾值m2,m1取0。對分割后的區域做面積特征提取,提取面積大于等于5像素的區域,此時區域可認為是芯片區域,如圖12所示。
圖12 芯片區域提取結果
芯片的提取區域用“+”標志。在統計結果發現,個別圖像芯片與卷帶灰度差異不明顯,難以完全分割提取出來,如圖13所示。因此利用增強對比度的方法,增加芯片邊緣區域灰度差異后再進行閾值分割。
圖13 增強對比度前后比較
增強對比度:首先對S進行均值濾波[11],掩濾波器大小為7×7。然后對濾波后的圖像做如下處理:
式中,ori是原始灰度值,mean是濾波后的灰度值,Fac作為增強對比度的度量,round()把實數四舍五入轉化為整數,取Fac=1。
如圖14所示,提取后的芯片區域還存在以下問題:(1)圖14(a)存在多個粘連區域,有2個、3個甚至更多芯片區域粘連在一起;(2)圖14(b)圖像上的污漬被提取出來產生干擾(噪聲區域);(3)圖14(c)污漬與芯片一起形成粘連區域。
圖14 誤差來源
由于圖像上的芯片精細且分布緊密,很難有方法分割出單個芯片區域而不影響其他區域。為此,本文提出基于連通區域面積的計數方法。
首先對提取出的芯片區域面積做概率統計,如圖15所示。面積出現次數最多的即為單個芯片的標準面積s1。由于單個芯片面積小且占絕大多數,為提高算法速度,只需0~400像素范圍內的區域面積做概率統計。
圖15 面積統計圖
圖16 倍數統計圖
然后針對這些噪聲、粘連區域設置相應的倍數關系來減少誤差,提高精度。用600張圖片作為測試集,測試倍數與實際個數之間的關系,如圖16所示。
針對圖16倍數關系交界區域做誤差統計,最終得出如表1所示的倍數關系。
表1 芯片區域劃分
最后芯片總數為:
選擇配置為CPU Intel Core i5 2.5GHZ,內存8G的PC測試算法。實驗數據為500張不同的芯片圖像,幾種代表性芯片圖像的提取結果如圖17所示。測試步驟如下:
(1)用模板匹配方法進行計數,對匹配結果用“+”標記,統計出漏標多標的誤差數量,實際數量z;
圖17 不同芯片圖像舉例
(2)設置好倍數關系,利用本文算法對500張圖片自動計數;
(3)匯總實驗結果,計算各自偏差率。
將2種方法的計數結果匯總:統計出算法的平均偏差率y,平均耗時。xi表示單個圖片的偏差數,zi表示單個圖片的實際數量。
實驗結果如表2所示。
表2 實驗結果
從表2可知,模板匹配方法不僅需要頻繁切換模板,而且偏差較高,耗時長。而本文算法不僅能做到根據圖像自適應調整相關參數,而且通過對粘連區域設立倍數關系,大大改善了偏差率。偏差率平均為0.03%,平均耗時2.9 s/張(圖像分辨率為3 072×2 592),滿足實際需求。
本文提出一種基于X光圖像的芯片在線自適應計數算法,該方法基于自動閾值,實現了相關參數的自動調整,通過設置單個芯片參考面積和倍數關系,解決了芯片粘連緊密的問題。實驗表明,最終平均誤差為0.03%,耗時平均為2.9s/張(圖像分辨率為3 072×2 592),能達到生產線上的自動化要求,有較高的實用價值。如何分割芯片與污漬粘連的區域,是下一步需要深入研究的問題。