一种双目立体匹配算法

文档序号:32484430发布日期:2022-12-10 00:32阅读:33来源:国知局
一种双目立体匹配算法

1.本发明属于计算机视觉的技术领域,具体涉及一种双目立体匹配算法。


背景技术:

2.双目立体视觉是计算机视觉领域的热门话题之一。通常被广泛应用于三维测量、三维重建、目标跟踪等方面。双目立体匹配作为立体视觉研究领域的一项核心课题,目的是获取双目图像中每个像素点之间的水平差别,即视差,直接影响三维场景中深度信息获取的准确度。现有的产品结构分为全局算法以及基部算法。全局算法通常是通过定义一个全局能量函数并寻找最优解来得到视差图。全局算法包括动态规划、置信区间传播和图割算法等。虽然全局算法准确率较高,但是算法运算量较大,难以达到实时性要求;局部算法则是通过像素点周围的局部信息来判断视差值,速度较快且易于实现,但是其匹配代价计算方式和代价聚合区域的选择是难点。
3.现有的局部算法常用的匹配代价计算方式包括灰度的绝对差值之和(sum of absolute diff erences,sad)、灰度的差值平方和(sum of squared diff erences,ssd)以及灰度值的归一化(normalized crosscorrelation,ncc)。然而,这些匹配代价计算方式对于噪声、相机增益、偏置都非常敏感,在弱纹理区域的匹配效果不佳。中值滤波、高斯拉普拉斯算子和图像梯度幅值等图像预处理方式可以有效滤除噪声,但是由此得到的视差图边缘部分不够清晰。互信息(mutualinformation,mi)、rank变换和census变换等非参数方法对噪声具有较高的鲁棒性,得到的视差图边缘部分也较清晰,但是由于没有考虑到图像的颜色信息,故在图像的重复结构区域往往会造成误匹配。另一方面,基于离散空间的标签分配方法似乎并不是立体匹配问题的最优解,而基于连续空间的视差平面方法,在精度和效果上有明显的优势。尤其是在边界和细小结构的恢复上,离散空间带来的不精确性使得一些代价聚合模型对边界的处理并不清晰。
4.综上所述:现有技术存在着在弱纹理区域的匹配效果不佳,视差图边缘部分不够清晰以及重复区域误匹配率高等问题。


技术实现要素:

5.为解决上述问题,本发明的首要目的在于提供一种双目立体匹配算法,该算法采用动态倾斜窗口做视差平面,解决了基线与被拍摄物体平行的角度问题。
6.本发明的另一目的在于提供一种双目立体匹配算法,该算法用像素随机初始化代替亮度或颜色差的绝对值,结合动态倾斜视差平面解决了传统算法对census变换窗口中心像素依赖的问题,且从空间传播、视图传播到平面优化的迭代顺序,利用左右一致性检测对视差图像进行了优化,进一步降低了误差匹配率。
7.为实现上述目的,本发明的技术方案如下。
8.一种双目立体匹配算法,该算法首先对输入的图像的每一个像素随机一个视差和法线,并计算出视差平面;在进行代价计算后,对得到的图像进行空间传播-视图传播-平面
传播三次迭代传播;最后进行左右一致性检测、视差填充及加权中值滤波得到优化之后的视差图。
9.具体地说,该方法包括以下步骤:
10.步骤1、生成动态倾斜视差平面;
11.随机生成视差值z给每一个像素,同时为了表示平面,还需要随机一个法向量用法向量的方法表示空间中的平面,令a
p
,b
p
,c
p
分别为动态倾斜窗口的三个参数,可以表示为:个参数,可以表示为:
[0012][0013]
步骤2、像素初始化;
[0014]
对于像素点c的视差平面方程可以表示为:
[0015]
dc=acx+bcy+c
[0016]
其中a,b,c为视差平面的3个参数,三个参数随着点c的x坐标及y坐标变化不断调整,形成动态平面;
[0017]
步骤3,代价计算;
[0018]
对于左右视图的像素,采用的匹配公式为:
[0019]
r(p,f)=∑t(p,q)
·
ρ(q,q-(aq
x
+bqy+c)
[0020]
式中r(p,f)为像素p当视差平面为f时的聚合代价值,t(p,q)是自适应的权重;
[0021]
然后,通过色差判断像素p和q是否在同一个平面:
[0022][0023]
公式中,λ是自定义参数,∥lp-lq∥为像素p和q在rgb空间的距离,其值越小,则两像素越有可能在同一平面。
[0024]
进一步,对于左视图的一个像素p,它与其在右视图的对应点p’的相似性计算公式为:ρ(p,p')=(1-θ)
·
min(||l
p-l
p'
||,γ
col
)+θ
·
min(||g
p-g
p'
||,γ
grad
)
[0025]
式中∥g
p-g
p’∥为二者梯度的差值,θ、γ
col
以及γ
grad
为自定义参数,可以控制遮挡区域的像素,两个像素的梯度以及颜色差值越小则拥有越高的相似度。
[0026]
步骤4、迭代传播,具体包括空间传播、平面传播及视图传播三个方面;将先进行平面传播再进行视图传播,这样可以在进行视图传播时,传给右视图更好的视差平面。
[0027]
空间传播是针对每一个像素进行的,计算左视图的代价,判断新的代价是否比当前代价小,并不断更新最小的代价。在偶数次传播中,依次查找当前像素块下方以及右侧的像素块,确定其中与当前像素最相似的像素;在奇数次传播中,传播顺序改为寻找上方及左侧像素。
[0028]
在平面传播步骤,提前设定z坐标变化范围(-ωz,ωz)以及法向量的变化范围(-ωn,ωn),随机一个在z坐标变化范围内的值与当前视差求和,同时随机一个向量在变化范围内的值与原向量求和;新得到的视差值和法线组成新的视差平面,判断当前平面的代价与之前平面的大小,并不断更新最小代价。
[0029]
进一步,为了更快找到目标平面,采用随机扰动的形式进行搜索,以当前像素为中心,在特定范围内随机搜索。搜索范围公式为:
[0030]
s=x0+wαizi[0031]
z随机在-1到1之间,w设定了初始的搜索范围,α为缩小系数,通常每次随着i的增加搜索范围减半,因此α通常为
[0032]
在视图传播步骤,为了减少时间复杂度提高速度,直接把左视图的视差平面传播到右视图去,对左视图像素p,找到其在右视图的同名点p’,把p的视差平面传播给p’,这种算法只需要遍历一次左视图,左视图的视差平面的公式为:
[0033]dp
=a
p
x+b
p
y+c
[0034]
左右视图的纵坐标相同,横坐标相差的数值为视差值,由此得到右视图的视差平面公式:
[0035]
d'=-ax
p'-by
p'-(c+ad
p
)。
[0036]
步骤5、视差修正,包括一致性检测和视差填充;
[0037]
其中,左右一致性检测,是对于左视图的像素p,根据p’=p-d找到在右视图对应的像素p’,判断二者视差值是否在一定范围内,否则为误匹配点;
[0038]
对于视差填充,用加权中值滤波代替普通的滤波,在保存误匹配点的数组中,记录每一个点的视差平面,用其中结果最好的平面作为代替。
[0039]
进一步,为了解决视差方向单一产生的条纹问题,进行多方向的加权滤波。为窗口内的像素增加了权重:
[0040][0041]
按照权重大小的升序对所有数据进行排列,对权值进行累计求和,当和值超过总权值的一半时,得到最终的视差图。
[0042]
本发明用像素随机初始化代替亮度或颜色差的绝对值,之后用动态倾斜视差平面代替传统的census十字交叉域变换进行代价计算,解决了传统算法对census变换窗口中心像素依赖的问题。
[0043]
在此基础上独创从空间传播、视图传播到平面优化的迭代顺序,最后利用左右一致性检测对视差图像进行了优化,进一步降低了误差匹配率。
附图说明
[0044]
图1是本发明所实现的控制流程图。
[0045]
图2是本发明所实现的偶数次传播查找像素块示意图。
[0046]
图3是本发明所实现的奇数次传播查找像素块示意图。
具体实施方式
[0047]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0048]
如图1所示,本发明所实现的双目立体匹配算法,该算法首先对输入的图像的每一个像素随机一个视差和法线,并计算出视差平面;在进行代价计算后,对得到的图像进行空
间传播-视图传播-平面传播三次迭代传播;最后进行左右一致性检测、视差填充及加权中值滤波得到优化之后的视差图。
[0049]
其具体流程如下:
[0050]
1.生成动态倾斜视差平面
[0051]
为了进一步保证视差图的精确度,需要让视差范围在一定的范围内。做法是随机生成视差值z给每一个像素,同时为了表示平面,还需要随机一个法向量用法向量的方法表示空间中的平面。
[0052]
令a
p
,b
p
,c
p
分别为动态倾斜窗口的三个参数,可以表示为:
[0053][0054]
2.像素初始化。
[0055]
对于像素点c的视差平面方程可以表示为:
[0056]
dc=acx+bcy+c
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0057]
其中a,b,c为视差平面的3个参数。三个参数随着点c的x坐标及y坐标变化不断调整,形成动态平面。对于每个像素,希望找到一个合适的平面使得聚合代价最小。
[0058]
对于左右视图的像素,采用的匹配公式为:
[0059]
r(p,f)=σt(p,q)
·
ρ(q,q-(aq
x
+bqy+c)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0060]
式中r(p,f)为像素p当视差平面为f时的聚合代价值,t(p,q)是自适应的权重。
[0061]
通过色差判断像素p和q是否在同一个平面:
[0062][0063]
公式中,λ是自定义参数,∥lp-lq∥为像素p和q在rgb空间的距离,其值越小,则两像素越有可能在同一平面。这里通过动态倾斜计算视差平面,可以解决基线与被拍摄物体平行的角度问题。
[0064]
针对上述公式的最小化,另一个需要考虑的判断像素相似性的ρ。
[0065]
对于左视图的一个像素p,它与其在右视图的对应点p’的相似性计算公式为:
[0066]
ρ(p,p')=(1-θ)
·
min(||l
p-l
p'
||,γ
col
)+θ
·
min(||g
p-g
p'
||,γ
grad)
ꢀꢀꢀꢀꢀ
(5)
[0067]
式中∥g
p-g
p’∥为二者梯度的差值,θ、γ
col
以及γ
grad
为自定义参数,可以控制遮挡区域的像素。两个像素的梯度以及颜色差值越小则拥有越高的相似度。
[0068]
3.迭代传播,将先进行平面传播再进行视图传播,这样可以在进行视图传播时,传给右视图更好的视差平面。
[0069]
空间传播是针对每一个像素进行的。计算左视图的代价,判断新的代价是否比当前代价小,并不断更新最小的代价。在偶数次传播中,依次查找当前像素块下方以及右侧的像素块,确定其中与当前像素最相似的像素,如图2所示;在奇数次传播中,传播顺序改为寻找上方及左侧像素,如图3所示。
[0070]
在平面传播步骤,使用上文提到的点法式来表示平面,提前设定z坐标变化范围(-ωz,ωz)以及法向量的变化范围(-ωn,ωn)。随机一个在z坐标变化范围内的值与当前视差求和,同时随机一个向量在变化范围内的值与原向量求和。新得到的视差值和法线组成新的视差平面,判断当前平面的代价与之前平面的大小,并不断更新最小代价。在找到相似
区域后,可以将搜索范围确定在相似区域附近较小的范围内,排除其他位置的干扰。
[0071]
为了更快找到目标平面,采用随机扰动的形式进行搜索,以当前像素为中心,在特定范围内随机搜索。搜索范围公式为:
[0072]
s=x0+wαiziꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0073]
z随机在-1到1之间,w设定了初始的搜索范围,α为缩小系数,通常每次随着i的增加搜索范围减半,因此α通常为
[0074]
在视图传播步骤,传统的做法是在遍历左视图后仍然要遍历右视图像素,判断是否为左视图同名点,传播左视图的视差平面。为了减少时间复杂度提高速度,直接把左视图的视差平面传播到右视图去,对左视图像素p,找到其在右视图的同名点p’,把p的视差平面传播给p’,这种算法只需要遍历一次左视图。由上文可知,左视图的视差平面的公式为:
[0075]dp
=a
p
x+b
p
y+c
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)
[0076]
左右视图的纵坐标相同,横坐标相差的数值为视差值,由此得到右视图的视差平面公式:
[0077]
d'=-ax
p'-by
p'-(c+ad
p
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
[0078]
4.视差修正
[0079]
包括一致性检测和视差填充。
[0080]
4.1左右一致性检测
[0081]
左右一致性检查的原理是对于左视图的像素p,根据p’=p-d找到在右视图对应的像素p’,判断二者视差值是否在一定范围内,否则为误匹配点。将无匹配点保存到特定数组中,以便在视差填充时直接访问,提高效率。
[0082]
4.2视差填充
[0083]
用加权中值滤波代替普通的滤波,在保存误匹配点的数组中,记录每一个点的视差平面,用其中结果最好的平面作为代替。为了解决视差方向单一产生的条纹问题,进行多方向的加权滤波。为窗口内的像素增加了权重:
[0084][0085]
权重计算公式和上文中出现的一致。按照权重大小的升序对所有数据进行排列,对权值进行累计求和,当和值超过总权值的一半时,得到最终的视差图。
[0086]
本发明用像素随机初始化代替亮度或颜色差的绝对值,之后用动态倾斜视差平面代替传统的census十字交叉域变换进行代价计算,解决了传统算法对census变换窗口中心像素依赖的问题。在此基础上独创从空间传播、视图传播到平面优化的迭代顺序。最后利用左右一致性检测对视差图像进行了优化,进一步降低了误差匹配率。
[0087]
在计算机视觉的立体匹配研究当中,本发明可以较好的结合实际拍摄场景,摄像头基线为了生成视差图可以以任意角度倾斜,改变了传统算法必须平行于拍摄物体的情况。同时在生成效果方面,先进行空间传播再进行视图传播,可以让生成的视差图误匹配率更小。
[0088]
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1