[圖像處理] 進階二值化閥值處理技巧 (下)

Ben Hsu
May 11, 2023

--

Otsu 是針對整張圖片的二值化閥值選擇方法,但當圖像出現汙染時,Otsu 不容易得到好的結果,需要先對圖像進行預處理,再進行二值化閥值篩選。本文為系列文下篇,將以實際案例比較自適應閥值與Otsu的差異。而自適應閥值的原理是使用高通空間濾波器,本文將討論自適應與Sobel、Laplacian濾波器的關係與結果差異。

還沒看過上篇的可以先看這裡

目錄

  1. Otsu 的自適應閥值實例應用
  2. 自適應閥值與邊緣分割的關係
  3. 結論
  4. Reference

1. Otsu 的自適應閥值實例應用比較

Otus的二值化分割適用於圖片沒有雜訊與陰影的情況,而自適應閥值則適用於圖像有漸層、陰影的情況。本節使用幾個範例,比較Otsu全域的切分方法與自適應的局部閥值的效果差異

圖1(a) 是拍攝書本內頁的照片,畫面上有陰影;圖1(b) 以Otsu進行分割,字體無法辨識;而以自適應閥值,可以解決陰影問題,分割出的字體非常清楚,如圖1(c)。

圖1. 由左至右為 (a) 陰影書頁;(b) 以Otsu二值化結果;(c) 以自適應閥值處理結果

圖2(a) 是圓形加上灰度值±50雜訊,圖2(b) 使用Otsu方法邊緣輪廓的切割不完全;但 圖2(c) 自適應閥值因為雜訊影響完全無法分割。需要先以中值濾波再進行分割,。

圖2. 由左至右為 (a) 加入±50雜訊圓形;(b) 以Otsu二值化結果;(c) 以自適應閥值處理結果

圖3(a) 是一張招牌帶眩光的照片;此時以Otsu進行分割,招牌字體無法辨識;而使用自適應閥值,字體非常清楚,但建築的輪廓也被提取了出來。由於這張圖片的字體亮度很高,如果想分割出字體,可以訂定一個高閥值進行分割 (如灰度值220),就可以得到好的分割效果。

圖3. 由左至右為 (a) 炫光招牌;(b) 以Otsu二值化結果;(c) 以自適應閥值處理結果

圖4(a) 是星空圖片,顏色可以分為黑、中間偏深藍的星雲、偏亮的星星;圖4(b) 以Otsu進行分割,由於顏色不只有兩個分布,所以優先以星雲為基礎分割了出來;而 圖4(c) 使用自適應閥值,可以較好的將星星分割出來。

圖4. 由左至右為 (a)星空;(b) 以Otsu二值化結果;(c) 以自適應閥值處理結果

圖3(b)、4(a) 使用單閥值Otsu失敗的原因在於圖像圖像有多的峰值。這時使用多閥值的Otsu,較能有效分割亮區,可以看到圖5.的切割結果,使用3個閥值將圖像較亮顏色的區域切分開來。

圖5 將圖3 (a)、4(a),已多閥值Otsu切割結果

2. 自適應閥值與邊緣分割的關係

前一節提到自適應閥值的方法,原理是在每個區域的平均數作為決定閥值的基礎,並設定一個偏移量,而這種使圖片銳化的方法,就是高通空間(銳化)濾波器 (high-pass filter);而自適應閥值的方法,就是將濾波器過濾後的結果,進行二值化。

常見的高通濾波器像是梯度與拉普拉斯,這兩個方法對應一階微分與二階微分,可以近似於一階與二階差分 (一階差分就是灰度值相減;二階差分是一階差分的差分),其與自適應閥值的方法類似。這兩個方法常用於邊緣檢測,下面比較三種方法的差異:

圖6. 為招牌圖在不同方法處理結果,三種方法的結果都可以大致抓到建築的輪廓,但自適應閥值的輪廓更深邃一些 圖6(a);圖7 為星雲圖,三種方法的效果都挺好的,但梯度、拉普拉斯的算法提取的更為乾淨。

圖6. 由左而右依序為 (a)自適應閥值處理結果;(b) 梯度處理;(c) 拉普拉斯處理
圖7. 由左而右依序為 (a)自適應閥值處理結果;(b) 梯度處理;(c)拉普拉斯處理

圖8(a) 是模擬螢幕出現亮點的狀況,圖像的左上角與右下角分別有一個亮點。這是一個適合使用高通濾波器對圖片進行銳化,再進行二值化篩選的例子。但特別的是,這張圖片雖然色調看似均勻,但將圖片調整色調對比並放大後如圖8(b) (此為圖左上角),會發現圖像是由直線與橫線交錯組成。

圖8 (a) 螢幕亮點;(b) 調整對比後的清晰圖

將圖 9 用三種不同方法進行二值化。圖9(a) 自適應閥值將亮點很好的分割;但圖9(b) 梯度、圖9(c)與拉普拉斯,卻將直向與橫向的線條顯示出來了。自適應閥值在帶有線條的圖像中,效果較梯度與拉普拉斯來的好。

圖9 由左而右依序為 (a)自適應閥值處理結果;(b) 梯度處理;(c)拉普拉斯處理

產生這樣結果的原因在於,自適應閥值使用的濾波器,是考慮中心點九宮格內的所有灰度值,如圖10(a);而 圖10(b) 的梯度、圖10(c)拉普拉斯(如圖16d. )則是考慮九宮格內的直向、與橫向關係,造成直向與橫向的特徵被強化。

註:拉普拉斯於 openCV 使用的是無對角線的濾波器版本。

圖10. 不同算法使用的濾波器 (a) 自適應閥值;(b) 梯度 Y方向;(c) 拉普拉斯

最後來看一下,三種方法對雜訊圓形 (圖2(a))的切割效果,可以看到三種方法的效果都不佳。原因在於這三種方法都是高通濾波器,但對於雜訊處理,較佳的方法是低通濾波器,而第一節提到的中值濾波器就是一種低通濾波器。關於高通、低通空間濾波器,之後再開一篇來講述。

圖11. 不同算法使用的濾波器 (a) 自適應閥值;(b) 梯度;(c) 拉普拉斯

3. 結論

Otsu的自動化選擇閥值是非常方便的,但從上面範例可以看到,Otsu並不能適用所有情況。當圖像有些許雜訊、或是有多個分布,需要先對圖像經過前處理,再使用Otsu進行二值化閥值的篩選。

當圖像有雜訊時,可以先使用低通濾波器進行模糊化處理,再進行二值化;當圖像有漸層、陰影時,可以使用高通濾波器進行銳化處理,再進行二值化。

4. Reference

  1. Gonzalez, Rafael C. Digital image processing. Pearson education india, 2018.
  2. OpenCV:Sobel operator
  3. OpenCV:Laplacian operator
  4. Wiki:Discrete Laplace operator

--

--