赞
踩
本人书写本系列博客目的是为了记录我学习三维重建领域相关知识的过程和心得,不涉及任何商业意图,欢迎互相交流,批评指正。
在之前的博客中简单介绍过立体匹配,它是MVS稠密重建中的重要环节,而在这篇博客中,将详细的介绍立体匹配的相关概念,其中详细的过程和原理参考教程:70. 三维重建5-立体匹配1,立体匹配算法总体理解,该作者对意大利Bologna大学的Stefano Mattoccia教授在2012年编写的"Stereo vision: algorithms and applications"做了详细且透彻的解读。
在上一文中介绍了许多立体视觉相关的基础知识,将每一部分进行整合运用,就能够建立起完整的立体视觉系统,其中包括相机标定、极线矫正、立体匹配、三角测量,最终得到场景或者物体的深度信息:
相机标定的目的是获得两个相机的内参(焦距、图像中心、畸变参数等)以及外参(世界坐标系与相机坐标系之间的变换矩阵R和T),之后对图像进行校准,处理并获取图像的立体点对;
接下来,利用校准得到的图像点对信息进行极线矫正,目的是消除镜头畸变,并且将立体点对转华为标准形式。(对应点对依据对极约束理论被限制两图像极线所形成的平面上,并且通过极线矫正进而将对应点的二维搜索空间缩小到了一维)
当做到这一点后,就可以很方便的在水平方向搜索一个图像上的一点在另外一个图像上的对应点。如上图所示,左图上的一点p在右图上的对应点是p’,视差
d
=
x
R
−
x
T
d=x_R-x_T
d=xR−xT,而b是两个相机光心的距离, f是焦距。
旨在寻找目标图像在原图相中的对应点,而找到对应点后,求取空间点和相机之间距离的关键就变成了求取其投影点视差了。而整个图像上所有点的视差构成了一幅图像,这个图像叫做视差图;而通过校正后的一对图像获取到视差图的过程,叫做立体匹配;立体匹配属于立体视觉以及MVS稠密重建的重要部分,将在下面详细讨论;
如上图所示,根据相似三角形的计算,很容易可以得到物体距离相机观测点的距离(或深度):
b
Z
=
(
b
+
x
T
)
−
x
R
Z
−
f
→
Z
=
b
⋅
f
x
R
−
x
T
=
b
⋅
f
d
\frac{b}{Z}=\frac{(b+x_T)-x_R}{Z-f} \rightarrow Z=\frac{b·f}{x_R-x_T}=\frac{b·f}{d}
Zb=Z−f(b+xT)−xR→Z=xR−xTb⋅f=db⋅f
而给定视差图(立体匹配得到)、基线和焦距(校准后),三角测量就可以计算三维空间中点对应的位置,从而得到深度图。
若想要求得两个已校正的图像间的视差图,即转换为给定源图像上一点,在目标图像中的同一行约束范围
d
m
a
x
d_{max}
dmax内搜索与源图像匹配的对应点,如下图1所示;设匹配代价为
∣
I
R
(
x
,
y
)
−
I
T
(
x
+
d
,
y
)
∣
|I_R(x,y)-I_T(x+d,y)|
∣IR(x,y)−IT(x+d,y)∣,那么目标图像中所有待定像素的匹配代价如下图2所示;WTA(Winner Takes All,赢者通吃)是一种搜索策略,即从所有候选像素中挑选匹配代价最低的最为对应点;
但是由于噪声和距离等因素的影响,通过最基础的方法并不能得到理想的视差结果,这就引出了立体匹配优化视差结果的基本思路——图像预处理、匹配代价计算、代价聚合、视差优化、视察细化;
该部分@Wang Hawk也对"Stereo vision: algorithms and applications"进行了详细的解读,具体分为以下几个模块:
71. 三维重建6-立体匹配2,立体匹配中的代价聚合
72. 三维重建7-立体匹配3,立体匹配算法中的视差优化
73. 三维重建8-立体匹配4,利用视差后处理完善结果
关于立体匹配的策略,一般存在几种不同(不是互相排斥)的类别:
[1]70. 三维重建5-立体匹配1,立体匹配算法总体理解
[2]“Stereo vision: algorithms and applications”
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。