從MAP-MRF到Grab Cut(1/3): MAP-MRF

介紹

綜述

我將會用三篇博客來同大家討論Graph Cut技術在圖像分割上的應用,歡迎各位在評論中留言討論。
這三篇內容分別是
(TODO list)

  • MAP-MRF
  • Max-flow/Min-cut
  • Grab-cut

這三篇文章先是從estimation theory的角度討論MAP-MRF從而可以引出:通過求一個能量函數的最小化來解決圖像分割問題。這也就等同於 Max-flow/Min-cut問題,最後Max-flow的“升級版”是Grab-cut
在本篇中我將討論MAP-MRF,目的是理解了MAP-MRF會幫助我們理解Max-flow。

圖像分割及其應用方向

作爲系列博文的第一篇,我感覺有必要先提及一下什麼是圖像分割。顧名思義,我們利用模型將一張圖片分成幾個子區域,每個區域內的像素屬於同一個類別,這要求子區域內像素具有相同的特徵。現如今,主要流行的方法是CNN那一支,但是傳統的方法依舊具有很好的潛力。現在,CNN上空浮現着一層陰影那就是我們對於一個特定的網絡,很難回答在訓練過程中究竟發生了什麼。而且CNN對超參很敏感,需要不斷的實驗來得到一個理想的結果。

而通過回顧傳統的方法,可以加深對CNN的理解,也是本篇寫作的出發點,因此我在此討論的更多是公式和思想,代碼實現不在此文範圍內(請查看opencv源碼,如果有需要的話)。

應用方向有很多,比如醫學中,可以用圖像分割來處理x光CT掃描照片,也可以用來做細胞分割等等。在生活場景中可以用來做物品識別。影視行業拿來做摳圖也是可以的,等等。而需要強調的是,凡是具有圖片性質的數據,都可以用圖像分割的技術來幫助分類與定位。

圖像分割在醫學領域的應用例子

MAP-MRF簡介

MAP-MRF是Maximum a posteriori Markov random fields的縮寫。中文名應該是最大化後驗馬可夫隨機場。MAP-MRF有很廣泛的應用,而在圖像處理領域中,它可以用來做圖像分割。在本文中我們可以看到,MAP-MRF等同於求能量方程的最小值

MAP-MRF詳情

下文基於**二元圖像分割(binary segmentation)**進行討論

定義

在一個圖片中我們先定義一個集合P={p1,p2,...,pm}P = \{p_1, p_2, ..., p_m\}, 用來表示每一個像素。

我們用集合L={l1,l2,...,lL}L = \{l_1, l_2, ..., l_L\}來表示每一個像素所隸屬的類別,在二元圖像分割中L={0,1}L = \{0,1\}. 0對應背景,1對應前
景。

接着我們定義一個場F={fppP}F = \{f_p | p\in P\}, fpLf_p \in L
這裏的ff也叫做場FF的配置(configuration)
既然是馬可夫場我們還需要定義一個領域系統N={NppP}N = \{N_p|p \in P\}. NpN_p 就是像素pp的領域。
簡單的領域系統
FF 是馬可夫隨機場 當且僅當

  • Pr(F=f)0,fFP_r(F=f) \geq 0, \forall f \in F
  • Pr(Fp=fpFPp=fPp)=Pr(Fs=fsFNp=fNp)P_r(F_p = f_p | F_{P-p} = f_{P-p}) = P_r(F_s = f_s | F_{N_p} = f_{N_p}) 這也意味着fpf_p的值只取決於領域內的fpf_p的值。

通過Harmmersley-cllifford定理

我們可以知道吧MRF轉化成Gibbs 分佈,從而可以得到如下公式
Pr(f)exp(cVc(f))P_r(f) \propto exp(-\sum_{c}V_c(f)) (1)

其中c是clique的意思,在圖像處理中這個c等同於我們定義的N。VcV_c是clique potential, 其實就是一個用來描述區域內像素關係的量。所以在圖像處理這一塊我們可以用鄰域系統NN來描述clique, 如下的公式:
Pr(f)exp(pPqNpVp,q(fp,fq))P_r(f) \propto exp(-\sum_{p \in P} \sum_{q \in N_p} V_{p,q}(f_p, f_q)) (2)

  • 其中V_{p,q}是用來衡量兩個相鄰像素間的相似程度的函數,隨便你怎麼設計。但是通常要求:
    • 非負
    • 值的大小於像素間的相似性成正比,於Euclidean距離成反比。

圖像分割問題就是我觀察到一個圖像記作集合OO,它包含了每一個像素觀測到的值。我需要估算的是Pr(fO)P_r(f|O) 這麼一個likelihood。
根據Bayes’ Law我們可以寫出:
Pr(fO)Pr(Of)Pr(f)P_r(f|O) \propto P_r(O|f)P_r(f) (3)

其中Pr(f)P_r(f)已經在**(2)**中給出了,而Pr(Of)=pPPr(Opfp)P_r(O|f) = \prod_{p \in P} P_r(O_p|f_p)是數據分佈情況,是實現知道的。比較簡單的是建立一個直方圖的來獲取它。

那麼這個 MAP 的過程可以寫成對於f:
- argmaxPr(fO)Pr(f)argmax P_r(f|O)P_r(f)
- argmaxpPPr(Opfp)exp{pPqNpVp,q(fp,fq)}argmax\prod_{p \in P}P_r(O_p|f_p)exp\{-\sum_{p \in P} \sum_{q \in N_p} V_{p,q}(f_p, f_q)\}
- argmaxpPln(Pr(Opf))pPqNpVp,q(fp,fq)argmax\sum_{p \in P}ln(P_r(O_p|f)) -\sum_{p \in P} \sum_{q \in N_p} V_{p,q}(f_p, f_q)
- argminpPln(Pr(Opf))+pPqNpVp,q(fp,fq)argmin - \sum_{p \in P}ln(P_r(O_p|f)) + \sum_{p \in P} \sum_{q \in N_p} V_{p,q}(f_p, f_q)

可以看到MAP-MRF 最終可以表示爲求能量方程最小值的問題。 這是一個NP-hard問題,於是就有了很多種的圖割算法來算近似解以提高效率。下一篇博文我將介紹什麼是Max-flow/Min-cut

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