一种基于表面定向优先的半全局立体匹配方法与流程

文档序号:14951506发布日期:2018-07-17 22:39阅读:129来源:国知局

本发明涉及计算机视觉技术,具体涉及一种基于表面定向优先的半全局立体匹配方法。



背景技术:

立体匹配作为三维重建、立体导航、非接触测距等技术的关键步骤通过匹配两幅或者多幅图像来获取深度信息。并且广泛应用于,工业生产自动化、流水线控制、无人驾驶汽车(测距,导航)、安防监控、遥感图像分析、机器人智能控制等方面。虽然立体匹配应用广泛但是还有很多尚未解决的难题因此该技术成为了近年来计算机视觉领域广泛关注的难点和热点。随着社会的科技进步,立体匹配技术的发展日新月异,随着匹配算法精度与速度的提高,其应用场景进一步扩大。在此背景下,研究立体匹配变得意义非凡。

立体匹配技术是计算机视觉中关键的研究问题之一。通常可以分为局部方法和全局方法。这两种方法都对观察到的世界进行了平滑的假设;前者通过在局部窗口中聚合匹配的成本,而后者通过一个平滑项来显式地将之前的表面强加到世界上。最简单和最常见的平滑假设是一阶,并指出两个相邻的像素最可能具有相同的深度。一阶的平滑假设引入了一个前平行的偏置。当场景中有足够的纹理时,这并不是问题,但是在没有纹理的倾斜的表面会产生错误,这在室内场景中通常是有问题的。

因此针对现有的立体匹配技术中存在的对于大型的没有纹理的室内场景的匹配效果不理想的问题,本发明提出了一种基于表面定向优先的半全局立体匹配方法,其可以有效的改善上述问题。



技术实现要素:

本发明所要解决的技术问题是,提出一种基于表面定向优先的半全局立体匹配方法,其可以解决现有匹配技术中存在的对于大型的没有纹理的室内场景的匹配效果不理想的问题。

本发明解决上述技术问题所采用的方案是:

一种基于表面定向优先的半全局立体匹配方法,包括以下步骤:

s1、半全局匹配(sgm)算法;

s2、二维方向先验;

s3、三维方向先验;

s4、表面法线先验。

作为进一步优化,s1中的半全局算法其介于局部算法和全局算法之间,所谓半全局指的是算法既没有只考虑像素的局部区域,也没有考虑所有的像素点;

半全局匹配(sgm)是一种广泛使用的立体匹配技术,其由hirschmuller提出,它将局部方法的效率与全局方法的精度相结合,通过近似于二维mrf优化和几个一维的扫描线优化问题,可以通过动态规划得到有效的解决。研究表明,sgm是一种特殊的消息传递算法。

虽然该方法适用于航拍图像和有纹理的户外场景,但对于大型的没有纹理的室内场景的效果却不太好。其原因是,该算法采用了一种简单的一阶平滑假设,这种平滑假设有利于前平行面。因此,它倾向于在弱纹理的倾斜面上产生与前平行的斑块,这在重建的表面上是失败的,特别是在匹配高分辨率图像的时候,会产生较大的“洞”。

作为进一步优化,s2中内容具体如下:

假设一实值的视差面s,在任何给定的像素点上,我们都想鼓励所有可能的差异;

让r成为sgm的当前“全面的方向”,给定一个像素p和它的继任者p'=p+r,栅格化表面s到整数的不一致;

然后计算离散的视差步骤(或跳跃)

用一个新的函数vs替换了原来的平滑惩罚v它包含了视差跳跃:

vs(dp,d′p)=v(dp+jp,d′p)(3)

在像素点处,j的值为非零,而vs则倾向于采取这种差异步骤,并鼓励差异面与s保持平行。我们可以通过将跳跃j存储在偏移图像中来有效地计算vs。由于跳跃依赖于方向r,所以需要四个不同的偏移图像,一个对应两个相反的方向。

但是,我们不需要预先计算和存储所有四个偏移图像。相反,我们只需要存储在对每一对相反的方向运行扫描线优化之前,我们使用公式(7)和(8)生成相关的偏移图像。当反转方向时,我们会翻转偏移量的符号。

作为进一步优化,s3中内容具体如下:

在每个像素之前放松对单一方向的要求,并允许不同深度的多个重叠的表面假设。和之前一样,每个表面都应该先作为一个方向,但是应该影响所有附近的点(图2中s3)。假设在像素p中有k个不一致的表面对于给定的视差d,可以找到最接近的表面。

然后,我们把它栅格化到整数的不一致

再计算一下相邻像素之间的离散视差。然而,这一次,他们依赖于d。

新的平滑惩罚项现在变成了

vs(dp,d′p)=v(dp+jp(dp),d′p)(7)

为了有效地计算vs,我们将所有p和d的预计算值存储在一个辅助量中。这可以被看作是一个一维离散的voronoi图,每个像素都是在体积的不对称轴上的。在每一列的值中,可以通过向前扫描和向后扫描来有效地计算,然后将所有的视差面呈现在这个像素的列中。

作为进一步优化,s4中内容具体如下:

我们已经考虑过使用视差曲面作为定向的先验。现在关注的是得到一个表面法线贴图,例如通过光度立体图或曼哈顿-世界先验获得的。这样的法线贴图可以在我们的sgm-p算法中使用。首先,我们不能直接使用方向,因为sgm-p需要一个可以被光栅化的实际表面。因此,正常的映射必须被集成。其次,我们需要区分场景空间(在欧氏世界坐标中)和视差空间。虽然表面法线贴图可以被认为是二维的,因为它对每个像素的单一表面方向进行编码,这个方向在场景空间中给出。

推导出场景坐标下的表面法线和视差面的方向之间的关系。给定表面法向量在场景空间坐标下p(x,y,z)平面的切平面的方程是:在这里,hp对平面的未知深度进行了编码。在透视投影的情况下,有x=uz/f和y=vz/f的图像坐标(u,v)和在原点处的相机的焦距f取代了我们得到的这些值。

对于立体对,有z=bf/d,b和d分别是基线和视差。把z代入到公式(14),得到了这个视差平面方程。

视差平面的方向依赖于hp,它在场景空间中对切平面的深度进行编码。因此,一个有固定方向但未知深度的场景平面,会产生一组不一致的平面,其方向取决于相关的视差。

为了在sgm-p中使用表面正常的先验,首先需要被集成到一个表面。在场景空间中使用最小二乘方法在场景投影模型中进行集成。结果是一个z面场景空间坐标,一开始是任意的深度。我们用适当的比例因子来缩放这个表面,然后转换成d,到达大致均匀的d表面覆盖全视差范围。最后,我们从这个家族中构建了一个偏移量,如前一节所描述的不同,在不同的视差面之前,产生了3d的方向。

本发明的有益效果是:本发明即是在简单表面上的先验,也可以在含有斜面和较弱纹理的复杂场景的匹配中得到显著的改善。

附图说明

图1是本发明算法流程图。

图2是sgm-p平滑项的图解。

图3是曲面法线转化为视差方向先验图。

具体实施方法

为使本发明目的、技术方案和优点更加清楚明白,下面结合实施例,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。

参见图1-图3,一种基于表面定向优先的半全局立体匹配方法,包括如下步骤:

s1、半全局匹配(sgm)算法

对本发明实施例进行详细的说明之前,先对sgm算法进行简单介绍。

半全局匹配(sgm)算法是一种有效的方法,用于近似能量最小化的二维mrf。

cp(d)是一元数据项,表示在d∈d={dmin,…,dmax}时匹配像素p的代价,v(d,d′)是一对平滑项,它对相邻的像素之间的视差进行了修正。具体来说,v实现了一阶平滑的假设。

而不是最小化2dmrf,这是np-hard问题,sgm有效地将公式(1)的一维版本最小化,通过动态规划,沿着8个方向前进。为每一个方向r,sgm计算一个聚合的匹配成本lr(p,d)递归地从图像边界定义:

8个聚合成本在每个像素上进行汇总,从而产生一个聚合的成本量。

每个像素的最小值被选择为获胜的差距。

drory等人观察到的8个lr(p,d)的最小值的总和是一个较低的集合在总成本的最小值s(p,d)在每个像素点上,并定义一个不确定度作为两者之间的差值。

直观上是在8个最低成本路径的位置上,up将是0,例如,在不正确的不平衡的区域中,不正确的区域有很高的成本cp。然而,在不带纹理的区域中,多个不一致的地方会有相似的一元成本,并且有8个lr的最小值,可能发生在不同的差异,特别是在倾斜的表面。在本发明中,用up来绘制不确定性的不一致误差,并且选择高可信度的匹配。

s2、二维方向的先验。

假设我们得到一个实值的视差面s,让r成为sgm的当前“全面的方向”。给定一个像素p和它的继任者p'=p+r,我们栅格化表面s到整数的不一致。

然后计算离散的视差步骤(或跳跃)

我们用一个新的函数vs替换了原来的平滑惩罚v它包含了视差跳跃:

vs(dp,d′p)=v(dp+jp,d′p)(9)

在像素点处,j的值为非零,而vs则倾向于采取这种差异步骤,并鼓励差异面与s保持平行。我们可以通过将跳跃j存储在偏移图像(图2中s2)中来有效地计算vs。由于跳跃依赖于方向r,所以需要四个不同的偏移图像,一个对应两个相反的方向。

但是,我们不需要预先计算和存储所有四个偏移图像。相反,我们只需要存储在对每一对相反的方向运行扫描线优化之前,我们使用公式(7)和(8)生成相关的偏移图像。当反转方向时,会翻转偏移量的符号。

s3、三维方向的先验。

假设在像素p中有k个不一致的表面对于给定的视差d,可以找到最接近的表面。

然后,我们把它栅格化到整数的不一致

再计算一下相邻像素之间的离散视差。然而,这一次,他们依赖于d:

新的平滑惩罚项现在变成了:

vs(dp,d′p)=v(dp+jp(dp),d′p)(13)

图2中s2说明了这一差异依赖的方向。为了有效地计算vs,我们将所有p和d的预计算值存储在一个辅助量中。这可以被看作是一个一维离散的voronoi图,每个像素都是在体积的不对称轴上的。在每一列的值中,可以通过向前扫描和向后扫描来有效地计算,然后将所有的视差面呈现在这个像素的列中。

s4、表面法线先验。

法线贴图可以在sgm-p中使用,不能直接使用方向,因为sgm-p需要一个可以被光栅化的实际表面。因此,正常的映射必须被集成。其次,还需要区分场景空间(在欧氏世界坐标中)和视差空间。当在一个透视投影模型下转换到视差空间时,表面方向会变得深度依赖,结果会产生三维的视差,需要一个偏移量的表示。

参见图3,推导出场景坐标下的表面法线和视差面的方向之间的关系。给定表面法向量在场景空间坐标下p(x,y,z)平面的切平面的方程是:

在这里,hp对平面的未知深度进行了编码。在透视投影的情况下,我们有x=uz/f和y=vz/f的图像坐标(u,v)和在原点处的相机的焦距f取代了我们得到的这些值。

对于立体对,有z=bf/d,b和d分别是基线和视差。把z代入到公式(15),得到这个视差平面方程。

视差平面的方向依赖于hp,它在场景空间中对切平面的深度进行编码。因此,一个有固定方向但未知深度的场景平面,会产生一组不一致的平面,其方向取决于相关的视差。

为了在sgm-p中使用表面正常的先验,首先需要被集成到一个表面。在场景空间中使用最小二乘方法在场景投影模型中进行集成。结果是一个z面场景空间坐标,一开始是任意的深度。用适当的比例因子(图3中s2处)来缩放这个表面,然后转换成d,到达大致均匀的d表面覆盖全视差范围(图3中s3处)。最后,从这个家族中构建了一个偏移量,如前一节所描述的不同,在不同的视差面之前,产生了3d的方向(图3中s4处)。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1