OpenCV中的相机标定

今天我们将详细讨论一下相机标定中,如何求解并确定相机图像平面与它所在3D世界位置的关系。首先我们想象有这样一个三维坐标系,它的原点位于投影的中心,Z轴沿着光轴方向,如图1所示。
在这里插入图片描述
图1所示的坐标系被叫做相机的标准坐标系统。空间坐标 M ( x , y , z ) M(x,y,z) Mx,y,z对应的图像平面坐标为 m ( x , y ) m(x,y) mx,y。从图中可以看出,空间坐标M和图像平面坐标m延长线交于坐标系原点,并且它们的 x x x y y y是与 X X X轴和 Y Y Y轴平行的。这里说明一下,图像平面到坐标中心的距离为图像焦距f。根据相似三角形,可以得到M与m之间的关系:
x = X f Z   y = Y f Z (1) x = \dfrac{Xf}{Z} \ y = \dfrac{Yf}{Z}\tag{1} x=ZXf y=ZYf(1)
将公式 ( 1 ) (1) (1)转换为齐次坐标:
( s x s y s ) = ( f 0 0 0 0 f 0 0 0 0 f 0 ) ( X Y Z 1 ) \begin{pmatrix} sx\\ sy\\ s\end{pmatrix}= \begin{pmatrix} f &0 &0 &0\\ 0 &f &0 &0\\ 0 &0 &f &0\end{pmatrix} \begin{pmatrix} X\\ Y\\ Z\\ 1\end{pmatrix} sxsys=f000f000f000XYZ1
这里的 s s s不等于 0 0 0为尺度变换因子。
实际像素坐标 ( u , v ) (u,v) (u,v)的原点位于图像平面的左上点,因此满足:
u = u c + x 像 素 宽 度 和 v = v c + y 像 素 高 度 (2) u =u_c+ \dfrac{x}{像素宽度} 和 v = v_c + \dfrac{y}{像素高度}\tag{2} u=uc+xv=vc+y(2)
公式 ( 2 ) (2) (2)中的 u c u_c uc v c v_c vc表示像素坐标的中心。我们可以用一个 3 ∗ 4 3*4 34矩阵来将三维世界坐标转换到图像像素坐标。联立公式 ( 1 ) (1) (1)和公式 ( 2 ) (2) (2),并且两边同时乘以 Z Z Z
Z u = Z u c + X f 像 素 宽 度 Zu =Zu_c+ \dfrac{Xf}{像素宽度} Zu=Zuc+Xf
Z v = Z v c + Y f 像 素 高 度 Zv = Zv_c + \dfrac{Yf}{像素高度} Zv=Zvc+Yf
转换为矩阵写法为:
( s x s y s ) = ( f 像 素 宽 度 0 u c 0 0 f 像 素 高 度 v c 0 0 0 1 0 ) ( X Y Z 1 ) \begin{pmatrix} sx\\ sy\\ s\end{pmatrix}= \begin{pmatrix} \dfrac{f}{像素宽度} &0 &u_c &0\\ 0 &\dfrac{f}{像素高度} &v_c &0\\ 0 &0 &1 &0\end{pmatrix} \begin{pmatrix} X\\ Y\\ Z\\ 1\end{pmatrix} sxsys=f000f0ucvc1000XYZ1
这里的尺度变换因子 s s s就是 Z Z Z值。将上述方式可简略表示成:
u ^ = P ⋅ M ^ \hat u=P \cdot \hat M u^=PM^
其中 u ^ \hat u u^表示图像像素坐标系的齐次向量, P P P表示透视投影矩阵, M ^ \hat M M^表示世界坐标的齐次向量。因此,一个相机可以考虑为从投影空间 P 3 P^3 P3到投影平面 P 2 P^2 P2的线性投影变换系统。
这里含有 5 5 5个相机参数,分别为焦距f,像素宽度,像素高度,在光轴中心的 u u u像素坐标中心的 u c u_c uc,在光轴中心的 v v v像素坐标中心的 v c v_c vc。然而,由于一个任意尺度变换因子涉及f和像素大小,所以只能求解 4 4 4个可分离参数。因此,我们只能求解比率 f / 像 素 宽 度 f/像素宽度 f/ f / 像 素 高 度 f/像素高度 f/。参数 a 、 b 、 c 和 d a、b、c和d abcd不依赖于相机在空间中的位置和方向,因此被称为内参。
通常情况下,一个点的三维世界坐标在一帧中是不确定的,因为它的原点在投影的中心,它的 Z Z Z轴沿着光轴方向。然后,为方便计算求解我们希望是确定的,那么需要一个变换的坐标从其它帧到标准坐标系下。因此,可得到:
u ^ = P ⋅ K ⋅ M ^ \hat u=P \cdot K \cdot \hat M u^=PKM^
这里K是一个4*4的齐次转换矩阵:
K = ( R t 0 3 T 1 ) K= \begin{pmatrix} R &t\\ 0_{3}^{T} &1\\ \end{pmatrix} K=(R03Tt1)
R R R表示 3 ∗ 3 3*3 33的旋转矩阵,编码相机的方向到给定的世界帧;最后一列为齐次向量 t t t,从世界帧原点捕捉相机移动。这个矩阵 K K K含有 6 6 6个自由度, 3 3 3个为方向, 3 3 3个相机的平移。这些参数被称为外参。
3 ∗ 4 相 机 矩 阵 P 和 4 ∗ 4 3*4相机矩阵P和4*4 34P44齐次转换K结合形成一个 3 ∗ 4 3*4 34矩阵 C C C,叫做相机标定矩阵,我们可以将C写成内参和外参的参数:
C = ( α u r 1 + u c r 3 α u t x + u c t z α v r 2 + v c r 3 α v t y + v c t z r 3 t z ) C= \begin{pmatrix} \alpha_{u}r_1+u_cr_3 &\alpha_{u}t_x+u_ct_z\\ \alpha_{v}r_2+v_cr_3 &\alpha_{v}t_y+v_ct_z\\ r_3&t_z \end{pmatrix} C=αur1+ucr3αvr2+vcr3r3αutx+uctzαvty+vctztz
这里的向量 r 1 , r 2 , r 3 r_1,r_2,r_3 r1,r2,r3是矩阵 R R R的行向量, t = ( t 1 , t 2 , t 3 ) t=(t_1,t_2,t_3) t=(t1,t2,t3),矩阵 C C C像矩阵 P P P有三行

参考链接
英文链接
中文链接
更多计算机视觉与图形学相关的知识请关注公众号:计算机视觉与图形学实战
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值