计算机视觉——相机标定

计算机视觉------相机标定

一、像素坐标系、图像坐标系、相机坐标系、世界坐标系

  1. 像素坐标系 :数字图像在计算机内为 M × N M\times N M×N 的数组,其中每个元素(称为像素)的数值即是图像点的亮度(或称为灰度,彩色图像对应的为RGB)。在图像上定义直角坐标系 u , v u,v u,v,每一个像素的坐标 ( u , v ) (u,v) (u,v) 分别是该像素在数组中的列数与行数。
  2. 图像坐标系 :以图像内某一点 O 1 O_1 O1 为原点, x x x 轴与 y y y 轴分别与 u , v u,v u,v轴平行,该坐标系中,原点 O 1 O_1 O1 定义在相机光轴与图像平面的交点,该点一般位于图像中心处。


图1 像素坐标系与图像坐标系

  1. 相机坐标系 :如图所示,其中 O O O 点称为相机光心, X c X_c Xc 轴和 Y c Y_c Yc 轴与图像的 x x x 轴与 y y y 轴平行, Z c Z_c Zc 轴为相机的光轴,它与图像平面垂直。光轴与图像平面的交点,即为图像物理坐标系的原点,由点 O O O 与 X c , Y c , Z c X_c,Y_c,Z_c Xc,Yc,Zc 轴组成的直角坐标系称为相机坐标系。 O O 1 OO_1 OO1 为相机焦距。
  2. 世界坐标系 :由于相机可安放在环境中的任意位置,我们在环境中还需选择一个基准坐标系来描述相机的位置,并用它描述环境中任意物体的位置,该坐标系称为世界坐标系。它由 X w , Y w , Z w X_w,Y_w,Z_w Xw,Yw,Zw 轴组成。


图2 相机坐标系与世界坐标系

二、坐标系变换

图像坐标系 → 像素坐标系

如图1所示,若 O 1 O_1 O1 在 u , v u,v u,v 坐标系中的坐标为 ( u 0 , v 0 ) (u_0,v_0) (u0,v0),每个像素在 x x x 轴与 y y y 轴方向上的物理尺寸为 d x , d y dx,dy dx,dy,单位:毫米(mm),则图像中任意一个像素在两个坐标系下的坐标有如下关系:
u = x d x + u 0 v = y d y + v 0 (1) \begin{aligned} u&=\frac{x}{dx}+u_0\\2ex v&=\frac{y}{dy}+v_0 \end{aligned}\tag{1} uv=dxx+u0=dyy+v0(1)

写成矩阵的形式:

u v 1 = 1 d x 0 u 0 0 1 d y v 0 0 0 1 x y 1 x y 1 = d x 0 − u 0 d x 0 d y − v 0 d y 0 0 1 u v 1 (2) \left \\begin{matrix} u \\\\\[2ex v \\2ex 1 \end{matrix} \right]= \left \\begin{matrix} \\dfrac{1}{dx} \& 0 \& u_0\\\\\[2ex 0 & \dfrac{1}{dy} & v_0\\2ex 0 & 0 & 1\\ \end{matrix} \right]\left \\begin{matrix} x \\\\\[2ex y \\2ex 1 \end{matrix} \right] \quad\Longleftrightarrow\quad \left \\begin{matrix} x \\\\\[2ex y \\2ex 1 \end{matrix} \right]= \left \\begin{matrix} dx \& 0 \& -u_0dx\\\\\[2ex 0 & dy & -v_0dy\\2ex 0 & 0 & 1\\ \end{matrix} \right]\left \\begin{matrix} u \\\\\[2ex v \\2ex 1 \end{matrix} \right]\tag{2} uv1 = dx1000dy10u0v01 xy1 ⟺ xy1 = dx000dy0−u0dx−v0dy1 uv1 (2)

相机坐标系 → 图像坐标系

如图2所示,相机坐标系中的点 ( X c , Y c , Z c ) (X_c,Y_c,Z_c) (Xc,Yc,Zc)投影到图像坐标系中的点为 ( x , y ) (x,y) (x,y)。根据相似三角形原理可以得到如下关系式:
x = f X c Z c , y = f Y c Z c (3) \begin{aligned} x=\dfrac{fX_c}{Z_c},\quad y=\dfrac{fY_c}{Z_c} \end{aligned}\tag{3} x=ZcfXc,y=ZcfYc(3)

写成矩阵的形式:
Z c x y 1 = f 0 0 0 0 f 0 0 0 0 1 0 X c Y c Z c 1 (4) Z_c\left \\begin{matrix} x \\\\\[2ex y \\2ex 1 \end{matrix} \right]=\left \\begin{matrix} f \& 0 \& 0 \& 0\\\\\[2ex 0 & f & 0 & 0\\2ex 0 & 0 & 1 & 0\\ \end{matrix} \right]\left \\begin{matrix} X_c \\\\\[2ex Y_c \\2ex Z_c \\2ex 1 \end{matrix} \right]\tag{4} Zc xy1 = f000f0001000 XcYcZc1 (4)

世界坐标系 → 相机坐标系

相机坐标系与世界坐标系之间的关系可以用旋转矩阵 R \pmb R R 与平移向量 t \pmb t t 来描述。因此,若空间中某一点 P \pmb P P 在世界坐标系与相机坐标系下的坐标分别为 ( X w , Y w , Z w , 1 ) T (X_w,Y_w,Z_w,1)^T (Xw,Yw,Zw,1)T 与 ( X c , Y c , Z c , 1 ) T (X_c,Y_c,Z_c,1)^T (Xc,Yc,Zc,1)T,于是存在如下关系:
X c Y c Z c 1 = R t 0 T 1 X w Y w Z w 1 = M 1 X w Y w Z w 1 (5) \left \\begin{matrix} X_c \\\\\[2ex Y_c \\2ex Z_c \\2ex 1 \end{matrix} \right]= \left \\begin{matrix} \\pmb R \& \\pmb t\\\\\[2ex \ {\pmb 0}^T & 1 \end{matrix} \right]\left \\begin{matrix} X_w \\\\\[2ex Y_w \\2ex Z_w \\2ex 1 \end{matrix} \right]=\pmb M_1\left \\begin{matrix} X_w \\\\\[2ex Y_w \\2ex Z_w \\2ex 1 \end{matrix} \right]\tag{5} XcYcZc1 =R 0Tt1 XwYwZw1 =M1 XwYwZw1 (5)

其中, R \pmb R R 为 3 × 3 3\times 3 3×3 单位正交矩阵, t \pmb t t 为三维平移向量, 0 = ( 0 , 0 , 0 ) T \pmb 0=(0,0,0)^T 0=(0,0,0)T, M 1 \pmb M_1 M1 为 4 × 4 4\times 4 4×4 矩阵。

⋆ \star ⋆ 世界坐标系 → 像素坐标系

联立式 ( 2 ) , ( 4 ) , ( 5 ) (2),(4),(5) (2),(4),(5),消去 ( x , y , 1 ) T , ( X c , Y c , Z c , 1 ) T (x,y,1)^T,(X_c,Y_c,Z_c,1)^T (x,y,1)T,(Xc,Yc,Zc,1)T,有,
Z c u v 1 = 1 d x 0 u 0 0 1 d y v 0 0 0 1 f 0 0 0 0 f 0 0 0 0 1 0 R t 0 T 1 X w Y w Z w 1 = a x 0 u 0 0 0 a y v 0 0 0 0 1 0 R t 0 T 1 X w Y w Z w 1 = M 1 M 2 X w Y w Z w 1 = M X w Y w Z w 1 (6) \begin{aligned} Z_c\left \\begin{matrix} u \\\\\[2ex v \\2ex 1 \end{matrix} \right]&=\left \\begin{matrix} \\dfrac{1}{dx} \& 0 \& u_0\\\\\[2ex 0 & \dfrac{1}{dy} & v_0\\2ex 0 & 0 & 1\\ \end{matrix} \right]\left \\begin{matrix} f \& 0 \& 0 \& 0\\\\\[2ex 0 & f & 0 & 0\\2ex 0 & 0 & 1 & 0\\ \end{matrix} \right]\left \\begin{matrix} \\pmb R \& \\pmb t\\\\\[2ex \ {\pmb 0}^T & 1 \end{matrix} \right]\left \\begin{matrix} X_w \\\\\[2ex Y_w \\2ex Z_w \\2ex 1 \end{matrix} \right]\\ &=\left \\begin{matrix} a_x \& 0 \& u_0 \& 0\\\\\[2ex 0 & a_y & v_0 & 0\\2ex 0 & 0 & 1 & 0\\ \end{matrix} \right]\left \\begin{matrix} \\pmb R \& \\pmb t\\\\\[2ex \ {\pmb 0}^T & 1 \end{matrix} \right]\left \\begin{matrix} X_w \\\\\[2ex Y_w \\2ex Z_w \\2ex 1 \end{matrix} \right]\\ &=\pmb M_1\pmb M_2 \left \\begin{matrix} X_w \\\\\[2ex Y_w \\2ex Z_w \\2ex 1 \end{matrix} \right]\\ &=\pmb M \left \\begin{matrix} X_w \\\\\[2ex Y_w \\2ex Z_w \\2ex 1 \end{matrix} \right] \end{aligned}\tag{6} Zc uv1 = dx1000dy10u0v01 f000f0001000 R 0Tt1 XwYwZw1 = ax000ay0u0v01000 R 0Tt1 XwYwZw1 =M1M2 XwYwZw1 =M XwYwZw1 (6)

其中, a x = f d x , a y = f d y a_x=\dfrac{f}{dx},a_y=\dfrac{f}{dy} ax=dxf,ay=dyf, 由于 a x , a y , u 0 , v 0 a_x,a_y,u_0,v_0 ax,ay,u0,v0 只与相机内部结构有关,因此称 M 1 \pmb M_1 M1 为相机的内参矩阵 ;而 M 2 \pmb M_2 M2 完全由相机相对于世界坐标系的方位决定,因此称为相机的外参矩阵 ;称 M \pmb M M 为投影矩阵

三、相机标定

确定某一相机的内外参矩阵,称为相机标定。

将式 ( 6 ) (6) (6) 写成
Z c i u i v i 1 = m 11 m 12 m 13 m 14 m 21 m 22 m 23 m 24 m 31 m 32 m 33 m 34 X w i Y w i Z w i 1 (7) Z_{ci}\left \\begin{matrix} u_i \\\\\[2ex v_i \\2ex 1 \end{matrix} \right]=\left \\begin{matrix} m_{11} \& m_{12} \& m_{13} \& m_{14} \\\\\[2ex m_{21} & m_{22} & m_{23} & m_{24} \\2ex m_{31} & m_{32} & m_{33} & m_{34} \end{matrix} \right]\left \\begin{matrix} X_{wi} \\\\\[2ex Y_{wi} \\2ex Z_{wi} \\2ex 1 \end{matrix} \right]\tag{7} Zci uivi1 = m11m21m31m12m22m32m13m23m33m14m24m34 XwiYwiZwi1 (7)

其中, ( X w i , Y w i , Z w i , 1 ) (X_{wi},Y_{wi},Z_{wi},1) (Xwi,Ywi,Zwi,1) 为空间中第 i i i 个点的世界坐标; ( u i , v i , 1 ) (u_i,v_i,1) (ui,vi,1) 为对应的像素坐标。式 ( 7 ) (7) (7) 包含三个方程:
Z c i u i = m 11 X w i + m 12 Y w i + m 13 Z w i + m 14 Z c i v i = m 21 X w i + m 22 Y w i + m 23 Z w i + m 24 Z c i = m 31 X w i + m 32 Y w i + m 33 Z w i + m 34 (8) \begin{aligned} Z_{ci}u_i&=m_{11}X_{wi}+m_{12}Y_{wi}+m_{13}Z_{wi}+m_{14}\\2ex Z_{ci}v_i&=m_{21}X_{wi}+m_{22}Y_{wi}+m_{23}Z_{wi}+m_{24}\\2ex Z_{ci}&=m_{31}X_{wi}+m_{32}Y_{wi}+m_{33}Z_{wi}+m_{34} \end{aligned}\tag{8} ZciuiZciviZci=m11Xwi+m12Ywi+m13Zwi+m14=m21Xwi+m22Ywi+m23Zwi+m24=m31Xwi+m32Ywi+m33Zwi+m34(8)

将式 ( 8 ) (8) (8) 中的第一式减去 u i u_i ui 乘第三式,第二式减去 v i v_i vi 乘第三式,分别消去 Z c i Z_{ci} Zci 后,可得如下线性方程:
X w i m 11 + Y w i m 12 + Z w i m 13 + m 14 − u i X w i m 31 − u i Y w i m 32 − u i Z w i m 33 − u i m 34 = 0 X w i m 21 + Y w i m 22 + Z w i m 23 + m 24 − v i X w i m 31 − v i Y w i m 32 − v i Z w i m 33 − v i m 34 = 0 (9) \begin{aligned} X_{wi}m_{11}+Y_{wi}m_{12}+Z_{wi}m_{13}+m_{14}-u_iX_{wi}m_{31}-u_iY_{wi}m_{32}-u_iZ_{wi}m_{33}-u_im_{34}&=0\\2ex X_{wi}m_{21}+Y_{wi}m_{22}+Z_{wi}m_{23}+m_{24}-v_iX_{wi}m_{31}-v_iY_{wi}m_{32}-v_iZ_{wi}m_{33}-v_im_{34}&=0\\2ex \end{aligned}\tag{9} Xwim11+Ywim12+Zwim13+m14−uiXwim31−uiYwim32−uiZwim33−uim34Xwim21+Ywim22+Zwim23+m24−viXwim31−viYwim32−viZwim33−vim34=0=0(9)

上式表示,若已知 n n n 个点的世界坐标 ( X w i , Y w i , Z w i ) (X_{wi},Y_{wi},Z_{wi}) (Xwi,Ywi,Zwi),与它们的像素坐标 ( u i , v i ) (u_i,v_i) (ui,vi),则我们有 2 n 2n 2n 个关于投影矩阵 M \pmb M M 元素的线性方程。

由此可见,由空间6个以上点的世界坐标与对应的像素坐标,我们可求出投影矩阵 M \pmb M M。在一般的标定中,我们都有数十个已知点,使方程的个数远超未知数的个数,从而用最小二乘法求解以降低误差造成的影响。

相关推荐
奔跑中的小象31 分钟前
统信UOS + 天数AI卡部署SGLang服务手册
人工智能·uos·sglang·天数智芯
DevSecOps选型指南34 分钟前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
Shockang1 小时前
LangGraph 状态机实战
人工智能
刹那芳华19921 小时前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作1 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门1 小时前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜1 小时前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟1 小时前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
天国梦2 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能
阿里云云原生2 小时前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能