論文名稱:Defect detection in patterned wafers using anisotropic kernels

作者:Maria Zontak and Israel Cohen

期刊名稱:Machine Vision and Applications

刊號頁碼:February 2010, Volume 21, Issue 2, pp 129-141


 閱讀文章前,建議先至 Google 搜尋下載此論文。

 

這篇論文屬於影像處理研究領域中的瑕疵偵測,

偵測的應用對象是半導體晶元(Wafer)

如果大家不懂什麼是 Wafer 的話,可以點一下上面的超連結,

看看 Wafer 的照片。

不過,這篇論文研究的影像,來自於電子顯微鏡下的 Wafer,

所使用的電子顯微鏡有些特別,叫做掃描式電子顯微鏡,

英文是:Scanning Electron Microscope(SEM)。

SEM 拍出來的照片可以到 Wiki 看一下,挺特別的。

 

在晶元的製造過程中,有各種造成瑕疵的原因,

例如雜物掉落、印刷失誤、蝕刻異常。

本論文想要使用影像處理的方式,自動檢測出瑕疵。

作者採用的方法,是影像比對法。

簡單說,就是拿一張沒有瑕疵的晶元影像,

然後再拿一張待測的晶元影像,

兩者互相比較,如果相似,表示待測影像內沒有瑕疵,

如果有些位置不太相似,就表示待測影像內存在瑕疵。

 

在影像處理基本課程裡,大家可能學過「影像相減」,

兩張影像相減之後取絕對值,大的數值表示差異大。

用影像相減法來偵測瑕疵可行嗎?這要看影像的性質。

以晶元的 SEM 影像來說,每次製造的晶元長得都不太一樣,

可能在微米、奈米等級有些許差異。

對於半導體製造來說,這些許差異不影響晶元品質,

所以在晶元影像判讀上都會表示正常。

然而對於「影像相減法」來說,

該方法會把所有差異都找出來,導致誤報(False Alarm);

又假如瑕疵不甚明顯時,則影像相減後的結果,

可能無法分辨是晶元的差異還是瑕疵的差異,

導致漏報(Miss)。

因此,本論文的重點價值就在於它的影像比對方法,

可以接受晶元本身有些許的差異,又可以找出瑕疵。

 

下面開始介紹論文所使用的瑕疵檢測方法。

假設無瑕疵的影像,稱為參考影像 g,

要檢測的影像,稱為待測影像 f。

怎麼知道影像中某一個點 p 是否相似呢?

作者認為,不能只看 p 這個點,

而要看點 p 附近的整個區域 。

也就是說,如果 g(p) 附近和 f(p) 附近相似,

那麼就判定兩張影像在 p 點是相似的。

這個觀念其實和平滑化(Smoothing)有些相同。

只是作者不採取平滑化後直接影像相減,

因為在電子顯微鏡底下,影像像素可能代表著微米,

以半導體製程來說,可能連一個像素的瑕疵都要抓出來。

如果對原始影像直接採用平滑化處理,

將把一個像素的瑕疵給消除掉了,結果瑕疵檢測不出來。

因此,是否要做影像平滑化處理,還是需要看應用對象。

 

作者比較 g(p) 和 f(p) 是否相似的方法如下。

首先以 p 為中心,

在參考影像 g 上複製一個大小為 s 的區塊。

因為待測影像與參考影像可能有些許誤差,

所以要檢查 p 附近的所有 r 個位置。

因此,以 p+r 為中心,(共有 r 個不同的中心點)

在待測影像 f 上複製出 r 個大小為 s 的區塊。

 

我在這邊解釋一下作者可能的思路。

傳統影像處理的影像相減法,只有比對點 p。

稍微進步一點,可能把 p 為中心的區塊拿出來比。

作者的想法是,參考影像拿出以 p 為中心的區塊,

待測影像拿出 p-2、p-1、p、p+1、p+2 ...為中心,

把 p 附近的區塊都拿出來,共 r 個區塊,

都拿來和參考影像的區塊比較。

待測影像的 r 個區塊,分別和參考影像的區塊比較,

比較完之後會得到 r 個區塊比較結果,

再把這 r 個比較結果加總起來。

這就是參考影樣和待測影像在點 p 上的比較結果。

 

觀念講完,還沒講到的部分是「區塊如何做比較」。

作者分成兩個步驟,首先是把區塊的差異當成向量,

計算向量的長度;然後把該長度丟入一個指數函數裡。

下面就直接舉例。假設區塊的大小是 2×2,

參考影像的區塊是:

1 2

3 4

待測影像的區塊是:

9 8

7 6

我們先把它們兩兩相減,得到:

(9-1)  (8-2)

(7-3)  (6-4)

等於

8 6

4 2

然後,再把這差異值取平方,加總起來

8*8 + 6*6 + 4*4 + 2*2 = 120

再開根號,得到  a = sqrt( 120 ),

這個數值 a 就是向量的長度。

 

然後,把這個數值 a 丟到指數函數裡,

計算出區塊的比較值 c:

c = exp (- (a / e) )

上面公式裡的 e 是控制參數,要由使用者去調整。

 

回憶一下前面,我們有 r 個區塊,

所以要算出 r 個比較值。

把這些比較值加起來,

就是兩張影像在位置 p 的相似度。

相似度低的點,就判定是待測影像的瑕疵。

 

講到這裡,已經把整篇論文的方法講完了。

不過,如果大家手邊正拿著這篇論文,

比照一下我所講的話,可能會覺得有些疑問。

 

第一個疑問。

作者的方法,是把 r 個比較值正規化之後,

乘上 r 個點所對應的像素值 f(p+r),

加總得一個預估的待測像素值 f'(p),

如果 f'(p) 的數值接近 0,則 p 點判定為瑕疵。

為什麼我省略了預估像素值的步驟,

只使用 r 個比較值呢?

 

原因很簡單,因為不合理。

大家想像一下,如果待測影像整體的亮度偏暗,

那麼無論區塊比較值 c 的大小如何,

跟待測影像的像素值相乘的結果,依舊是小的。

然而,區塊比較值 c 如果大,表示兩區塊相似。

因此,作者的演算法,畫蛇添足了。

 

第二個問題。

作者的論文方法明明寫了好幾頁,

為何我講得很短又簡單?

 

我必須說,這就是作者能投稿期刊論文的功力。

文章裡有太多灌水,許多公式有推導與計算,

但是真正跟檢測方法有關的部分卻很少,

事實上,作者的方法就是這麼簡單。

但是作者能把方法講得很難,論文寫成你看不懂。

我用 Matlab 實做出作者的演算法,

用不到 30 行程式碼,大家說簡單不簡單。

 

第三個問題。

論文上有一個很複雜的東西,叫做濾波器向量,

d-vector filters G = (g1, g2, ..., gd)

把影像中某個點,以 d 種濾波器做旋積計算。

怎麼在我的介紹裡面沒講到這個?

 

因為作者根本沒有用到旋積啊!那是假象!

作者的濾波器向量,它真正有採取的動作,

其實就只是把區塊內的像素一個一個取出來,

也就是把 2 維矩陣資料,排成一維向量資料。

例如:

1  2

3  4

變成

1  2  3  4

就是這麼簡單。

但是作者厲害的是,他可以寫成向量濾波器,

然後還連續引用兩篇參考文獻 [16] 和 [30],

說他這組濾波器是採用別人的論文設計,

好像一副很了不起的樣子。

其實說穿了,根本沒什麼。

 

最後一個問題。

論文的題目上有一個單字 Kernel,怎麼我沒提到?

 

喔~其實有的,Kernel 就是指數函數的那玩意。

按照 Kernel Function(核函數)的定義,

它就是一個二元的向量函數 H(v, v')。

只是,作者在此使用的 Kernel 很簡單,

令 a = sqrt( vTv' ),則作者的 Kernel 為

H(v, v') = exp ( - (a / e) )

我不禁要讚嘆,作者用艱澀名詞介紹簡單數學的實力。

 


 

論文的介紹到此結束。下面是個人的一些心得。

首先,本論文的方法雖然簡單,

但是作者提供了一個很複雜的數學框架,

讓後續研究者能容易抽換演算法的部分流程。

 

什麼框架呢?第一是 Kernel Function,

雖然作者採用的公式很簡單,

但是現有的核函數有幾十種,

有線性的、有指數的、有複數的、有雙曲線的

每一種效果都不一樣。

對於後續研究者來說,可以嘗試不同的核函數,

搞不好可以得到比作者的實驗更好的成果。

 

第二個框架是向量濾波器。

雖然作者只是單純地把每個點擺成一維資料,

沒有做任何處理。

但我們不妨可以嘗試修改一下濾波器內容,

如果每個點的旋積濾波器,是 Sobel 運算子,

那麼經由計算後得到的一維資料,

就不是原本的影像資料,而是一堆邊資訊。

對於後續研究者來說,可以嘗試不同的濾波器。

 

從影像處理的演算法來說,作者的方法看似平凡,

但從數學的角度來看,作者提供一個很棒的框架。

我覺得這個框架是論文的精華。

 

我們國內關於影像處理的碩士論文很多,

每個碩士生都有很棒的構想與創意。

但多數是見招拆招,看一個問題就設計一個解法。

也許可以多多思考,如何設計一個框架,

讓演算法的各個步驟可以容易替換。

 


 

李侑青,資訊工程博士

影像處理, Image Processing, 瑕疵檢測, Defect Detection

arrow
arrow

    李阿青 發表在 痞客邦 留言(0) 人氣()