相机模型及公式推导

目录

一、相机中的坐标:

二、内参公式推导:

三、坐标系的转换:

1.世界坐标系    到    相机坐标系

2.相机坐标系    到    图像坐标系

3.图像坐标系    到    像素坐标系

4.世界坐标系    到    像素坐标系

四、相机畸变:

1.径向畸变(透镜自身形状对光线的影响)

2.切向畸变(机械组装偏差)

3.通过5个参数来纠正畸变

五、双目相机模型:


一、相机中的坐标:

相机坐标中有4个坐标系(右手系),为world、camera、image、pixel

  1. 世界坐标系(World):真是存在或者不存在的点,可以任意指定;
  2. 相机坐标系(Camera):原点为相机针孔,z与光轴重合,x_cy_x平行投影面;
  3. 图像坐标系(Image):原点为光轴和投影面的焦点,x_cy_x平行投影面;
  4. 像素坐标系(Pixel):投影面坐上角为o_{pixel},u,v和投影两个边重合;

二、内参公式推导:

设置图像中点P坐标为:[X,Y,Z]^{T}

在物理成像平面坐标为:[{X}',{Y}',{Z}' ]^{T}

因为小孔成像为相似三角形,所以可以得到:

  \frac{Z}{f}=-\frac{X}{​{X}'}=-\frac{Y}{​{Y}'}

将成像平面转移到以小孔划分的物一侧:

\frac{Z}{f}=\frac{X}{​{X}'}=\frac{Y}{​{Y}'}   

进一步可得:

{X}'=f\frac{X}{Z}{Y}'=f\frac{Y}{Z}

设图像的像素坐标P'为:[u,v]^{T}

若坐标在u上缩放了\alpha倍,在v上缩放了\beta倍,同时平移了[C_x,C_y]^{T}

那么在图像上P‘表示为:

\begin{cases} & \text{ } u= \alpha {X}'+C_{x}\\ & \text{ } v= \beta {Y}'+C_{y} \end{cases}

{X}'=f\frac{X}{Z}{Y}'=f\frac{Y}{Z}代入到:

\begin{cases} & \text{ } u= \alpha {X}'+C_{x}\\ & \text{ } v= \beta {Y}'+C_{y} \end{cases}

并定义:\begin{cases} & f_x=f\alpha \\ & f_y=f\beta \end{cases}

得:

\begin{cases} & \text{ } u=f_x\frac{X}{Z}+C_x \\ & \text{ } v=f_y\frac{Y}{Z}+C_y \end{cases}

那么可以得出:

\begin{pmatrix} u \\ v \\ 1 \end{pmatrix}=\frac{1}{Z}\begin{pmatrix} f_x & 0 & c_x\\ 0 & f_y & c_y\\ 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} X\\ Y\\ Z \end{pmatrix}\doteq \frac{1}{Z}KP

若相机的世界坐标为P_w,那么:

ZP_{uv}=Z\begin{bmatrix} u\\ v\\ 1 \end{bmatrix}=\begin{bmatrix} f_x & 0 &c_x \\ 0&f_y &c_y \\ 0& 0 &1 \end{bmatrix}\begin{bmatrix} X\\Y \\Z \end{bmatrix}=KP=K(RP_w+t)=K\begin{bmatrix} R & t\\ 0&1 \end{bmatrix}P_w =KTP_w

三、坐标系的转换:

1.世界坐标系    到    相机坐标系

世界坐标系中有一点:P_w={(x_w,y_w,z_w)}^T

相机坐标系中有一点:P_c={(x_c,y_c,z_c)}^T

可得:

P_c=\begin{bmatrix} R&T \\ 0&1 \end{bmatrix}P_w

其中:

R=\begin{bmatrix} r_{11} &r_{12} &r_{13} \\ r_{21}&r_{22} &r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix}     

T=\begin{bmatrix} t_x &t_y& t_z \end{bmatrix}^T

2.相机坐标系    到    图像坐标系

相机坐标系中有一点:P_c={(x_c,y_c,z_c,1)}^T

图像坐标系中有一点:m={(x_p,y_p,1)}^T

根据小孔成像原理:

{x_p}=f\frac{x_c}{z_c}{y_p}=f\frac{y_c}{z_c}

所以:

\begin{cases} & x_pz_c=fx_c \\ & y_pz_c=fy_c \end{cases}

补全成其次方程可得:

z_c\begin{bmatrix} x_p\\y_p \\1 \end{bmatrix}=\begin{bmatrix} fx_c& 0 & 0 & 0\\ 0&fy_c &0 &0 \\ 0&0 & z_c &0 \end{bmatrix}

可得:

z_c\begin{bmatrix} x_p\\y_p \\1 \end{bmatrix}=\begin{bmatrix} f& 0 & 0 & 0\\ 0&f &0 &0 \\ 0&0 &1 &0 \end{bmatrix}\begin{bmatrix} x_c\\y_c \\ z_c\\ 1 \end{bmatrix}

即:

z_cm=\begin{bmatrix} f& 0 & 0 & 0\\ 0&f &0 &0 \\ 0&0 &1 &0 \end{bmatrix}P_c

实际中主点可能不再图像坐标原点,若点在坐标系中的坐标为p={(x_0,y_0,1)}^T

那么:

z_cm=\begin{bmatrix} f_x\\y_0 \\1 \end{bmatrix}=\begin{bmatrix} f& 0 & x_0 & 0\\ 0&f &y_0 &0 \\ 0&0 &1 &0 \end{bmatrix}P_c

3.图像坐标系    到    像素坐标系

设像素坐标为:pixl={(u,v,1)}^T

设图像坐标为:m={(x_p,y_p,1)}^T

一个像素的长和宽为:  d_x,d_y

那么:

\begin{cases} & u=\frac{x_p}{d_x} \\ & v=\frac{y_p}{d_y} \end{cases}

改写为矩阵:

\begin{bmatrix} u\\v \\1 \end{bmatrix}=\begin{bmatrix} \frac{1}{d_x} & 0 & 0\\ 0 & \frac{1}{d_y} & \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} x_p\\y_p \\ 1 \end{bmatrix}

即:

picl=\begin{bmatrix} \frac{1}{d_x} & 0 & 0\\ 0 & \frac{1}{d_y} & \\ 0 & 0 & 1 \end{bmatrix}m

因为:

\begin{cases} & u=\frac{x_p}{d_x} \\ & v=\frac{y_p}{d_y} \end{cases}

所以结合相机到图像的变换,那么相机到像素的变换矩阵为:

k=\begin{bmatrix} \frac{1}{d_x}&0 &0 \\ 0& \frac{1}{d_y}& 0\\ 0& 0 &1 \end{bmatrix}\begin{bmatrix} f&0&x_0\\ 0&f&y_0\\ 0&0&1 \end{bmatrix}=\begin{bmatrix} f_x &0 &u_0 \\ 0 & f_y & v_0\\ 0& 0 &1 \end{bmatrix}

4.世界坐标系    到    像素坐标系

根据以上可得:

z_c\begin{bmatrix} u\\v \\ 1 \end{bmatrix}=\begin{bmatrix} f_x &0 &u_0 \\ 0 & f_y & v_0\\ 0& 0 &1 \end{bmatrix}\begin{bmatrix} R&T \\ 0&1 \end{bmatrix}\begin{bmatrix} x_w\\y_w \\z_w \\1 \end{bmatrix}

即:

z_c\begin{bmatrix} u\\v \\ 1 \end{bmatrix}=K\begin{bmatrix} R&T \\ 0&1 \end{bmatrix}\begin{bmatrix} x_w\\y_w \\z_w \\1 \end{bmatrix}

四、相机畸变:

1.径向畸变(透镜自身形状对光线的影响)

  • 桶形畸变
  • 枕形畸变

可以通过三个畸变参数k_1,k_2,k_3来纠正,其中畸变较小的图像中心区域可以用 k_1 来纠正,越向边缘走依次用 k_2,k_3:

\begin{cases} & x_{distorted}= x(1+k_1r^2+k_2r^4+k_3r^6) \\ & y_{distorted}= y(1+k_1r^2+k_2r^4+k_3r^6) \end{cases}

2.切向畸变(机械组装偏差)

使用 p_1,p_2 来纠正

\begin{cases} & x_{distorted}=x+2p_1xy+p_2(r^2+2x^2)\\ & y_{distorted}=y+p_1(r^2+2y^2)+2p_2xy \end{cases}

3.通过5个参数来纠正畸变

设归一化坐标为{\begin{bmatrix} x & y \end{bmatrix}}^T

\begin{cases} & x_{distorted}=x(1+k_1r^2+k_2r^4+k_3r^6)+2p_1xy+p_2(r^2+2x^2)\\ & y_{distorted}=y(1+k_1r^2+k_2r^4+k_3r^6)+p_1(r^2+2y^2)+2p_2xy \end{cases}

\begin{cases} & u=f_xx_{distorted}+c_x \\ & v=f_yy_{distorted}+c_y \end{cases}

 通过8个参数来纠正畸变:

 

五、双目相机模型:

根据相似三角形原理:

\frac{z-f}{z}=\frac{b-u_L+u_R}{b}

可得:

z=\frac{fb}{d}    其中d=u_L-u_R

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
相机内参标定是指确定相机的内部参数,包括焦距、主点坐标和畸变参数等。其中,最常用的相机内参标定方法是使用棋盘格标定法。 推导相机内参标定的公式涉及到相机投影模型以及棋盘格图像中的特征点坐标。下面是相机内参标定的公式推导过程: 1. 相机投影模型: 在相机投影模型中,将三维空间的点通过相机投影变换映射到二维图像平面上。这个变换过程可以用如下公式表示: x = f * X / Z + cx y = f * Y / Z + cy 其中,(x, y) 是图像平面上的点坐标,(X, Y, Z) 是三维空间中的点坐标,f 是焦距,(cx, cy) 是主点坐标。 2. 棋盘格图像特征点坐标: 在棋盘格标定法中,通过拍摄棋盘格图像并检测出图像中的棋盘格角点,可以得到一系列特征点的像素坐标。 3. 内参标定公式推导: 假设有 N 个特征点,在相机投影模型中,每个特征点对应一个方程: x_i = f * X_i / Z_i + cx y_i = f * Y_i / Z_i + cy 其中,(x_i, y_i) 是第 i 个特征点的图像坐标,(X_i, Y_i, Z_i) 是该特征点在相机坐标系下的三维坐标。 将这 N 个方程组合成矩阵形式: [x_1, y_1, 1] [f, 0, cx] [X_1] [x_2, y_2, 1] = [0, f, cy] * [Y_1] ... [0, 0, 1] [Z_1] ... ... [x_N, y_N, 1] [X_N] [Y_N] [Z_N] 可以使用最小二乘法求解上述方程组,得到相机的内部参数,即焦距 f、主点坐标 (cx, cy)。 4. 畸变参数的标定: 在实际相机中,由于光学镜头的制造误差等原因,图像中的像素并不完全符合理想投影模型。因此,需要引入畸变参数来校正图像。 常用的畸变模型是径向畸变模型。径向畸变可以通过以下公式进行校正: x_c = x * (1 + k_1 * r^2 + k_2 * r^4 + k_3 * r^6) y_c = y * (1 + k_1 * r^2 + k_2 * r^4 + k_3 * r^6) 其中,(x, y) 是未校正的图像坐标,(x_c, y_c) 是校正后的图像坐标,r 是径向距离,k_1、k_2、k_3 是径向畸变系数。 通过以上推导过程,可以得到相机内参标定的公式。在实际应用中,可以使用标定板拍摄一系列图像,并通过相机内参标定算法求解相机内参。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值