隨機遊走算法分割(Random Walk Algorithm Segmentation)

簡介

Random Walk 算法是比較早的一種基於圖的方法,其原始論文[1]最早發在一個會議上, 後來經過修整發在期刊上[2].

其主要思想是將圖像構建成一個無向圖模型,然後通過求解對應的dirichlet問題[3, 4]得到分割結果。

本文主要介紹一些random walker算法的原理推導過程以及一些實驗結果

基於圖的分割算法基本概念

圖的基本概念

基於圖的分割方式被廣泛使用在自然圖像以及醫學圖像分割中,如 graph_cut, grab cut, MRF-MAP, CRF, fc-crf等等一些方法,本文主要介紹基於圖的其中一種方法,叫random walk算法。

首先簡要介紹一些圖的基本概念:

一個圖模型是一組節點和邊的集合:G=(V,E)G=(V,E),其中vVv\in V叫做圖節點(vertices, nodes),eEV×Ve\in E \subseteq V \times V叫做圖像的邊,連接了一個圖像的兩個節點vivjv_i v_j的邊我們用eije_{ij}表示。

每一條邊我們都給它定義一個權重wijw_{ij},注意,這裏的權重需要滿足wij>0w_{ij}>0

還有一個概念是一個節點的度(degree)我們定義如下:
di=w(eij)(1) \tag{1} d_i = \sum{w(e_{ij})}
這個意思是每個節點的度等於和它相連的邊上的權重之和,表示了這個節點的一個屬性。

下面的這個圖就是一種將我們常見的2維圖像表達成圖的一種方式(注意,我這裏說的是一種方式,說明還有其他的方式,比如下圖定義的是節點之間4連通的方式,我們還可以定義爲8連通的方式,甚至定義爲全連接的方式)。其中圓圈就表示圖像的每個像素,相連的曲線就表示每一條邊,並且這個邊還有一個對應的權重。

一種將2維圖像用圖表達的方式

權重

在基於圖的圖像分析算法中,權重是一個基本的概念.一般來說,我們用一個函數來表達兩個節點之間的權重,從而可以有各種各樣的函數來表示它.這裏隨機遊走算法使用的是高斯權重,其表達是如下:

wij=exp(β(gigj)2)(2) \tag{2} w_{ij} = exp(- \beta (g_i -g_j)^2)

其中gig_i表示圖像第i個節點處(也就是像素i)的灰度值.

因此這個權重的意義我們可以理解如下,如果兩個相鄰像素的灰度值越接近,那麼他們之間的權重越大,因此他們之間的聯繫也就越大.

Laplacian Martix (拉普拉斯矩陣)

拉普拉斯矩陣[4]可以反映出一個圖的很多有用信息,其定義方式如下.
Lvivj={dviif i == jwijif vi and vj are adjacent0otherwise(3) \tag{3} L_{v_{i}v_{j}}=\left\{ \begin{array}{rcl} d_{v_{i}} & & \text{if i == j}\\ -w_{ij} & & \text{if $v_i$ and $v_j$ are adjacent}\\ 0 && \text{otherwise} \end{array} \right.

其中 dvid_{v_{i}}就是公式(11)中的節點viv_{i} 的度,wijw_{ij} 表示節點 i,ji, j 的權重.

我們可以用一個直觀的圖像來解釋Laplacian Martix的概念,如下圖:

Laplacian Martix

一個Laplacian Matrix可以看成是一個Degree Matrix和一個Adjacency Matrix相減得到.
L=DA(4) \tag{4} L = D - A
解釋一下,從左邊第一個圖我們可以看出該圖一共有6個節點,因此三個矩陣都用一個6×66\times 6的矩陣來表示.

  • 圖像的度矩陣(Degree Matrix)[6]揭示了圖中節點的性質,如圖左2所示.例如,如果我們將左1圖中兩個節點中的權重設置爲1,那麼因爲節點5中有三條邊從這個節點中止(也就是說有三條邊和節點5相連),因此在Degree Matrix(5, 5)的地方就設置爲3,其他節點同理.此時我們結合公式(1)以及圖左2就可以理解什麼是Degree Matrix了.
  • 圖像的鄰接矩陣(Adjacency matrix)[7]解釋了兩個節點之間的關係.如圖右2所示.例如,當節點2和節點1之間有一條連接線時,那麼我們就將Adjacency matrix的(1, 2)和(2,1)處設置爲1,其他連接線同理類推.不難看出一條性質,就是Adjacency matrix總是沿着對角線對稱的.
  • 結合公式(33)(44)以及下圖,我們不難理解圖的Laplacian Matrix的概念.

隨機遊走算法的思想

到這裏我們提前總結一下隨機遊走算法的主要思想,讀者可以讀完後面的內容再回來重新回顧這裏:
隨機遊走算法將圖像分割問題轉化成一個隨機遊走的任務(task)問題,通過將任務建模爲一個離散的Dirichlet問題[4]並求解,從而得到分割結果.

一個例子

接下來我將舉一個例子來形象的解釋一下隨機遊走算法是怎麼工作的[8,9]:

隨機遊走例子

假設我們有如下任務:一個隨即遊走者(random walker)的任務是沿着圖示的直線運動,每次只能運動相鄰的一個整數點.當他在點x(x=1,2,3,4)時,有兩種選擇,以0.5的概率向左走,或者以0.5的概率向右走.當他走到5點時,認爲完成任務,也即到家;當走到0時,認爲任務失敗,無論走到0還是5,都停止走動.

問題是: 求這個人在任意一點處到達點5的概率.

分析:

p(x)p(x)Random Walker在到達0之前能夠到達5的概率,那麼p(x)p(x)具有如下性質:

p(0)=0(5) \tag{5} p(0) = 0

p(5)=1(6) \tag{6} p(5) = 1

p(x)=12p(x1)+12p(x+1),x=[1,2,3,4](7) \tag{7} p(x) = \frac{1}{2}p(x-1) + \frac{1}{2}p(x+1), x=[1,2,3,4]
公式(5)和(6)表示:如果從0出發,由於直接停止運動,且不可能到達5點,因此概率爲0;如果從5出發,直接就達到5點,且停止運動,因此概率爲1.

公式(7)表示Random Walker從任意一個其他點出發,到達5點的概率.這個公式直接看可能有點不好理解,我們可以這樣解釋它:假設E是事件小人從點x[x=1,2,3,4]到達節點5,F是事件小人從x點先向左走,G是事件小人從x點先向右走,顯然F和G是不能同時發生的,且我們從題目中已經知道向左走和向右走的概率分別是0.5,因此有下面的公式:
p(E)=p(F)P(E given F)+p(G)p(E given G)(8) p(E) = p(F)P(E \text{ given } F) + p(G)p(E \text{ given } G) \tag 8
對比公式(8),我們不難理解公式(7)的意義.

結合公式(5-7),我們可以得到下面一組方程:

p(0)=0(9) \tag{9} p(0) = 0

p(1)=12p(0)+12p(2)(10) \tag{10} p(1) = \frac{1}{2} p(0) + \frac{1}{2}p(2)

p(2)=12p(1)+12p(3)(11) \tag{11} p(2) = \frac{1}{2} p(1) + \frac{1}{2}p(3)

p(3)=12p(2)+12p(4)(12) \tag{12} p(3) = \frac{1}{2} p(2) + \frac{1}{2}p(4)

p(4)=12p(3)+12p(5)(13) \tag{13} p(4) = \frac{1}{2} p(3) + \frac{1}{2}p(5)

p(5)=1(14) \tag{14} p(5) = 1

整理之後如下:
在這裏插入圖片描述

可見,上述的一個求任意一點到達節點5的概率問題,被我們轉化爲一個求解一組線性方程組的問題,因爲係數矩陣爲滿秩矩陣,因此方程組必有一組解.

簡單推導

直觀理解

注意:隨機遊走算法需要事先人爲的劃定一些點作爲標記點,比如,如果我們要在背景中將前景的某個物體分割出來,就必須在背景中選取一個或者一組點,並且在前景也選取一個或一組點作爲初始條件.類比上面的例子,就好像我們讓p(0)=0,p(5)=1p(0)=0,p(5)=1一樣.否者線性方程組無法求解.

對於沒有標記的點,我們需要分別計算這個點隨機在整個圖中隨機遊走的過程中首次到達前景和背景的概率,然後取概率大一類的作爲該點所屬的類別.如下圖所示:

隨機遊走算法摘自文獻[2]

左上爲原始圖像,L1,L2,L3L_1, L_2, L_3分別代表人工標記的三個標記點,問號的部分就是沒有標記的點. 我們的任務就是根據標記的點,將圖像中沒有標記的點分割成三部分,其中L1,L2,L3L_1, L_2, L_3分別代表
三個部分中的一個代表的點. 和剛纔的例子類似,我們需要計算出三張圖,即左下,右下,右上這三張圖,每張圖代表沒有標記的點首次隨機遊走到不同標記點的概率,然後取最大的概率對應的label作爲該點所屬的類別,從而達到分割的目的.

公式推導

算法主要優化如下問題:

Q(x)=12xTLx(15) \tag{15} Q(x) = \frac{1}{2} x^T L x
其中x表示待分割圖像對應的圖向量,L是其對應的拉普拉斯矩陣.

爲了求解公式(15),我們把圖上的節點分爲兩部分,一部分是已經標記的記爲XMX_M,另一部分爲沒有標記的記爲XUX_U,並且重新組合拉普拉斯矩陣爲如下格式:

L=[LMBBTLU] L = \begin{bmatrix} L_M & B \\ B^T & L^U \end{bmatrix}

在這裏插入圖片描述
DXUX_U求導並令導數爲0,我們可以得到下面的等式:
LUXU=BTXM(18) \tag{18} L_U X_U = -B^T X_M
我們把標記的節點viv_i和其labels用函數的方式對應起來,即Q(vi)=sQ(v_i) = s,其中s的取值最大爲K,K即圖像中要分割的區域數.


mis={1Q(vi)=s0Q(vi)s(19) \tag{19} m_i^s=\left\{ \begin{array}{rcl} 1 & & Q(v_i)=s\\ 0 & & Q(v_i)\ne s\\ \end{array} \right.
則有:
LUXs=BTms(20) \tag{20} L_U X^s = -B^T m^s
將s個方程組合到一起,有:
LUX=BTM(21) \tag{21} L_U X = -B^T M

剩下的任務就是使用優化算法如共軛梯度下降來求解線性方程組(也即公式(21))了.

注意

上述推導過程只是粗略的把過程寫了一下,至於爲什麼能夠把首達問題轉化爲Dirichlet問題?爲什麼可以通過優化公式(15)就可以得到分割結果?Laplacian矩陣是如何構建的?以及一些推導的細節問題這裏不過多介紹,詳情請參考文獻[1,2].另外再插一句, 在實現過程中,其核心部分在於構建Laplacian矩陣LL和矩陣BB.詳情參考源碼.

實驗結果

隨機遊走算法分割結果

參考文獻

[1] L. Grady and G. Funka-Lea, “Multi-label Image Segmentation for Medical Applications Based on Graph-Theoretic Electrical Potentials,” in Computer Vision and Mathematical Methods in Medical and Biomedical Image Analysis, vol. 3117, M. Sonka, I. A. Kakadiaris, and J. Kybic, Eds. Berlin, Heidelberg: Springer Berlin Heidelberg, 2004, pp. 230–245.

[2] L. Grady, “Random Walks for Image Segmentation,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 28, no. 11, pp. 1768–1783, Nov. 2006.

[3] https://en.wikipedia.org/wiki/Dirichlet_problem

[4] [1]L. Grady and E. L. Schwartz, “Anisotropic Interpolation on Graphs: The Combinatorial Dirichlet Problem,” p. 19.

[5] https://en.wikipedia.org/wiki/Laplacian_matrix

[6] https://en.wikipedia.org/wiki/Degree_matrix

[7] https://en.wikipedia.org/wiki/Adjacency_matrix

[8] Random Walks分割

[9] P. G. Doyle and J. L. Snell, “Random walks and electric networks,” p. 118.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章