1. 程式人生 > >磨染的初心——計算機視覺的現狀(3.1):影象分割

磨染的初心——計算機視覺的現狀(3.1):影象分割

##磨染的初心——計算機視覺的現狀(3.1):影象分割 **為了通過材質、形狀、結構識別目標,對影象進行分割應該是必然的選擇**。在這一點上計算機視覺研究者們算是勉強達成了共識,影象分割甚至被很多研究者列為計算機視覺的基本任務之一了。很多影象分割演算法被提了出來,歸納起來可以分為基於閾值的方法、基於聚類的方法、基於區域的方法、基於圖割的方法、活動邊界模型和水平集、基於卷積神經網路的方法。 基於閾值的方法裡,有全域性一個閾值的,也有對影象不同區域使用不同閾值的。此類方法的關鍵在於確定閾值,然而**對於大多數影象即使遍歷所有的取值也無法找到實現合理分割的閾值**,因此該演算法常用於符號識別、指紋識別和分割遙感領域中的各種指數影象(水體指數、植被指數、乾旱指數、熱紅外影像)。 凡是認真思考或者親身嘗試過的,都會承認基於聚類的方法的分割結果難以令人接受。**所有的聚類演算法都直接或者間接假設了類別內部的樣本密度高於類別邊界的樣本密度**。觀察過一些影象的直方圖後就會發現,**畫素在像元值空間的分佈形狀通常都類似鍾型曲線(只有一個凸起),也就是說按照聚類演算法的假設應該將全部畫素聚為一類**。即使同時使用多個影象通道,這種情況也沒有什麼改觀。沒有或者難以使用空間資訊是基於聚類的方法的直接缺陷,**導致分割結果形狀複雜、越過顯而易見的邊界**。通常基於聚類的方法都作為其他演算法的預處理步驟,在影象處理領域用於壓縮顏色數量。 基於聚類的方法中有一個叫做SLIC的超畫素分割演算法與基本的聚類演算法有較大的不同,首先在影象上均勻的撒上種子點,然後以一定的半徑執行KMeans聚類,所使用的距離度量方法考慮到了空間資訊。該演算法與方格網形劃分超畫素相比有很大的優勢,但是由於聚類演算法的用於分割的天然缺陷仍然會導致超畫素越過顯而易見的邊界。**如果目標是為了保持形狀的準確性,SLIC並不是很好的預處理選擇**。 基於區域的方法目前包含種子區域生長、區域分裂和合並、分水嶺。種子區域生長法的關鍵在於種子點的選擇、相似性的度量、生長規則,其中相似性度量最為關鍵。常用的相似性度量方法有像元值、顏色、紋理,相似性的度量也是區域分裂和合並法的最關鍵所在。區域分裂和合並的另外一個關鍵是分裂和合並的機制。分水嶺演算法通常應用在梯度圖上,將梯度值看作高程值,設想從高程值的區域性極小值處向外湧水,整幅圖上水位升高的速度是一樣的,在兩處湧水相遇處修建堤壩。當水位上升至最高點後,所有畫素點都被淹沒,所有的堤壩形成對影象的分割。**分水嶺演算法對微弱的邊緣也有很好的響應**,因而也會導致過分割。**對於保持形狀來說,分水嶺加區域分裂和合並應該還有較大的提升空間**。 基於圖割的方法是將影象分割轉換為圖的最小割問題,**關鍵在於設定邊的權重,這只不過是相似性度量的另一個稱呼**。因此基於圖割的全圖分割方法並不會比種子區域生長、區域分裂和合並更好;此外最小割是NP問題,難以最優求解。基於圖割的方法中值得一提的是Graphcut和Grabcut,該演算法用於分割前背景,需要人工粗略標註部分背景和前景。這兩個演算法的直接意義在於影象處理領域的互動式前景提取。 **活動邊界模型和水平集的用處同樣在於互動式前景提取**,需要人工提供初始前景範圍曲線,然後讓範圍曲線在根據影象資料得到的能量函式的作用下演化,使其向前景邊緣逐漸逼近,最終找到前景的邊緣,在達到前景邊緣時能量函式的取值最小。活動邊界模型直接對範圍曲線進行演化,而水平集則根據初始範圍曲線及影象資料構造出三維曲面,通過三維曲面的演化以及取等值線的方式間接實現範圍曲線的演化。前背景的邊緣處一定具有較大的梯度,因此能量函式最重要的構造依據就是影象的梯度,僅依靠梯度會陷入區域性最優,一般還會加入曲線的曲率和其它先驗知識。**活動邊界模型和水平集方法不過是希望通過曲線和曲面的傳遞作用以及其它先驗突破梯度的區域性極大值**,在前景分割上的表現不會比基於圖割的方法更好,事實也是如此。 基於卷積神經網路的方法包括語義分割、例項分割、全景分割三種,歸根到底都是通過已知的樣本資料建立畫素及其一定範圍內領域的畫素到例項或者類別的對映。得益於神經網路能夠模擬任意函式的優勢,在大量樣本資料參與訓練的條件下所建立出來的對映模型具有較高的準確性。然而**機械的對映模型的缺陷也是顯而易見的,遷移能力(只能分割貓的網路不能分割狗)和泛化能力(只能分割白貓的網路分割不了花貓)幾乎沒有。另外由於對映模型過分複雜,輸入資料的輕微改變也會導致無法預料的錯誤(畫素攻擊)**。 以上就是影象分割的所有進展,凡是有過嘗試的人都會承認,即使人類也很難從目前影象分割的結果中提取出形狀和結構特徵。不禁要問,**在沒有識別出目標的情況下,到底能夠分割到什麼程度?目前影象分割演算法是否還能繼續提升**?就我個人的感覺,目前的進展還未達到影象分割的極限,雖然不可能達到人類的水平,但是仍然有很大的提升空間。關鍵的問題是**朝著什麼方向去提升,也就是應該用什麼指標來評價影象分割能力的提升**? 目前影象分割演算法的評價指標都是基於IOU的,**IOU直接強調的是面積,而面積對於圖斑來說是區分度非常差的特徵**。對於很多形狀複雜的自然目標來說,IOU大但是形狀和結構則相去甚遠,因此基於IOU的評價指標對於強調形狀和結構沒有任何價值。但是目前並沒有形狀和結構特徵的描述方法,彷彿陷入了進退兩難的境地。其實不難看出,如果邊界是準確的,那麼將準確的邊界連線起來就能形成準確的分割。邊界的少量錯位是在所難免的,因此在評價邊界的準確性時需要允許一定程度的錯位。但是若果邊界有缺失,則無論如何也無法恢復形狀和結構了。至此,**分割演算法的一項評價指標就呼之欲出了——邊界缺失率。與之對應的另一項評價指標則是——邊界冗餘