基于边缘的局部立体匹配方法与流程

文档序号:11135326
基于边缘的局部立体匹配方法与制造工艺

本发明涉及图像处理技术,特别涉及立体匹配技术。



背景技术:

作为计算机视觉的一个很重要分支,双目立体视觉是由一台通过移动或者转动视角来拍摄同一幅场景的摄像机或者是模拟双眼的两个摄像头拍摄同一个物体,然后利用立体匹配算法求出两幅图像对应像点间的视差,结合视差图像与摄像机标定所得参数求出场景内被测物体各点的三维坐标,进而重建出场景的三维结构信息并获得相应点的深度值,此深度值即为摄像机与被测物体之间的实际距离。一个完整的立体视觉系统一般可以由图像获取、摄像机标定、特征提取、立体匹配、深度确定及内插重建6个部分组成。立体匹配是双目立体视觉中最重要、最核心的问题。它解决的是对于同一空间景物上的一点在参考图像上的投影点如何在匹配图像上找到其对应点的问题。立体匹配是移动机器人视觉导航领域的关键技术,主要应用领域有:机器人视觉、自动驾驶汽车、测量等领域。

目前大部分立体匹配算法都包括四个步骤:(1)代价计算,(2)代价聚合,(3)视差计算和优化,(4)视差求精。总体来说,立体匹配算法可以分为两类:局部立体匹配算法和全局立体匹配算法。局部立体匹配算法利用一个窗口内的颜色或灰度信息来确定每个点的视差值。而全局立体匹配算法基于平滑性假设,并且利用能量最小化技术同时确定所有点的视差值。

全局立体匹配算法利用图像的平滑项和数据项两项约束项求解整体能量的最小值。能够很好的解决低纹理区域的误匹配现象。全局立体匹配算法的代表有图割法、动态规划算法、置信度传播算法等。但是算法运算量大,不适合实时系统。

局部立体匹配算法由于每个点仅仅依赖局部信息,通过计算匹配窗口内的总匹配代价,利用WTA策略找到最小的匹配代价,来确定视差。若采用固定的小尺寸窗口可以保留纹理和边缘信息,但视差图噪声比较大;而采用固定的大尺寸窗口可对局部的匹配进行平滑,在深度不连续区域产生前景膨胀效应,视差图模糊,边缘的效果很差。局部立体匹配算法的代表有像素差的绝对值(SAD)、自适应窗口算法、自适应权重算法等。虽然局部立体匹配算法精度不如全局立体匹配算法,但算法运算量小,适合实时系统。

传统的局部立体匹配方法:自适应权重算法利用局部自适应支持权重计算该中心像素和属于同一区域相邻的像素的概率。由于其复杂度取决于匹配窗口的大小,与窗口的大小成平方关系,自适应窗口速度慢,不能满足实时性的要求;固定窗口的立体匹配算法虽然运算速度快,但在低纹理区域处理效果不好,容易出现前景膨胀效应。

目前,局部立体匹配算法的实时性相对于全局立体匹配算法要高。在局部立体匹配算法中,固定窗口的立体匹配算法虽然算法复杂度低,但存在前景膨胀,深度不连续区域视差效果差的问题,而自适应窗口和自适应权重的立体匹配算法虽然大大减少了深度不连续区域的误匹配,但是复杂度高,不适合实时性要求高的场合。



技术实现要素:

本发明所要解决的技术问题是,提供一种基于边缘提取的算法复杂度低,适用于实时系统的快速立体匹配方法。

本发明为解决上述技术问题所采用的技术方案是,基于边缘的局部立体匹配方法,包括以下步骤:

1)对输入左右图像利用局部立体匹配算法计算初始视差图;

2)对视差图做格点采样,对格点做删除非稳定点操作得到稳定格点;非稳定点为与其周围的超过设定数量的格点的视差值的差值均大于阈值的格点;

3)对输入左图像的进行Canny边缘检测得到边缘点,剔除孤立边缘点,得到稳定边缘点;孤立边缘点为其八邻域中所包含的边缘点个数小于设定个数值的边缘点;

4)对所有含稳定格点的列按列扫描,两个稳定点之间的所有点为列插值点,当任意列方向相邻两个稳定格点之间没有稳定边缘点,则这两个稳定格点之间的列插值点的视差值为两个稳定格点视差值的线性插值;当任意列方向相邻两个稳定格点之间有稳定边缘点,则这两个稳定格点之间的列插值点的视差值为稳定格点视差值与稳定边缘点视差值的分段线性插值;

5)将稳定格点、列插值点和稳定边缘点作为稳定点集合,对图像按行扫描,稳定点集合之外所有非稳定点的视差值由其同一行中左右最近的两个稳定点视差值进行线性插值得到。

本发明在得到初始视差图后,对视差图进行格点采样,并删除不稳定的格点,保留稳定的格点,对图像提取Canny边缘点,将稳定边缘点和稳定格点合并为稳定点集合,根据这些稳定点对应的视差对其余点进行插值,得到精确的稠密视差图。

进一步的,本发明提供一种利用梯度为匹配代价,采用固定窗口的代价聚合方式计算匹配代价,经过左右一致性检测得到初始视差图的方法。

本发明的有益效果是,复杂度低、速度快、精度高的优点,适合实时性要求高的场合。

附图说明

图1:本发明的立体匹配流程示意图。

具体实施方式

本发明可以分为初始视差计算,稳定点插值两个阶段,如图1所示。

对于初始视差计算具体可以分为以下四个步骤:

基于双目视觉的一致性约束,对左右视差图做左右一致性校验,即在左视差图和右视差图中的相同坐标位置视差相同,对遮挡点视差做有效地修正,得到初始视差图。

步骤一:输入经过校正的左右两幅图像,计算左右两幅图像的梯度。

步骤二:将梯度作为初始视差计算的匹配代价,对每个像素取固定窗口,窗口内的匹配代价聚合得到每个像素的聚合代价。本实施例通过计算左右图像梯度的绝对误差和SAD作为匹配代价,以7*7的窗口作为代价聚合区域,聚合代价CGradient(x,y,d)

N(x,y)是像素点(x,y)处的7*7的窗口,是向右的梯度,是向下的梯度,I1(i,j)是左图中(i,j)z坐标处的亮度值,I1(i+d,j)是右图中(i+d,j)坐标处的亮度值。

步骤三:首先以左图为基准,在右图中按照赢者通吃WTA(Winner-Take-All)的策略寻找最匹配的点,得到左视差图,然后以同样的方式以右图为基准,在左图中寻找最匹配的点,得到右视差图:

计算像素的匹配可信度,如果可信度小于阈值则认为该点视差计算可靠,否则认为不可靠,这里可信度阈值取0.9。以左图为基准,在右图搜索匹配点,得到左视差图;同样的,以右图为基准,在左图搜索匹配点,得到右视差图。计算可信度:

Confidence=SAD_min/SAD_min2 (2)

其中,Confidence表示可信度,SAD_min表示最小的匹配代价,SAD_min2表示次最小的匹配代价。

步骤四:对左右视差图逐个像素做左右一致性检验LRC,得到初始视差图。

基于稳定点插值,包括以下几个步骤:

步骤一:对图像计算格点,行列步长均为5个像素。比如输入图像尺寸为320*240,则格点尺寸为64*48。格点的视差值为格点在视差图对应坐标的视差值,首先对这些格点做筛选,找到稳定格点。如果某个格点与其周围的大多数格点差异比较大,则被认为是噪声或者低纹理等原因引起的误匹配,该点视为非稳定点,剩下的格点则为稳定格点。这里,对于与其周围的大多数格点差异的比较通过预先设置设定数量值与阈值进行比较。本实施例中如果以某个格点为中心的5*5的块内的格点与中心格点视差值都差异比较大,则认为中心点是非稳定格点,否则认为是稳定格点。

步骤二:对左图计算Canny边缘点,通过统计边缘点的八邻域中边缘点个数,若小于2,则认为是孤立点,剔除比较孤立的边缘点,剩下的即为稳定边缘点。稳定边缘点的视差等于初始视差图的对应坐标点的视差值。八邻域为以当前点为中心,上、下、左、右、左上、左下、右上、右下的8个方向的相邻点;

步骤三:对所有含稳定格点的列按列扫描,如果列方向上任意相邻的两个稳定个点之间没有稳定边缘点,则这两个稳定点之间的所有点称为列插值点,其视差值为两个稳定格点视差值的线性插值;如果列方向上相邻的两个稳定格点之间遇到稳定边缘点,则这两个稳定点之间的所有点称为列插值点,其视差值为稳定格点视差值与稳定边缘点视差值的分段线性插值。

线性插值公式为:

dy=d0y*(d1-d0) (3)

其中插值系数dy为目标点纵坐标为y时的视差值,两个稳定点的纵坐标和视差分别为(y0,d0),(y1,d1)。

步骤四:将稳定格点,列插值点和稳定边缘点合并在一起组成稳定点集合,并进行视差值插值以获得稠密的视差图。对图像按行扫描,任意行方向相邻的两个稳定点之间所有像素的视差通过线性插值获得。

线性插值公式为:

dx=d0x*(d1-d0) (4)

其中插值系数dx为目标点横坐标为x时的视差值,两个稳定点的横坐标和视差分别为(x0,d0),(x1,d1)。

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