1 概述
在计算机视觉领域中,训练模型通常需要使用到大量的图像数据,而图像数据来源于真实的物理世界。要想将真实物理世界中的物体转换为可以输入到模型中图像数据,即图像获取阶段,需要使用相机完成这一转换。本文简要介绍相机是如何具体实现这一转换的。
2 世界坐标系到相机坐标系的转换
世界坐标系是指3D世界中的绝对坐标系;相机坐标系是指以相机的光心为原点,x轴和y轴分别平行于相机成像平面的X、Y轴,z轴平行于相机的光轴的相对坐标系。世界坐标系到相机坐标系的转换需要进行坐标系的旋转和平移。
对于世界坐标系中的点(xw,yw,zw),将其转换为相机坐标系中的点(xc,yc,zc),如下所示。
⎝⎛xcyczc⎠⎞=R⎝⎛xwywzw⎠⎞+t(1)
其中R是正交旋转矩阵,代表相机在世界坐标系中的姿态角;t是相机光心在世界坐标系中的坐标。
相机的姿态角由俯仰角(pitch)、偏航角(yaw)和翻转角(roll)组成,分别代表相机围绕x轴、y轴和z轴的旋转角度。而姿态角的转换可以通过正交旋转矩阵,即行列式为1的正交矩阵来实现。
这里解释一下为什么正交旋转矩阵能够实现姿态角的转换。
由于正交旋转矩阵是行列式为1的正交矩阵,这就说明矩阵的各列向量是Rn的一组标准正交基。对于单位向量I,与正交矩阵相乘后,相当于将标准基向量转换为正交向量代表的一组标准基向量,而规定行列式为1则保证转换前后的基向量代表的坐标系手性相同。
如果相机围绕x轴、y轴和z轴分别旋转ϕ、γ、θ,则正交旋转矩阵分别为
Rx=⎝⎛1000cosϕsinϕ0−sinϕcosϕ⎠⎞
Ry=⎝⎛cosγ0−sinγ010sinγ0cosγ⎠⎞
Rz=⎝⎛cosθsinθ0−sinθcosθ0001⎠⎞
相机围绕x轴、y轴和z轴分别旋转ϕ、γ、θ,是指在右手坐标系下,分别站在x、y、z轴的正方向朝负方向看去,相机分别在yz、xz、xy平面上沿逆时针方向旋转ϕ、γ、θ
因此,相机的姿态角旋转矩阵为
R=Rx⋅Ry⋅Rz
对于公式(1),将其转换为齐次形式,则有
⎝⎛xcyczc⎠⎞=(Rt)⎝⎛xwywzw1⎠⎞(2)
3 相机坐标系到图像坐标系的转换
相机坐标系是指以相机的光心为原点,x轴和y轴分别平行于相机成像平面的X、Y轴,z轴平行于相机的光轴的3D坐标系;图像坐标系是相机成像平面上的2D坐标系,原点为成像平面的中心点,x轴和y轴分别平行于相机成像平面的X、Y轴。相机坐标系到图像坐标系的转换需要使用到小孔成像的原理。
对于相机坐标系中的点(xc,yc,zc),将其转换为图像坐标系中的点(x,y),如下所示。
x=f⋅zcxc,y=f⋅zcyc(3)
其中f代表相机的焦距,也即相机的快门到成像平面的距离。
对于公式(3),将其转换为齐次形式,则有
zc⎝⎛xy1⎠⎞=⎝⎛f000f0001⎠⎞⎝⎛xcyczc⎠⎞(4)
4 图像坐标系到像素坐标系的转换
图像坐标系是相机成像平面上的2D坐标系,原点为成像平面的中心点,x轴和y轴分别平行于相机成像平面的X、Y轴;像素坐标系是最终的图像平面上的2D坐标系,以图像左上角为原点,用于标定图像上像素的坐标。
对于图像坐标系中的点(x,y),将其转换为像素坐标系中的点(u,v),如下所示。
u=dxx+u0,v=dyy+v0(5)
其中(u0,v0)是图像坐标系原点在像素坐标系中的坐标,dx和dy分别代表一个像素在图像坐标系上x轴和y轴方向上的物理尺寸。
如果图像坐标系中的单位是毫米,则dx和dy的单位是毫米/像素
对于公式(5),将其转换为齐次形式,则有
⎝⎛uv1⎠⎞=⎝⎛dx1000dy10u0v01⎠⎞⎝⎛xy1⎠⎞(6)
5 相机坐标变换公式
由公式(2)(4)(6)可导出如下公式
zc⎝⎛uv1⎠⎞=⎝⎛dx1000dy10u0v01⎠⎞⎝⎛f000f0001⎠⎞(Rt)⎝⎛xwywzw1⎠⎞
其中
⎝⎛dx1000dy10u0v01⎠⎞⎝⎛f000f0001⎠⎞=⎝⎛dxf000dyf0u0v01⎠⎞
称为相机的内参矩阵K,而
(Rt)
称为相机的外参矩阵。
因此相机的坐标变换矩阵P就是相机的内参矩阵与相机的外参矩阵之积,即
P=K(Rt)
有时坐标变换矩阵P也使用方阵形式,即
P=(K0T01)(R0Tt1)
6 参考文章
[1] blog.csdn.net/Cl2212/arti…
[2] zhuanlan.zhihu.com/p/90295867
[3] zhuanlan.zhihu.com/p/143056551
[4] blog.csdn.net/cxwwyc/arti…