图像处理中的全局优化技术(Global optimization techniques in image processing and computer vision) (一)

MulinB按:最近打算好好学习一下几种图像处理和计算机视觉中常用的 global optimization (或 energy minimization) 方法,这里总结一下学习心得。分为以下几篇:

1. Discrete Optimization: Graph Cuts and Belief Propagation (本篇)

2. Quadratic Optimization : Poisson Equation and Laplacian Matrix

3. Variational Methods for Optical Flow Estimation

4. TODO: Likelihood Maximization (e.g., Blind Deconvolution)


1. Discrete Optimization: Graph Cuts and Belief Propagation

很多图像处理和视觉的问题可以看成是pixel-labeling问题,用energy minimization framework可以formulate成以下能量方程:


其中第一项叫data term (或叫unary term),是将label l_p赋给像素p时的cost,第二项叫smoothness term (或叫pairwise term),是每两个相邻pixel的labeling不同时产生的cost (w_pq是spatial varying weight,比如跟p和q的difference相关)。传统的smoothness term一般只考虑两两(pairwise)相邻的pixel,最近几年的CVPR和ICCV上开始出现很多higher-order MRF的研究,比如这位大牛的paper,这是题外话。这种energy minimization framework其实从概率的角度看,等价于求Markov Random Field (MRF) 的maximum a posteriori (MAP) 概率。求解这类energy minimization的方法,最流行的有两个,Graph Cuts和Belief Propagation。


1.1 Graph Cuts

刚开始学习Graph Cuts时,不知道到底这方法是从哪篇paper最早提出来的,因为在后来的paper里引用的参考文献一般指向好几个来源,这里先大致梳理一下参考文献。一般认为,将Graph Cuts引入图像处理领域的先驱paper是Greig等人1989年发表的[1],不过貌似没有引起太大的注意。真正使Graph Cuts在图像领域风靡起来的是两个俄罗斯人(貌似是在Cornell做出的成果),Yuri BoykovVladimir Kolmogorov,以及他们的导师Ramin Zabih。首先引起大家注意的是Boykov在ICCV 2001上的使用Graph Cuts解决Interactive Image Segmentation的paper[2],以及这篇paper提到的一个max-flow算法[3] (该max-flow算法最早是发在2001年的一个CVPR Workshop上,后来扩展到TPAMI [3])。需要注意的是,这两篇paper里的Graph Cuts算法,只是针对只有两个label (待求变量是binary variable)的情况。而Boykov的2001 TPAMI paper[4]提出使用alpha expansion技术将多个label的问题转化成一系列的binary label问题去逼近,这使得Graph Cuts算法开始风靡起来。后来Kolmogorov的2004 TPAMI paper[5] 进一步讨论了什么样的能量方程可以被Graph Cuts优化,并给出了一个简单清晰的根据能量方程构造相应graph的算法,该算法基本成为被大家广泛使用的Graph Cuts算法。Boykov和Kolmogorov的代码可以从这里找到。


下面简单介绍一下Graph Cuts算法,先从binary label开始(见参考文献[2] [3])。顾名思义,Graph Cuts是将图像中的所有pixel以及两个label作为node,根据data cost和smoothness cost建立node之间的edge,这样构造一个(无向)graph,然后通过cut算法将整个graph切成两个分离的部分。如下图所示:

注意,图中的cut会切断它经过的所有edge(包括蓝色、红色、和土黄色的edge)。如果将两个label的node看成两个特殊的terminal,这样的一个cut会阻断所有s连往t的路径(edge)。在Boykov的ICCV 2001 paper [2]中,他证明了通过简单的方式构造这样的一个graph,如果能找到一个min-cut (即该cut经过的edge cost加起来在所有possible的cut中最小),其实就是上面的能量方程的最小解 (见paper中的Theorem 1)。那么如何找到min-cut呢?


在图论里,有证明找到min-cut其实等价于找到max-flow,即从s流往t的最大流量。其实,min-cut等价于max-flow的intuition很简单,从一个terminal流往另一个terminal的最大流量,其瓶颈肯定是min-cut的位置。这里有个有意思的介绍,关于网络里s-t flow的计算。计算max-flow的经典算法主要有两种,一种是基于augmenting-path,一种是基于push-relabeling。在Boykov和Kolmogorov的TPAMI 2004 paper [3]里,介绍了一种基于augmenting-path,为了图像这种扁平graph量身定制的max-flow算法,通过实验证明了其效率,这里有他们的代码。


在解决multi-labeling问题时 (其实是更为普遍和常见的问题),在能量方程满足某些特定的条件下(注意:该限定条件其实挺难满足,后面讨论!),可以使用alpha expansion算法将其转化为一系列binary-labeling问题来逼近,参见Boykov TPAMI 2001 paper [4]。见下图:


这种alpha expansion思路很简单,当处理每一个label时(假设其为a),将其他所有的label看成一个label package(假如称之为b),这时问题就变成了binary-labeling。此时在进行cut时,如果一个原来是a的pixel被cut给b,将无法确定到底给该pixel具体哪一个label(由于b是个大杂烩)。所以在进行cut时,只允许原来是b的pixel被cut给a,也就是标记为a的pixel在expanding,这就是算法名字的来源。需要注意的是,为了使得这样的一次alpha expansion可以被max-flow算法计算出来,graph的构造比之前的binary-labeling要稍微复杂一些 (比如仅仅允许alpha expansion的话,有些跟

  • 19
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值