映像分割—基於圖的映像分割(Graph-Based Image Segmentation)

來源:互聯網
上載者:User

標籤:image segmentation   電腦視覺   opencv   



映像分割—基於圖的映像分割(Graph-Based Image Segmentation)

Reference:

Efficient Graph-Based Image Segmentation,IJCV 2004,MIT Code

映像分割—基於圖的映像分割(OpenCV源碼)

 

Graph-Based Segmentation 是經典的映像分割演算法,作者Felzenszwalb也是提出DPM演算法的大牛。該演算法是基於圖的貪心聚類演算法,實現簡單,速度比較快,精度也還行。不過,目前直接用它做分割的應該比較少,畢竟是99年的跨世紀元老,但是很多演算法用它作墊腳石,比如Object Propose的開山之作《Segmentation as Selective Search for Object Recognition》就用它來產生過分割(oversegmentation)。還有的語義分割(senmatic segmentation )演算法用它來產生超像素(superpixels)具體忘記了……

圖的基本概念

因為該演算法是將照片用加權圖抽象化表示,所以補充圖的一些基本概念。

是由頂點集(vertices)和集(edges)組成,表示為,頂點,在本文中即為單個的像素點,串連一對頂點的邊具有權重,本文中的意義為頂點之間的相似度,所用的是無向圖

樹:特殊的圖,圖中任意兩個頂點,都有路徑相串連,但是沒有迴路。如中加粗的邊所串連而成的圖。如果看成一團亂連的珠子,只保留樹中的珠子和連線,那麼隨便選個珠子,都能把這棵樹中所有的珠子都提起來。如果,i和h這條邊也保留下來,那麼h,I,c,f,g就構成了一個迴路。

最小產生樹(MST, minimum spanning tree):特殊的樹,給定需要串連的頂點,選擇邊權之和最小的樹。即是一棵MST

本文中,初始化時每一個像素點都是一個頂點,然後逐漸合并得到一個地區,確切地說是串連這個地區中的像素點的一個MST。,棕色圓圈為頂點,線段為邊,合并棕色頂點所產生的MST,對應的就是一個分割地區。分割後的結果其實就是森林。

 

相似性

既然是聚類演算法,那應該依據何種規則判定何時該合二為一,何時該繼續劃清界限呢?

對於孤立的兩個像素點,所不同的是顏色,自然就用顏色的距離來衡量兩點的相似性,本文中是使用RGB的距離,即

當然也可以用perceptually uniform的Luv或者Lab色彩空間,對於灰階映像就只能使用亮度值了,此外,還可以先使用紋理特徵濾波,再計算距離,比如,先做Census Transform再計算Hamming distance距離。

全域閾值à自適應閾值

上面提到應該用亮度值之差來衡量兩個像素點之間的差異性。對於兩個地區(子圖)或者一個地區和一個像素點的相似性,最簡單的方法即只考慮串連二者的邊的不相似度。

,已經形成了棕色和綠色兩個地區,現在通過紫色邊來判斷這兩個地區是否合并。那麼我們就可以設定一個閾值,當兩個像素之間的差異(即不相似度)小於該值時,合二為一。迭代合并,最終就會合并成一個個地區,這就是地區生長的基本思想:星星之火,可以燎原。

顯然,上面這張圖應該聚成右圖所思的3類,高頻區h,斜坡區s,平坦區p。如果我們設定一個全域閾值,那麼如果h區要合并成一塊的話,那麼該閾值要選很大,但是那樣就會把p和s地區也包含進來,分割結果太粗。如果以p為參考,那麼閾值應該選特別小的值,那樣的話,p區是會合并成一塊,但是,h區就會合并成特別特別多的小塊,如同一面支離破碎的鏡子,分割結果太細

顯然,全域閾值並不合適,那麼自然就得用自適應閾值。對於p區該閾值要特別小,s區稍大,h區巨大。

對於兩個地區(原文中叫Component,實質上是一個MST,單獨的一個像素點也可以看成一個地區),本文使用了非常直觀,但抗幹擾性並不強的方法。先來兩個定義,原文依據這兩個附加資訊來得到自適應閾值。

一個地區的類內差異

可以近似理解為一個地區內部最大的亮度差異值,定義是MST中不相似度最大的一條邊。

兩個地區的類間差異

即串連兩個地區所有邊中,不相似度最小的邊的不相似度,也就是兩個地區最相似的地方的不相似度。

那麼直觀的判斷是否合并的標準:

等價條件

    解釋: ,分別是地區和所能忍受的最大差異,當二者都能忍受當前差異時,你情我願,一拍即合,只要有一方不願意,就不能強求。

    特殊情況,當二者都是孤立的像素值時,,所有像素都是"零容忍"只有像素值完全一樣才能合并,自然會導致過分割。所以剛開始的時候,應該給每個像素點設定一個可以容忍的範圍,當生長到一定程度時,就應該去掉該初始容忍值的作用。原文條件如下

    增加項:

其中為地區所包含的像素點的個數,如此,隨著地區逐漸擴大,這一項的作用就越來越小,最後幾乎可以忽略不計。那麼就是一個可以控制所形成的的地區的大小,如果,那麼,幾乎每個像素都成為了一個獨立的地區,如果,顯然整張圖片都會聚成一塊。所以,越大,分割後的圖片也就越大。

當然,可以採用中位元來應對超調,不過這就變成了一個NP難問題,證明見原文

形狀相似

前面提到的用顏色資訊來聚類,修改相似性衡量標準,可以聚類成我們想要的特定形狀。比如我們希望得到很多長條形的地區,那麼可以用聚類後的所形成的地區的面積/周長 + 亮度值的差 衡量兩個子圖或者兩個像素之間的相似度。因為長條形的面積/周長會比較小。

演算法步驟

Step 1: 計算每一個像素點與其8鄰域或4鄰域的不相似度。

如左邊所示,實線為只計算4領域,加上虛線就是計算8鄰域,由於是無向圖,按照從左至右,從上到下的順序計算的話,只需要計算右圖中灰色的線即可。

Step 2:按照不相似度non-decreasing排列(從小到大排序得到。

Step 3: 選擇

Step 4: 對當前選擇的邊進行合并判斷。設其所串連的頂點為。如果滿足合并條件:

(1)不屬於同一個地區;

(2)不相似度不大於二者內部的不相似度。則執行Step 4。否則執行Step 5

Step 5: 更新閾值以及類標號。

更新類標號:將的類標號統一為的標號。

更新該類的不相似度閾值為:。

注意:由於不相似度小的邊先合并,所以,即為當前合并後的地區的最大的邊,即。

Step 6: 如果,則按照排好的順序,選擇下一條邊執行Step 4,否則結束。

結果

Segmentation parameters: sigma = 0.5, k= 500, min = 50.

Sigma先對原映像進行高斯濾波去噪,sigma即為高斯核的

k: 控制合并後的地區的大小,見前文

min: 後處理參數,分割後會有很多小地區,當地區像素點的個數小於min時,選擇與其差異最小的地區合并即。

性質討論

結果雖然不是很好,但有很好的全域性質,結論很有意思,有興趣的可以看看。

首先要說明的是,對於任何映像,始終存在一種分割方法,使得分割的結果既不過細,也不過粗。但是並不唯一

引理

如果step 4 時,,但並沒有合并,即,那麼肯定有一個地區已經分割好了,比如,那麼地區的範圍就不會再有增加,它將會成為最終的分割地區中的一個地區。

Proof:

假設,,由於邊是按照non-decreasing排序,所以剩下的串連的邊的不相似度肯定都不低於,最小的邊都不行,其餘的邊自然是靠邊站了。

不過,原文說只能只有一個已經分割好了,但是我覺得還有一種情況, 並且,那麼這兩個區都應該分好了才對呀。

Not Too fine

分割太細,也就是本來不應該分開的地區被攔腰截斷,但是本演算法是能保證有情人終成眷屬的,絕對不會幹棒打鴛鴦拆散一對是一對的事。

Proof:

反證法:如。本不應該分割,則應該滿足條件。如果分開了,那麼必定存在一條邊導致二者沒有合并,那麼由前面的引理,必定存在一個地區成為最終分割結果的一部分,假設為A部分,再回溯到判斷這條邊的時候,必定有,,從而,由於是按non-decreasing 順序,所以A部分和B部分最小的邊就是,那麼與假設條件矛盾。

Not Too coarse

分割太粗,也就是本應該分開的地區沒有分開。但本演算法能保證當斷則斷,不會藕斷絲連。

反證法:如。本應該分割,則應滿足條件。假設還是 ,為串連A,B最小的邊。如果合并了,由於,而且是non-decreasing 順序,所以在判定邊之前A地區已經形成。如果分割過粗,則判定這條邊時最小的邊滿足,則必定使得二者合并了。和條件矛盾。

等權邊處理先後次序的影響

如果兩條邊,的權值相同,那麼排序時候,誰排前頭,誰落後面有影響嗎?結論是木有。

Proof:

Case1:,串連的地區相同,即,串連的都是地區,那麼它倆誰在前面都沒關係。

Case2:,串連的地區完全不同,比如串連地區,,串連地區,那麼誰先誰後,都不影響是否合并,也不影響是否合并。

Case3:串連,串連

Case3-1:在先,在後,並且,使得合并,交換二者處理順序,先處理,後處理。如果不合并,那不影響合并;如果合并,那麼合并後的,照樣合并。

Case3-2:在先,在後,並且,不合并,交換二者處理順序,先處理,後處理。如果是。那是否合并,都不會使得合并;如果,那同樣也有,同樣也沒影響。

補充:彩色圖片

對於彩色圖片,上文是將R,G,B作為距離,整張圖片只進行一次分割,原文說對每一個通道都進行一次分割,最後對結果取交集,也就是說圖片中的兩個點要劃分到同一個地區,則在R,G,B三個通道的劃分結果中,它倆得始終在同一個地區。原文說這樣效果更好……不過他的程式是採用一次分割。

Nearest Neighbor Graphs

前文是只用了空間位置來構件圖的串連關係,缺點是明顯的,空間不相鄰,色彩完全一樣也白搭,於是中間稍微有斷開都會分成多個部分。於是另一種更為平等的策略是二者一塊考慮,先映射到特徵空間,再構建圖。此時有串連關係的就不一定是4/8鄰域了,由於有對邊,因此如果考慮所有邊的串連關係的話,太恐怖了!原文是對每個像素點找10個歐氏距離最近的點即10最近鄰,構建圖,當然,另外一種方法不是固定鄰居數目,而是限定距離範圍。


那麼類內距離的解釋就和直觀了,類內最短的距離,那麼會以這條邊為半徑,在特徵空間構成一個超球體,不過會和別人有相交。

同樣還是兩個類直接的最短距離。

找10-NN也是相當累的是,原文採用近似演算法ANN《Approximate nearest neighbor searching》來找10近鄰,快。

剩下的和上面一樣,但是有一點我沒明白,就是的更新,比如,肯定是用綠色這條線更新,那麼的意義就不再是包含集合所有點的最短半徑了,求解?

結果如下:可以看到被欄杆分開的草地也連在一塊了,下面的花朵也屬於同一個類別

                                        




映像分割—基於圖的映像分割(Graph-Based Image Segmentation)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.