立体视觉入门指南:相机标定之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],所以能否先计算投影矩阵,再通过投影矩阵计算内外参呢?确实可以,这就是我们今天要介绍的直接线性变换法的思路:

  1. 通过大量已知量 ( 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
  2. 分解矩阵 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直接线性变换建议收藏的主要内容,如果未能解决你的问题,请参考以下文章

立体视觉入门指南:相机标定之DLT直接线性变换建议收藏

立体视觉入门指南:相机标定之张式标定法超详细值得收藏

立体视觉入门指南:相机标定之张式标定法超详细值得收藏

立体视觉入门指南:双相机标定再不收藏我收费了~

立体视觉入门指南:双相机标定再不收藏我收费了~

立体视觉入门指南:双相机标定再不收藏我收费了~