计算机视觉——相机标定

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

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

  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。在一般的标定中,我们都有数十个已知点,使方程的个数远超未知数的个数,从而用最小二乘法求解以降低误差造成的影响。

相关推荐
小Q小Q39 分钟前
cmake编译LASzip和LAStools
人工智能·计算机视觉
yzx99101343 分钟前
基于 Q-Learning 算法和 CNN 的强化学习实现方案
人工智能·算法·cnn
token-go1 小时前
[特殊字符] 革命性AI提示词优化平台正式开源!
人工智能·开源
cooldream20092 小时前
华为云Flexus+DeepSeek征文|基于华为云Flexus X和DeepSeek-R1打造个人知识库问答系统
人工智能·华为云·dify
Blossom.1185 小时前
使用Python和Scikit-Learn实现机器学习模型调优
开发语言·人工智能·python·深度学习·目标检测·机器学习·scikit-learn
DFminer6 小时前
【LLM】fast-api 流式生成测试
人工智能·机器人
郄堃Deep Traffic6 小时前
机器学习+城市规划第十四期:利用半参数地理加权回归来实现区域带宽不同的规划任务
人工智能·机器学习·回归·城市规划
GIS小天7 小时前
AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月7日第101弹
人工智能·算法·机器学习·彩票
阿部多瑞 ABU7 小时前
主流大语言模型安全性测试(三):阿拉伯语越狱提示词下的表现与分析
人工智能·安全·ai·语言模型·安全性测试
cnbestec7 小时前
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
人工智能·线性代数·触觉传感器