从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

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