鄔依林,蕭華希,李萬益,陳國明,張謙,劉嶼,3
1. 廣東第二師范學院計算機學院,廣東 廣州 510303
2. 華南理工大學自動化科學與工程學院,廣東 廣州 510640
3. 廣州現代產業技術研究院,廣東 廣州 511458
眾所周知,太陽能是一種可再生能源,具有容易獲取、可持續利用、環保等優點?;诠夥柲茈姵乜梢詫⑻柲苻D化為電能,因此太陽能電池有著很大的市場前景。但是,太陽能電池的生產是一個復雜的過程,在生產過程中出現任何意想不到的錯誤都會導致缺陷的發生,這可能會對電池造成很大的損害。因此,一個質量檢測體系對于太陽能電池生產線是至關重要的。
為了識別和分割太陽能電池或其他工業產品中的各種缺陷,在過去的十年里,大量基于機器視覺的方法被提出。在文獻[1]中,Rebhi 等提出了一種基于局部均勻性和數學形態學的織物疵點檢測算法,但是沒有給出任何關于結果的數據。文獻[2]提出了一種用于球柵陣列組件的在線定位和缺陷檢測方案。獨立成分分析在文獻[3]中被用于檢測光伏模塊的缺陷。Dhimish等[4]提出了一種利用逐位網格技術和“OR”操作來檢測太陽能電池微裂紋的新方法。然而,將兩張帶有紋理或結構背景的圖像對齊不是一件容易的工作。文獻[5]采用OTSU[6]的方法檢測基于介觀技術獲得的圖像的表面缺陷,但是該方法只能檢測灰度與背景不同的缺陷。文獻[7]基于Canny[8]的方法,設計了自適應閾值檢測織物上的缺陷。為了克服光照不均的問題,文獻[9]采用離散余弦變換(discrete cosine transform,DCT)重建背景,增強缺陷。在文獻[10]中,圖像被分割成多個超像素,然后訓練支持向量機(support vector machines,SVM)分類器來判斷某個超像素是否屬于被分割的目標。文獻[11]基于圖的層次聚類算法實現腦組織磁共振圖像的自動分割,文獻[12]采用馬氏距離分類法對柑桔彩色圖片中的不同元素進行了分類。上述方法大多是針對特定類型的缺陷檢測,如微裂紋、污漬、劃痕、孔洞等與背景灰度不同的缺陷。除了分割缺陷外,機器視覺技術也用于分割其他物體,如文獻[13]提出了分割LED 支架的算法。在生物鄰域,文獻[14]給出了白細胞的分割方案。經典的活動輪廓模型[15-16]是一種通用的分割方法,但由于其計算量大,而且需要人手動初始化輪廓,對圖像質量要求較高,因此沒有廣泛應用到實時的缺陷檢測中。
由于不需要為特定類型的缺陷設計特征,基于神經網絡的方法成為近年來流行和強大的技術。Chen等[17]利用深度卷積神經網絡成功地分割了塑料外殼表面劃痕。Dong等[18]利用全卷積網絡(fully convolutional network,FCN)[19]自動提取的特征來訓練隨機森林分類器,成功檢測到了航空焊縫射線圖像中的微小缺陷。在生物醫學鄰域,文獻[20]設計了帶有引導模板的神經網絡來分割眼球血管,文獻[21]使用集成深度學習的方法來分割皮膚病變區域。在實際應用中,針對特定任務訓練一個網絡模型仍然面臨數據不足、樣本不平衡、性能不穩定等問題。
本文從效率和性能兩個方面考慮,提出了一套完整的太陽能電池背面電極的定位和分割方法。
本節闡述了太陽能電池背面電極的分割和缺陷檢測完整方法,包括粗定位、精定位、邊緣分割,區域生成算法和缺陷檢測5個部分,其流程圖如圖1所示。
由于初始圖像的尺寸比較大,為了減少處理時間和亮度不均勻的背景的影響,需要從初始圖像中裁剪電極。投影方法和多項式擬合是粗定位算法中使用的基本方法,其細節在后文闡述。
如圖2所示,在電池硅片上,一共有54個背面電極,以9行6列的方式排列。在獲得硅片的包圍矩形后(如圖2 中的黃色大矩形框),下一步是定位電極陣列9 行和6 列的大概位置。據觀察,電極周圍有很強的梯度強度。因此,應用Sobel 算子得到兩個方向的梯度,分別記為Gx和Gy. 計算一個矩陣每一行或列的某個量(如均值、最大值),稱為投影法,它是將二維矩陣轉換為一維向量的常見方法。本小節中,通過均值投影,將Gx投影到Y軸上,將Gy投影到X軸上,結果分別記為My和Mx.

圖2 原始圖像以及粗定位結果Fig.2 Initial image with coarse positioning result
下面以Mx為例,描述粗定位的算法流程。粗定位算法的主要變量如圖3所示。首先,利用3階多項式曲線來擬合Mx,擬合結果記為Mfx. 在實際工程中,為降低運算量,可對Mx以間隔10 個長度單位進行采樣。定義中間變量Mp為

定義閾值Tm為

其中np是Mp中值大于0的數的個數。利用此閾值,將Mp二值化為

在式(2)、式(3)中,i= 1,2,…,Nx,Nx是Mx的長度。
在Bx中等于1 的區域就是可能的電極列位置,而列與列之間的相對的位置都是固定的,因此需要一個模板來確定列的位置。模板Tp由無缺陷的樣品中獲得,使用二值曲線表示每列電極的相對位置。接著,需要將Tp與Bx進行對齊。將Tp視為滑動窗口,在Bx上滑動,計算Tp與Bx的交集的大小。偏置Bias在交集最大的地方得到,圖3 清楚地展示這個過程。同樣,由My可確定電極行位置。由粗定位算法得到的電極陣列的行區域和列區域結果如圖2所示。

圖3 粗定位算法的主要變量Fig.3 Main variables in the coarse positioning method
利用粗定位的結果,從原始圖像中裁剪出54 個較小尺寸的圖像,每個圖像最多包含一個電極。本小節將描述精定位算法,以得到一個更加精確的定位。首先使用Sobel 算子計算圖像的梯度圖,記為Ic。使用最大值投影,即分別計算Ic每行和每列的最大值,結果分別記為Px,Py,如圖4所示。為了簡便,以Py為例說明精定位算法。對整個Py計算一個加權平均值,記為Aω,由下式計算

其中wi= abs(i-ny2),i= 1,2,…,ny,ny是Py的長度。圖4 中,將Aω視為一條水平直線,與Py畫在一起。在Aω與Py相交而形成閉合的區域中,面積最大的區域就是電極所在的位置。該區域的兩個端點,記為p1,p2,向Py兩側移動到最近的極小值點。對Px進行相同的處理,最終得到一個電極的包圍矩形(圖4中紅色矩形框),就是精定位的結果。該精定位算法的主要貢獻是將電極定位在小范圍內,去除大部分不均勻、復雜的背景。

圖4 精定位算法結果Fig.4 Result of the fine positioning method
據觀察,電極的灰度和紋理特征是變化的,且較大概率與背景相似。從圖5 的測試圖像中可以看出,電極最明顯的特征是其周圍或內部有較強的梯度強度。因此,梯度是用于分割電極的主要信息,即使它可能在電極邊界的一側較弱,對噪聲敏感。通常情況下,梯度圖的強度范圍較大,很難選擇一個閾值來區分目標和噪聲。本小節首先利用電極的形狀先驗,基于直方圖選取了3 個閾值,得到對應的二值圖像,然后使用種子生長方法來選擇目標邊緣點。具體步驟闡述如下。

圖5 不同方法的分割結果。從第一行到最后一行依次是:測試圖像,標簽,分別來自DCT-T,CED,DCT-SVM,FCN和PM的結果Fig.5 The segmentation results of different methods. The raw images,ground truth,and segmentation results obtained by DCT-T,CED,DCT-SVM,FCN,and PM are shown from top to bottom
可由Sobel 算子計算得到兩個方向的梯度圖Ix和Iy,再經過一個5 × 5 的高斯核模糊后,對Ix和Iy使用非極大值抑制(non-maximum suppression,NMS)來細化邊緣。接下來以Iy為例,闡述一種基于直方圖的閾值選擇方法。首先將Iy歸一化到0~255范圍內,計算其直方圖Hy,再將Hy轉換到0~1的概率范圍。Hy的累加和Asy,由下式計算

其中i= 0,1,…,255. 給定一個比例系數p,找到滿足以下條件的閾值T

這個方法的意義是選擇一個大于100×p%的點的閾值,因為梯度越大,就越可能是目標的邊緣點。Iy代表的是水平的邊緣,而無缺陷電極是矩形的。因此對于一個h×w圖像,在理想情況下,大約有2 ×w水平邊緣點屬于電極的水平邊界。因此,可設計Iy的比例系數p為

類似地,Ix的比例系數p定義為

我們設置i= 2,3,4,j= 3,4,5,分別得到Iy和Ix各3 個閾值。從高閾值到低閾值,從Iy得到3 個二值圖像,分別記為By1,By2和By3. 從Ix得到3個二值圖像,分別記為Bx1,Bx2和Bx3. 使用“按位或”操作將兩張對應的二值圖像進行組合,再使用3×3核的形態學閉操作來連接小間隙,用公式可表達為:

其中∪表示按位或操作,·表示形態學閉操作,K是一個3 × 3 的結構元素。結果如圖6(a)-6(c)所示。G1由最高的閾值獲得,表示梯度最強的邊緣點。G2和G3由更低的閾值得到,包含更多的目標點和噪聲點。
為了進一步減少背景的面積,使用G1來獲得一個掩模。具體來說,G1的每一列中,pf和pl分別對應第一個和最后一個白點的位置。令pf和pl之間的點為1,其他的點0,結果記為Mc. 對G1中的每一行進行相同的操作,得到Mr. 二者的并集,Mor=Mc∪Mr,即為需要的掩模。以上3 個掩模如圖6(e)-6(g)所示。Mor可以用來消除G2,G3中的噪聲點:

圖6 邊緣分割算法中的一些中間變量Fig.6 Some variables in the edge segmentation algorithm


其中·表示點乘運算。
本文采用一種基于種子生長的方法來選擇目標邊緣點。經典的種子生長方法,由種子點和候選點進行,任意與種子點連通的候選點都會被選中,結果Gsc可表示為

其中Gs是種子點掩模,Gc是候選點掩模,⊕表示種子生成過程。依次進行以下的步驟

其中G123是最終的邊緣分割結果,顯示在圖6(d)中。本文的目的是得到電極的區域,而不是零散的邊緣點,因此下一節將會描述使用邊緣點生成閉合區域的方法。
用邊緣分割方法得到邊緣圖后,下一步是為G123繪制封閉輪廓??蓪⑤喞譃樯稀⑾隆⒆蟆⒂?個部分,分別表示為Pu,Pd,Pl和Pr. 下面介紹一種利用標志F修改曲線C的方法。如果在一個連續的區間,F(i) = 1,比 如i=a1,a2,…,ak,則 區 間 兩 端 的 相 鄰 點C(a1- 1),C(ak- 1) 可 以 通 過 一 個 函 數f(C(a1- 1),C(ak+ 1) )計算替代值,來取代曲線C在這個區間上的值。在圖7的例子中,則使用了線性插值函數來修改曲線C。

圖7 使用標志修改曲線的例子Fig.7 An example of modifying curve with flag
以Pu,Pd為例,它們分別記錄了G123中每一列第一個和最后一個白點的位置,兩個白點分別記為pf,pl. 如果pf,pl相連,即二者之間的點全是白點,標志fud被設為1,否則設為0. 這個標志代表某一側輪廓點丟失。利用標志fud和上述的曲線修改方法,Pu使用最小值函數修改,Pd使用最大值函數修改。
為了消除Pu中由于噪聲引起的劇烈跳變,將Pu與k=[-1,2,- 1]進行卷積運算,可得

其中?表示卷積運算。當gu(i) >Tu時,對應的標志fk(i) = 1,否則為0,其中Tu是一個閾值,在實驗中設為10. 類似地,使用線性插值方法來修改Pu. 此外,漏邊緣會導致Pu產生間隙,可以采用上述的處理方法進行平滑處理,即找到間隙位置,用線性插值方法更新Pu. 上述處理的結果如圖8所示。

圖8 四部分輪廓處理前后Fig.8 Four parts of contours before and after processing,(left)up and down parts;(right)left and right parts
使用相同的步驟來獲得和處理Pl和Pr. 然后令Pu和Pd之間的點為1 生成掩模M1,令Pl和Pr之間的點為1生成掩模M2。計算二者的交集

其中∩表示“按位與”運算,M3表示最后的結果,代表電極的區域,顯示在圖6(h)中。
為了評價所提出的電極分割算法的性能,設計了一種利用上述步驟的分割結果M3來判斷電極上是否存在缺陷的方法。無缺陷電極為矩形,可以根據其形狀判斷電極是否有缺陷。標準的寬度和長度可以用無缺陷電極計算獲得??蓪⑵溟L寬表示成一個區域范圍,即ws=[wmin,wmax]和hs=[hmin,hmax]. 這里wmin=31,wmax= 41,hmin= 88 和hmax= 98. 通過形態學處理剔除M3的小尖峰和小凹坑,然后計算其包圍矩形的尺寸hb×wb. 如果hb或wb超出hs或ws的范圍,則說明電極有缺陷,否則需進一步判斷。在本文中,所有二值圖像白色部分的值等于1. 分別計算M3在包圍矩形中,在X和Y方向上的“和”投影(即為每行和每列求和),結果分別記為Sω和Sh. 然后定義兩個閾值

其中Ta設為5. 對于Sω或Sh,如果在一個連續的區間,有Sω<Tω或Sh<Th,并且這個區間的長度大于一個閾值Tb,則認為該電極有缺陷。在實驗中取Tb= 7.Ta和Tb是兩個控制缺陷大小的參數,即只有尺寸大于Ta×Tb的缺陷才會被檢測到。
在本節中,設計了一個實驗,通過與四種著名的方法對比來評估本文方法的分割精度。所有的算法都是由Python語言編寫,運行在2.9 GHz Intel Core i5處理器和8 GB內存的筆記本電腦上。
測試圖像由第1.1 節所述的粗定位算法獲得,圖像大小相同,為158 × 218。事實上,大部分電極只要使用簡單的閾值法就能分割。為了評估所提出方法在復雜情況下的性能,選取至少包含以下情形之一的100個樣本作為數據集:光照不均勻、存在強光污染、電極邊界弱以及電極灰度與背景灰度相似。然后在選取的樣品中隨機添加漏印和漏漿這兩種人工缺陷。漏印使得電極缺失一部分,而漏漿使得電極多出一部分。每個樣本的像素級標簽掩模由人工畫出??紤]到涉及學習方法,這里選取50幅有缺陷圖像和50幅無缺陷圖像作為測試集,訓練集中包含25幅有缺陷圖像和25幅無缺陷圖像。實驗中的所有方法都使用測試集進行性能評估。
實驗中將四種方法與本文提出的方法進行了比較,并對傳統方法進行了一些預處理操作。將本文提出的方法縮寫為PM(proposed method)。為了克服光照不均的問題,可以采用離散余弦變換(DCT)[9]重構背景。第一種方法是OTSU 閾值法[6]加DCT,記為DCT-T. 第二種方法是Canny[8]的邊緣檢測方法(記為CED),其兩個閾值的選取方法與1.3節相同,預處理和后處理操作與PM相同。聯合DCT和文獻[10]中的支持向量機(SVM)分類器是第三種方法,記作DCT-SVM. 全連接網絡(FCN)[19]是第四種方法。
采用3 個指標來評價方法的性能,分別為假陽性率(false positive rate,FPR)、假陰性率(false negative rate,FNR)和平均絕對誤差(mean absolute error,MAE),定義如下

其中FP為TP分別是實驗中的假陽性和真陽性,FN和TN分別為假陰性和真陰性。電極區域被定義為陽性,背景區域被定義為陰性。比如,一個屬于陽性的像素,被某種方法判別為陰性,則稱為假陰性,其他定義以此類推。FPR 是實驗中陰性像素被錯判為陽性的比例,FNR 則是陽性像素被錯判為陰性的比例,MAE 是錯分類的像素占所有像素的比例。使用對比方法的預測結果和樣本的像素級標簽計算以上3 個指標,可以評價方法的像素級分割精度。另外,分割是為了識別缺陷,若是一個方法的像素級精度略低,但它能準確表示出樣本是否有缺陷,則這個方法也是優秀的。因此,利用1.5節的缺陷檢測方法,判斷每個測試樣本是否有缺陷。根據檢測結果,計算以上3 個評價指標??偟膩碚f,3 個評價指標會以兩種形式計算,一種是像素級形式(pixel-wise form),用來評估分割方法的像素級精度,另一種是樣本級形式(sample-wise form),用來評估方法識別缺陷的能力。
圖5 中展示了10 幅測試圖像及不同方法對應的分割結果,表1 中展示了不同算法總體性能的3 個指標,包括像素級形式和樣本級形式。在3個指標之中,MAE 是最能體現圖像分割總體性能的指標。從表1可看出,DCT-T 方法的效果最差,MAE 值最大,因為閾值方法只利用了灰色信息。當目標的灰度值與背景相似,或邊界具有較強的灰度強度時,利用灰度信息很難將目標與背景分離。DCT-SVM 的效果也較差,因為該方法將每個超像素視為一個待分類的對象,用灰度值、一階導數和二階導數的協方差作為特征向量,遺憾的是,目標的灰度值或梯度強度不穩定或與背景相似,無法訓練出滿意的SVM 分類器。CED 方法采用邊緣信息對目標進行分割,但CED 方法的兩個閾值的選取不夠穩健,無法得到滿意的結果。本文提出的方法與CED 算法都是基于梯度的分割方法,它們的區別是,CED 使用雙閾值,而PM 使用3個閾值,同時利用最高閾值生成的二值圖像,計算了一個初始掩碼,將目標限定在這個掩碼內,有效消除了掩碼外的噪聲干擾。而CED 方法并沒有利用高閾值得到的二值圖像。FCN 在像素精度方面似乎比PM 有更好的結果,而從樣本級的指標卻得到了相反的結論。從圖5也可以看出,FCN并不能很好地識別缺陷的區域。圖5(a)中第一個樣品的FN 和FP 如圖9 所示。對于FCN,FP 和FN 分別為370 和42,錯分類像素數為410;對于PM,FP 和FN 分別為233 和117,錯分類像素數為350. 二者有著相近的像素分割精度,但從分割結果的形狀來看,PM 的結果的形狀比FCN 的更接近真實標簽。這就是采用本文1.5 節設計的檢測缺陷方法來計算樣本級形式的指標的原因。盡管FCN在像素形式下的MAE較低,但在樣本形式下的MAE較高,這意味著它無法以準確的形狀分割電極。另外,可以看出,PM在像素級上的FNR比FCN 高。其原因是,電極具有較厚的邊界,從而導致出現雙邊緣,NMS 操作可能刪除其中一個,即當刪除外緣時,則得到的區域面積變小,FN 增大。從樣本形式計算的指標來看,PM 的MAE 最小,這意味著PM 的性能優于FCN。總的來說,PM的性能優于實驗中用于對比的四種方法。

圖9 圖5(a)第一個測試圖像分別來自FCN和PM的FP和FNFig.9 FP,FN from the FCN and PM of the first sample in Fig.5(a)

表1 兩種形式的評價指標Table 1 Evaluation metrics of two forms
本文設計了一種基于機器視覺技術的太陽能電池背面電極分割算法。首先,采用投影法和模板匹配法對電極進行粗、精定位,減少了后處理的運行時間;然后根據形狀先驗,設計3個閾值,生成3個二值邊緣圖。采用種子生長法得到目標邊緣點。此外,還采用了一種將邊緣點轉換為區域的方法。為了評價所提出算法的性能,進行了實驗,與四種著名的算法在電極分割任務中的性能進行對比,從實驗結果看,該算法總體上優于對比的四種算法。但該算法也存在一些不足,比如區域輪廓不夠光滑,雙邊緣導致的FN增大,導致分割結果不夠準確。因此,改進所提出的算法或尋找一種新的方法來解決上述問題將是筆者下一步的工作。