1.绪论
立体匹配是三维重建系统的关键步骤,并且作为一种非接触测量方法在工业以及科研领域具有重要的应用价值。为了完成匹配工作以及获取场景的稠密视差图,可以通过构建能量函数对应立体匹配的约束条件。复杂能量函数的全局最优解通常是NP难问题。相对于其他全局优化算法相比如模拟退火、梯度下降、动态规划等,图割算法不仅精度高,收敛速度快,并且对于光照变化、弱纹理等区域的匹配效果也比其他算法好。
2.图割算法
计算机视觉领域的大部分问题可以转换为标号问题,在立体匹配中视差的求解就是对图像的像素在视察范围内的离散标号问题。离散标号的最优解问题可以采用能量函数的最小化来求解,图割做为一种可以求解能量最小化问题的算法,在计算机视觉领域的应用非常广泛,如图像分割,图像恢复,立体匹配等。
Kolmogorov指出了如何将能量函数最小化问题与立体视差计算联系起来。通常使用图割算法进行立体匹配分为三个步骤,建立网络图,图割算法求解,生成视差图。图割算法由于其全局优化的特性能够获取效果良好的稠密视差图,但是对于处理高分辨率图像其运算量过大,为了降低运算量,一般思路都是采用分割后的图像缩小网络图的规模从而降低计算量。然而由于采用自动化非交互的彩色图像分割方法会把相同视差的区域分开或隐去了图像的部分细节信息,导致分割误差,而消除误差需要引入其他方法,如通过引入初试视差估计等方法,但这些方法增加了立体匹配算法的整体复杂度,而且没有有效利用分割信息。
在实际应用场景中为了获取感兴趣区域的精细视差图,针对于以往基于图像分割的立体匹配算法复杂、计算量大,没有充分利用分割结果的信息等缺点,本文提出了一种基于图像分割的立体匹配方法。该方法在图像分割时采用可交互的图割方法获得感兴趣目标,只针对感兴趣目标进行立体匹配,因此运算量大大减少,同时保留了原有图割算法具有的全局最优特性。
2.1 能量函数
使用图割算法进行立体匹配的过程中,需要将图割中的网络图和能量函数对应起来。能量函数定义为:
该能量函数的四项分别为数据项,遮挡项,平滑项,唯一项。每一项都表征匹配时待处理的问题。
- 1)数据项:
数据项是为了让算法获取最佳的像素匹配,像素之间的色彩相似度越高,数据项的值越小。
其中函数D(a)用来表征匹配像素p,q之间的不相似性,a = (p,q)表示如果p,q像素匹配,数据项约束生效并可以按照下式:进行展开计算。
- 2)遮挡项
遮挡项的作用依然是为了将匹配像素个数最大化,对于存在遮挡无法匹配的像素按照下式乘以惩罚系数,由公式可知遮挡像素越少,遮挡项的值越小。
- 3)平滑项
平滑项主要衡量的内容是对于临近像素一般具有相似性特别是色彩相似这一特点,对于像素p而言其邻接像素p1和p2应该具有相同的视差分配。
平滑项一般采用分段函数。其中可以按照距离度量展开成分段函数。平滑项的值越低意味着临近像素的视差越相近。
- 4)唯一项
唯一项专注于立体匹配的唯一性约束,若待匹配点出现了不止一个匹配的情况则将惩罚值设置为无穷大。下式为其数学表达
2.2 网络流
(一)最大流
对于带有源点S和汇点T的有向图,称为网络图。在网络图中设f是定义在集合E上的非负函数。用fij表示f在弧e = (vi,vj)上的值,即为弧e上从vi到vj的流量称为网络流。网络流fij满足下列两个条件:
- 1.流量Fij不超过弧的容量Cij,
- 2.对于任意顶点vi,从vi留出的流量等于从vi流入的流量。即:
满足上述条件的所有网络流中流量最大的一个,称为最大流。
(二)最小割
网络图中一个S-T的割意味着将顶点集分为两部分,。割的代价为顶点集到所有割边的容量和,容量和最小的割称为最小割。设x 和y 是顶点集V中的两个顶点,(x,y)表示从x 到y 的一条边,其边的权值表示为c(x,y)。因此对于图G=(v,e)其一个割可以表示为:
Ford 和 Fulkerson 早在1962年证明了最大流和最小割的等价对应关系。通过求网络图的最大流来等价其最小割,进而可以获取此最小割对应能量函数的全局最小值。一个值得注意的工作为Boykov等人提出的基于图割理论有效的能量函数优化方法。在该方法中,作者提出标号函数的两种比较大的移动,扩张移动
(expansion moves)和交换移动(swap moves),并证明了其扩张算法所获得的局部小和全局小相差一个已知的常数,而交换算法可以处理更一般的能量函数形式。本文使用扩张移动算法。
3.立体匹配网络图的构造
在使用图割算法进行立体匹配过程中首先需要构建网络图,对于上文提到的网格图由节点和连接节点的有向边组成。源点S,汇点T为两个特殊节点。边分为两种,一种视差边,一种是平滑边。视差边对应于能量函数(公式(1))第1项,平滑边对应于能量函数第2项。
网格图的具体构建过程如下:
- 1.建立3维坐标系O-XYZ,把图像置于OXY平面,得的原点,X轴、Y轴与OXY平面的原点以及相应的轴重合。
- 2.在Z轴的正半轴上,从原点开始等距离的放置向量了l1,l2,…ln,在l1即原点O的地方放置q0,对于i=1,2,…n-1在li和li+1的中点放置点qi,最后在ln处放置qn。
至此,由OXY平面中像素点p=(px,py)以及Z的正半轴上点q0,q1,…qn构成了一个立方体网格。我们可以知道,对i=1,2,…n-1,在Z轴上的每个区间[qi,qi+1]恰好包含一个li+1。记(p,qi)=:(px,py,qi)为立方体网格上的节点,N(P)为像素点P的邻域。在网络图两端分别添加两个节点,即源点S,汇点T。并在S到I1中每个属于左视图分割模版(图(1))中标记为前景的像素点之间添加一个边,在T到集合即立方体网络上与OXY平面相对的另一个面上的节点,添加到汇点的边。由此,获得一个无向图G=< v,e >即:
则网络图中各边的容量为:
- (1)源点,汇点连接边的容量为:汇点链接边的容量
- (2)视差边的容量为:对任意,边的容量为:
在对视差边的处理上,视差边对应能量函数的数据项,既(1)式的第一项,在彩色图像中我们对RGB三通道分开处理,再求加权平均,这样保留了颜色信息,结果更加精准,特别的,为了更进一步的准确,本文采用线性最近邻插值算法添加了亚像素信息。上式可以扩展为:
为彩色图像各个通道的权值,可取0.29,0.11,0.58,或者0.33。
- (3)光滑边的容量:p, q为衣服图像中相邻两像素:
于是网络图构建完成,如图所示:
4.基于图割算法的图像分割
本文以图割算法为基本框架,采用基于图像分割的办法来实现对于感兴趣物体的立体匹配。由于彩色图像分割算法会影响到后期立体匹配的结果,所以选取合适的分割算法非常重要。
基于自动化非交互的分割方法可能会把相同视差的区域分开或者隐去了图像的部分细节信息,这就造成了误差,而消除误差需要引入其他方法,如通过引入局部匹配算法为分割模版提供初试视差估计等方法,但这些方法提升了立体匹配算法的整体复杂度,而且没有有效利用分割信息。所以本文采用基于图割算法的图像分割,在构建立体匹配网络图的同时进行图像分割。
在图像分割问题中我们定义如下的能量函数形式:
传统基于图割算法的图像分割将上式映射为求解对应加权图的最大流/最小割问题,对于低分辨率的简单图像交互分割效果良好但是计算复杂度较高,内存开销大。为了提高分割速度并且适用于高分辨率图像,将图像分割融入立体匹配的流程中。本文采用文献[22]中的方法,通过添加辅助索引节点,并使用新的能量函数形式:
加速分割并减少运算量。公式(5)数据项中跟表示前景物体跟背景的非归一直方图,平滑项中
,为图像中所有⊿I的均值。该方法简化了图割计算时间,并且得到了非常精准的分割结果。如下所示(蓝色种子点用来标记背景,红色种子点用来标记前景):
baby1左视图种子点设置 | 左视图分割结果 |
baby1右视图种子点设置 | 右视图分割结果 |
5.图割算法立体匹配
在立体匹配问题中,视差图的标号问题可以等价为全局能量函数的最小化求值问题,通常表示为Greig能量函数形式
在图1中,点表示源点,点表示汇点,视差边对应于能量函数式(1)中的第一项,平滑边对应于能量函数第二项。求解式(1)的能量函数的最小值可以等价为求解图的最小割问题,获得全局最优的视差图。
为了减少立体匹配的运算量,本文根据图像分割的结果得到感兴趣物体与分割模版,由分割模版构建网络图,使用图割算法进行立体匹配,有效利用了分割信息。综上所述本文算法可以概括为两大步骤:1感兴趣目标的提取,2利用网络图进行立体匹配。算法流程图如图2所示:
Figure 2 Flow chart of the Algorithm
本文相对于传统方法,根据每个像素构建网络图的算法有所不同。对于图,在两端分别添加源点,汇点之后,只在到中每个属于左视图分割模版中标记为目标的像素点之间添加边,在T到集合即立方体网络上与平面相对的另一个面上的节点,添加对应到汇点的边。通过上述方法,可以大大减少计算量。
为了进一步优化匹配结果,本文在对网络图中视差边的处理上,针对彩色图像采用RGB三通道分开处理,用线性最近邻插值算法在图像的横坐标方向添加了亚像素信息。即将(2)式扩展为:
式中为彩色图像各个通道的权值。
按照上述的方法法构造网络图,并给各个边赋相应的权值,采用基于增广路的最大流算法求解,得到全局最小值,即为最优视差匹配。
参考文献
[16]Boykov Y, Kolmogorov V. An experimental comparison of min-cut/max-flow algorithms for energy minimization in vision[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2004, 26(9): 1124-1137.
[19]Roy S, Cox I J. A maximum-flow formulation of the n-camera stereo correspondence problem[A]// IEEE International Conference on Computer Vision[A], 1998 January 4-7, Bombay India:492-499.
[20]Hong L, Chen G. Segment-based stereo matching using graph cuts[A]// IEEE Conference on Computer Vision and Pattern Recognition[C],2004 June 27-July 2,Washington DC USA:74-81.
[23]Tang M, Gorelick L, Veksler O, et al. GrabCut in One Cut[A]// IEEE International Conference on Computer Vision[C], 2013 Dec 01 - 08, Sydney, Australia 1769-1776.
[24]王年, 范益政, 鲍文霞等. 基于图割的图像匹配算法[J]. 电子学报, 2006, 34(2):232-236.
[25]Scharstein D, Szeliski R. A taxonomy and evaluation of dense two-frame stereo correspondence algorithms[C]// Stereo and Multi-Baseline Vision, 2001. (SMBV 2001). Proceedings. IEEE Workshop on. IEEE, 2001:131-140.
[28]Deng Y, Yang Q, Lin X, et al. A symmetric patch-based correspondence model for occlusion handling[C]// Proceedings / IEEE International Conference on Computer Vision. IEEE International Conference on Computer Vision. 2005:1316-1322 Vol. 2.
[29]Freeman W T. Comparison of graph cuts with belief propagation for stereo, using identical MRF parameters[C]// Computer Vision, 2003. Proceedings. Ninth IEEE International Conference on. IEEE, 2003:900.
[30]Kolmogorov V. Graph based algorithms for scene reconstruction from two or more views[D]. Cornell University, 2004.
[31]Kolmogorov V, Zabih R. Multi-camera scene reconstruction via graph cuts[M]//Computer Vision—ECCV 2002. Springer Berlin Heidelberg, 2002: 82-96.