立体视觉入门指南:相机标定之DLT直接线性变换建议收藏
Posted 李迎松~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了立体视觉入门指南:相机标定之DLT直接线性变换建议收藏相关的知识,希望对你有一定的参考价值。
亲爱的同学们,我们的世界是3D世界,我们的双眼能够观测三维信息,帮助我们感知距离,导航避障,从而翱翔于天地之间。而当今世界是智能化的世界,我们的科学家们探索各种机器智能技术,让机器能够拥有人类的三维感知能力,并希望在速度和精度上超越人类,比如自动驾驶导航中的定位导航,无人机的自动避障,测量仪中的三维扫描等,都是高智机器智能技术在3D视觉上的具体实现。
立体视觉是三维重建领域的重要方向,它模拟人眼结构用双相机模拟双目,以透视投影、三角测量为基础,通过逻辑复杂的同名点搜索算法,恢复场景中的三维信息。它的应用十分之广泛,自动驾驶、导航避障、文物重建、人脸识别等诸多高科技应用都有它关键的身影。
本课程将带大家由浅入深的了解立体视觉的理论与实践知识。我们会从坐标系讲到相机标定,从被动式立体讲到主动式立体,甚至可能从深度恢复讲到网格构建与处理,感兴趣的同学们,来和我一起探索立体视觉的魅力吧!
本课程是电子资源,所以行文并不会有太多条条框框的约束,但会以逻辑清晰、浅显易懂为目标,水平有限,若有不足之处,还请不吝赐教!
个人微信:EthanYs6,加我申请进技术交流群 StereoV3D,一起技术畅聊。
CSDN搜索 :Ethan Li 李迎松,查看网页版课程。
随课代码,将择日上传至github上,地址:StereoV3DCode:https://github.com/ethan-li-coding/StereoV3DCode
同学们好,在上一篇立体视觉入门指南(3):相机标定之张式标定法中,我们接触了迄今为止可能是最为出名应用最为广泛的相机标定方法:Zhang式标定法。但实际上,并不止其一种标定方法被广泛使用,还有另外一种使用也非常广泛的标定方法,称为:直接线性变换法(Direct Linear Transform,DLT)。
让我们首先回顾下,通过投影矩阵
M
M
M建立的世界坐标系
P
w
P_w
Pw与图像坐标系
p
p
p之间的关系式:
λ
p
=
K
[
R
t
]
[
P
w
1
]
=
M
[
P
w
1
]
,
M
=
K
[
R
t
]
\\lambda p=K\\left[\\beginmatrixR&t\\endmatrix\\right]\\left[\\beginmatrixP_w\\\\1\\endmatrix\\right]=M\\left[\\beginmatrixP_w\\\\1\\endmatrix\\right],M=K\\left[\\beginmatrixR&t\\endmatrix\\right]
λp=K[Rt][Pw1]=M[Pw1],M=K[Rt]
相机标定的目的是确定相机的内参矩阵 K K K以及外参矩阵 R , t R,t R,t(可选)。而投影矩阵刚好由内外参唯一确定 M = K [ R t ] M=K\\left[\\beginmatrixR&t\\endmatrix\\right] M=K[Rt],所以能否先计算投影矩阵,再通过投影矩阵计算内外参呢?确实可以,这就是我们今天要介绍的直接线性变换法的思路:
- 通过大量已知量 ( p , P w ) (p,P_w) (p,Pw),代入关系式 λ p = M [ P w 1 ] \\lambda p=M\\left[\\beginmatrixP_w\\\\1\\endmatrix\\right] λp=M[Pw1]计算投影矩阵 M M M。
- 分解矩阵 M M M得到 K , R , t K,R,t K,R,t。
第一步我们可以通过线性方程组的求解来计算 M M M,而第二步,则采用矩阵的QR分解来实现。
本篇第二节开始我们将聊一聊具体的实现细节,第一节首先来看下DLT直接线性变换法到底在什么场景下有其用武之地。
文章目录
DLT直接线性变换法的应用场景
有同学想必有疑问,既然有了非常方便操作的张式标定法,为什么我们还需要直接线性变换法呢?
张式标定法虽然方便,但是有一个明显的缺点就是必须要求标定板是平面,精度要求越高的应用,就对标定板的平面度有更高的要求。当测量距离很小时,比如在30cm左右,相机的FOV也在数十厘米的范围,我们可以制作一块小型标定板,比如20cm*20cm,并在工艺上提出较高要求,比如板子的平面度在微米级。但是当测量距离很大时,比如在30米,且FOV在有在数十米的范围,这时候你再要求做一块高精度的超大平面,就非常不现实了。
所以,我们不会再采用张式标定法,而是使用大型的三维标定场,就像下图这样:
标定场中布设有大量已知世界坐标 P w ( X w , Y w , Z w ) P_w(X_w,Y_w,Z_w) Pw(Xw,Yw,Zw)的控制点,用需要标定的相机拍摄控制场并提取控制点的图像坐标 p ( u , v ) p(u,v) p(u,v),得到大量观测值 ( p i , P w i ) (p_i,P_wi) (pi,Pwi),即可通过DLT直接线性变换法求出投影矩阵 M M M,进而分解得到内外参 K , R , t K,R,t K,R,t。
DLT实现细节1:解线性方程组求解 M M M
投影关系式
λ
p
=
M
[
P
w
1
]
\\lambda p=M\\left[\\beginmatrixP_w\\\\1\\endmatrix\\right]
λp=M[Pw1]建立了世界坐标系和图像坐标系之间的关系,它是一个齐次坐标表达式,我们设
x
=
λ
p
=
λ
[
u
v
1
]
,
X
=
[
P
w
1
]
=
(
X
,
Y
,
Z
,
1
)
T
\\text x=\\lambda p=\\lambda \\left[\\beginmatrixu\\\\v\\\\1\\endmatrix\\right],\\text X=\\left[\\beginmatrixP_w\\\\1\\endmatrix\\right]=(X,Y,Z,1)^T
x=λp=λ⎣⎡uv1⎦⎤,X=[Pw1]=(X,Y,Z,1)T,得到
x
=
M
X
(1)
\\text x=M\\text X \\tag 1
x=MX(1)
投影矩阵
M
M
M是一个
3
×
4
3\\times4
3×4矩阵,不妨设
M
=
[
m
11
m
12
m
13
m
14
m
21
m
22
m
23
m
24
m
31
m
32
m
33
m
34
]
=
[
A
T
B
T
C
T
]
M= \\left[\\beginmatrixm_11&m_12&m_13&m_14\\\\m_21&m_22&m_23&m_24\\\\m_31&m_32&m_33&m_34\\endmatrix\\right]=\\left[\\beginmatrixA^T\\\\B^T\\\\C^T\\endmatrix\\right]
M=⎣⎡m11m21m31m12m22m32m13m23m33m14m24m34⎦⎤=⎣以上是关于立体视觉入门指南:相机标定之DLT直接线性变换建议收藏的主要内容,如果未能解决你的问题,请参考以下文章