第三章 研究方法
3.3. 稻田區域影像分割
3.3.1. 影像分割演算法使用與比較
本研究使用 scikit-image [50] 所提供之模組,以 2.4. 介紹的分水嶺演算法、
Felzenszwalb 演算法與 SLIC 演算法,比較影像分割出的子區域特性,並在第四章 討論使用不同演算法所分割出的稻田區域有何差異。分水嶺演算法如圖 12 所示,
藉由產生梯度影像將一張影像視為地形圖,再根據給定的閾值 (threshold) 假想該 地形的水平面高度,以此標記盆地所在位置並尋找分水嶺作為影像分割之子區域 邊界。
圖 12 分水嶺演算法
如圖 13 所示,給定不同的閾值會有不一樣的分割結果。本研究經過測試不同 閾值後將使用於實驗中的閾值設定為30。
圖 13 分水嶺演算法使用不同閾值之分割結果
Felzenszwalb 演算法有 3 個可調控參數:scale 的值會間接影響分割的子區域 大小與數量,值越大代表分割出的子區域面積越大且總數量越少;sigma 的值會影 響高斯核 (Gaussian kernel) 大小,用於分割前先對影像進行平滑處理 (smoothing),
值越高代表分割前的影像越平滑;min_size 則是用來限制分割出的子區域最小面 積。本研究將sigma 維持預設值,藉由調整另外兩個參數得到不同分割結果,如圖 14 所示,最後設定實驗所用之參數為:scale = 500,min_size = 3000。
圖 14 Felzenszwalb 演算法使用不同參數之分割結果
至於 SLIC 演算法中的參數,由 n_segments 和 compactness 主導分割結果:
n_segments 可決定所分割子區域大致的總數量;compactness 則會影響分割時顏色 接近度 (color proximity) 與空間接近度 (space proximity) 之間的權重,值越高代 表空間接近度的權重越大,分割出的子區域形狀會越接近正方形。 本研究將 compactness 維持預設值,並設定 n_segments 為 1500,使分割出的子區域大小適 當,能大致分出田埂與稻田的邊界,如圖 15 所示。
(a) 原始影像 (b) 分割影像,n_segments = 1500 圖 15 SLIC 演算法分割結果
產生多個子區域之後,計算每個子區域的顏色平均值並建立區域相鄰圖 (region adjacency graph, RAG),即可藉由閾值,將顏色相近的子區域合併為較大的 子區域 [51]。圖 16 為利用 RAG 與不同閾值合併子區域後的分割結果,由肉眼觀 察最後選擇將此處閾值設為15。
(a) threshold = 10 (b) threshold = 15 (c) threshold = 20 圖 16 利用 RAG 與不同閾值的子區域合併結果
為了方便稱呼,論文中將(1)利用分水嶺演算法(2)利用Felzenszwalb 演 算法與(3)利用SLIC 演算法加上 RAG 子區域合併,三種稻田區域影像分割方 法分別簡稱為Ws、Fz、SL_R。圖 17 為三種方法之影像分割結果,表 2 為產生之 子區域數量。觀察圖 17 與表 2 可看出,使用 Ws 所分割出的子區域數量是最龐大 的,這是由於田埂、秧苗等處像素值的梯度變化相較於泥土區明顯地多,因此在這
些區域很容易被分割為大量且面積非常小的子區域。使用Fz 所分割出的子區域數
量次中,但缺點是無法直接從參數得知最後分割出的子區域數量,需經多次測試才 能決定參數。而使用SL_R 所得分割結果的子區域數量是最少的,其優點是 SLIC 能直接從參數得知大略的子區域數量,從而能計算合併完後的子區域的最小面積 為何。
(a) Ws (b) Fz (c) SL_R
圖 17 使用不同演算法之影像分割結果 表 2 使用範例影像產生之子區域數量
使用方法 Ws Fz SL_R
子區域數量 25103 275 142