相机模型 - 坐标系转换

世界坐标系 ( O − X w − Y w ) (O - X_w - Y_w) (OXwYw) -> 相机坐标系 ( O − X c − Y c ) (O - X_c - Y_c) (OXcYc) -> 图像坐标系 ( O − X i − Y i ) (O - X_i - Y_i) (OXiYi)-> 像素坐标系 ( O − U − V ) (O - U - V) (OUV)
像素坐标系 ( O − U − V ) (O - U - V) (OUV) -> 图像坐标系 ( O − X i − Y i ) (O - X_i - Y_i) (OXiYi) -> 相机坐标系 ( O − X c − Y c ) (O - X_c - Y_c) (OXcYc) -> 世界坐标系 ( O − X w − Y w ) (O - X_w - Y_w) (OXwYw)

世界坐标系 ( O − X w − Y w ) (O - X_w - Y_w) (OXwYw) <-> 相机坐标系 ( O − X c − Y c ) (O - X_c - Y_c) (OXcYc)

相机的外参矩阵:描述世界坐标系下的点,经过旋转和平移,转换成相机坐标系的矩阵。
世界坐标系 -> 相机坐标系:利用外参先旋转后平移
[ X c Y c Z c ] = R x R y R z [ X w Y w Z w ] + [ T x T y T z ] \left[ \begin{matrix} X_c\\ Y_c\\ Z_c\end{matrix} \right] = R_x R_yR_z \left[ \begin{matrix} X_w\\ Y_w\\ Z_w\end{matrix} \right] + \left[ \begin{matrix} T_x\\ T_y\\ T_z\end{matrix} \right] XcYcZc =RxRyRz XwYwZw + TxTyTz
相机的外参矩阵由旋转矩阵 R x R y R z R_xR_yR_z RxRyRz和平移矩阵 [ T x T y T z ] \left[\begin{matrix} T_x\\ T_y\\ T_z\end{matrix}\right] TxTyTz 共同组成。假设世界坐标系通过分别绕着X, Y, Z分别沿着右手法则方向旋转 α \alpha α, β \beta β, γ \gamma γ得到相机坐标系,对应的旋转矩阵分别为 R x R_x Rx, R y R_y Ry, R z R_z Rz.
我们可以得知旋转矩阵
R x = [ 1 0 0 0 cos ⁡ ( α ) sin ⁡ ( α ) 0 − sin ⁡ ( α ) cos ⁡ ( α ) ] , R y = [ cos ⁡ ( β ) 0 sin ⁡ ( β ) 0 1 0 − sin ⁡ ( β ) 0 cos ⁡ ( β ) ] , R y = [ cos ⁡ ( γ ) sin ⁡ ( γ ) 0 − sin ⁡ ( γ ) cos ⁡ ( γ ) 0 0 0 1 ] , R_x = \left[ \begin{matrix} 1 & 0 & 0\\ 0 & \cos(\alpha) & \sin(\alpha) \\ 0 & -\sin(\alpha) & \cos(\alpha) \end{matrix} \right], R_y = \left[ \begin{matrix} \cos(\beta) & 0 & \sin(\beta) \\ 0 & 1 & 0 \\ -\sin(\beta)& 0 & \cos(\beta) \end{matrix} \right], R_y = \left[ \begin{matrix} \cos(\gamma) & \sin(\gamma) & 0 \\ -\sin(\gamma) & \cos(\gamma) & 0 \\ 0 & 0 & 1 \end{matrix} \right], Rx= 1000cos(α)sin(α)0sin(α)cos(α) ,Ry= cos(β)0sin(β)010sin(β)0cos(β) ,Ry= cos(γ)sin(γ)0sin(γ)cos(γ)0001 ,
相机坐标系 -> 世界坐标系: 利用外参先平移后旋转
[ X w Y w Z w ] = ( R x R y R z ) ( − 1 ) ( [ X c Y c Z c ] − [ T x T y T z ] ) \left[ \begin{matrix} X_w\\ Y_w\\ Z_w\end{matrix} \right] = (R_x R_yR_z)^{(-1)} (\left[ \begin{matrix} X_c\\ Y_c\\ Z_c\end{matrix} \right] - \left[ \begin{matrix} T_x\\ T_y\\ T_z\end{matrix} \right]) XwYwZw =(RxRyRz)(1)( XcYcZc TxTyTz )

相机坐标系 -> 图像坐标系

在这里插入图片描述

假设相机坐标下的点 P c ( x c , y c , z c ) P_c(x_c, y_c, z_c) Pc(xc,yc,zc), 焦距为 f c f_c fc, 物理成像平面上的点 P i ( x i , y i ) P_i(x_i, y_i) Pi(xi,yi)。由小孔成像原理知道,点 P c P_c Pc经过相机的光心O投影到物理成像平面点 P i P_i Pi。由像素三角形可以得到:
x c x i = y c y i = z c f c = > x i = f c z c x c , y i = f c z c y c \frac{x_c}{x_i} = \frac{y_c}{y_i} = \frac{z_c}{f_c} => x_i = \frac{f_c}{z_c}x_c, y_i = \frac{f_c}{z_c}y_c xixc=yiyc=fczc=>xi=zcfcxc,yi=zcfcyc
写成矩阵形式为
z c [ x i y i 1 ] = [ f c 0 0 0 f c 0 0 0 1 ] [ x c y c z c ] z_c\left[ \begin{matrix} x_i\\ y_i\\ 1\end{matrix} \right] = \left[ \begin{matrix} f_c & 0 & 0\\ 0 & f_c & 0\\ 0 & 0 & 1\end{matrix} \right] \left[ \begin{matrix} x_c\\ y_c\\ z_c \end{matrix} \right] zc xiyi1 = fc000fc0001 xcyczc
从上面可以知道,如果已知相机焦距,相机坐标系的点到图像坐标系的点是可以转换的,也就是已知 P c P_c Pc f c f_c fc可以得到 P i P_i Pi. 而图像坐标系的点到相机坐标系的点是没法转换,也就是已知 P i P_i Pi f c f_c fc没法直接得到 P c P_c Pc。缺少深度信息,图像坐标系上的点映射到相机坐标系是一条射线。

图像坐标系 <-> 像素坐标系

图像坐标系还是在物理空间,单位还是m. 像素坐标系的单位是像素个数。分辨率R是指单位距离内存在的像素个数。通常情况下像素坐标系用平面O-U-V表示. 像素坐标系的通常定义是原点位于图像的左上角,u轴向右与图像坐标系X轴平行,v轴向下与图像坐标系Z轴平行。图像坐标系和像素坐标系存在缩放和原点平移关系。假设图像坐标系上的点 P i ( x i , y i ) P_i(x_i, y_i) Pi(xi,yi), 像素坐标系上的点 P ( u , v ) P(u, v) P(u,v)。像素坐标在u轴上缩放了 R x R_x Rx倍, 在v轴缩放了 R y R_y Ry倍,同时原点平移了 [ c x , c y ] T \left[c_x, c_y \right]^T [cx,cy]T.
[ u v ] = [ R x 0 0 R y ] [ x i y i ] + [ c x c y ] \left[ \begin{matrix} u\\ v \end{matrix} \right]= \left[\begin{matrix} R_x & 0 \\ 0 & R_y\end{matrix}\right] \left[\begin{matrix} x_i \\ y_i \end{matrix}\right] + \left[\begin{matrix} c_x \\ c_y \end{matrix}\right] [uv]=[Rx00Ry][xiyi]+[cxcy]
从上面可以得知,图像坐标系上的点到像素坐标系上的点经过了缩放和平移过程。
相机内参矩阵:描述相机坐标系上的点,通过缩放和平移,转换成像素坐标系上的点的矩阵。
结合相机坐标系 -> 图像坐标系 -> 像素坐标系,可以得到:

z c [ u v 1 ] = [ f x 0 c x 0 f y c y 0 0 1 ] [ x c y c z c ] = K [ x c y c z c ] z_c\left[ \begin{matrix} u\\ v\\ 1\end{matrix} \right] = \left[ \begin{matrix} f_x & 0 & c_x\\ 0 & f_y & c_y\\ 0 & 0 & 1\end{matrix} \right] \left[ \begin{matrix} x_c\\ y_c\\ z_c \end{matrix} \right] = K\left[ \begin{matrix} x_c\\ y_c\\ z_c \end{matrix} \right] zc uv1 = fx000fy0cxcy1 xcyczc =K xcyczc
上面的K即是相机内参, f x = R x f c , f y = R y f c f_x = R_xf_c, f_y = R_yf_c fx=Rxfc,fy=Ryfc.

总体而言世界坐标到像素坐标的转换为
z c [ u v 1 ] = [ f x 0 c x 0 f y c y 0 0 1 ] [ x c y c z c ] = K [ x c y c z c ] = K [ R x R y R z [ X w Y w Z w ] + [ T x T y T z ] ] z_c\left[ \begin{matrix} u\\ v\\ 1\end{matrix} \right] = \left[ \begin{matrix} f_x & 0 & c_x\\ 0 & f_y & c_y\\ 0 & 0 & 1\end{matrix} \right] \left[ \begin{matrix} x_c\\ y_c\\ z_c \end{matrix} \right] = K\left[ \begin{matrix} x_c\\ y_c\\ z_c \end{matrix} \right] = K\left[R_x R_yR_z \left[ \begin{matrix} X_w\\ Y_w\\ Z_w\end{matrix} \right] + \left[ \begin{matrix} T_x\\ T_y\\ T_z\end{matrix} \right]\right] zc uv1 = fx000fy0cxcy1 xcyczc =K xcyczc =K RxRyRz XwYwZw + TxTyTz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值