相机标定
用于计算相机内参
基于已知三维几何的参照物,基于定标盒,定标版可以得到一组三维到二维的对应点
基于定标盒
得到
P
P
P ,之后分解为
K
,
R
,
t
K,R,t
K,R,t
缺点:制作不方便,三维坐标难以保证精确
基于定标板(张正友方法)
X
X
X 为将相机坐标系中的三维点(只不过在这里
Z
=
0
Z=0
Z=0)
我们对上述式子进行简化,利用
H
H
H 来表示整个变换。
H
H
H 可以利用点对来求解
我们已知
H
H
H 之后,如何求得
K
K
K 呢?我们这里主要关注相机的内参,因为相机的外参随相机位置的变化而变化
h 1 = K r 1 , h 2 = K r 2 h_1 = Kr_1,h_2 = Kr_2 h1=Kr1,h2=Kr2 => r 1 = K − 1 h 1 , r 2 = K − 1 h 2 r_1=K^{-1}h_1,r_2=K^{-1}h_2 r1=K−1h1,r2=K−1h2。利用正交单位向量的性质得到两个式子。
令
B
=
K
−
T
K
−
1
B = K^{-T}K^{-1}
B=K−TK−1,上面得到的两个式子可以转换成如下形式
因为我们已知了
H
H
H , 也就是说
h
1
,
h
2
h_1,h_2
h1,h2 是已知的,我们如何求
B
B
B 呢?
我么可以将
h
i
T
B
h
j
h_i^TBh_j
hiTBhj 写成
v
i
j
T
b
v_{ij}^Tb
vijTb 的形式,这样我们就实现了已知参数和未知参数的分离。这里
B
B
B 是对称矩阵,因此真正需要求解的参数只有 6 个
于是,我们可以利用已知参数和位置参数分离的形式,将上面得到的两个式子,转化成如下形式。这样我们就可以利用Ab = 0 的形式了求解了
需要三个 H 来列出 6 个式子,求解 6 个未知数
具体求解过程
总结
到这里我们已经解决了两个问题,即相机外参和内参的求解
立体匹配
如果相机光轴平行
x
r
x_r
xr ,
x
l
x_l
xl 分别是
p
p
p 在两个相机的成像面中的坐标,一个在光心左边,一个在光心右边。
x
r
−
x
l
x_r-x_l
xr−xl 是视差,这表明,左右图像中对应像素的位移,与深度成反比
利用视差可以将一幅图转换成另一个相机拍的图(注意到这里只有
x
x
x 坐标之间有差别)
相机光轴平行,左右图像在
y
y
y 方向是对齐的,只需要进行1维匹配
相机光轴不平行
立体图像矫正
变换左右图像,使
y
y
y 轴平行且对齐。其实就是得到相机光轴平行的效果
具体实现方式:保持光心不变,将图像都重投影到平行于基线的某个平面上
利用极线约束,缩小搜索范围
- 概念回顾
- 当我们知道基础矩阵 F F F 和一个点的坐标后,可以确定这个点的对应点所在的直线方程。这里的 l 1 , l 0 l_1,l_0 l1,l0 表示的都是极线的参数
当我们得到极线方程后,同样也可以求出极点
左相机图像平面所有极线都经过极点
e
0
e_0
e0 ,也就是说
x
j
T
F
e
0
=
0
x_j^TFe_0 = 0
xjTFe0=0 恒成立,无论
x
j
x_j
xj 取什么值。因此
F
e
0
=
0
Fe_0=0
Fe0=0 。同理,
F
T
e
1
=
0
F^Te_1=0
FTe1=0
因为进行了极线约束,因此我们在立体匹配的时候进行一维搜索就行了
效果(利用窗口来搜索)
我们想要一个窗口窗口足够大,以便有足够的强度变化,但是又要足够小,以只包含具有相同视差的像素。
立体匹配与图像匹配的区别
立体匹配是用来计算深度的,图像是不同相机拍的,一般差异不大。(也有人为控制的原因)
一般的图像匹配没有太多的限制
深度相机分类
双目相机
结构光相机
一共有三个摄像头:一个用来投射投影,一个用来测量深度,另一个是常规摄像机
好处是将结构化的光投射到物体上,简化了特征匹配问题
激光相机
利用光的飞行时间来测距
光学三角测量
-
发射一束激光
-
扫描物体表面
-
这是一个非常精确的结构光扫描