计算机视觉中,常用的有三个坐标系:图像坐标系、相机坐标系和世界坐标系。
它们之间的关系,可以通过三个变换来表示:仿射变换,投影变换,刚体变换,这三个变换是三维重构几何框架的基础。
通过这三个变换,可将三维空间中的点坐标 (Xw, Yw, Zw),与二维图像中的像素坐标 (u, v) 对应起来。
1 图像坐标系
图像坐标系,是在像平面内,以二维图像为基准所建立的坐标系。根据单位的不同,可分为 像素坐标 (单位 = 像素个数) 和 物理尺寸坐标 (单位 = mm)
1.1 分类
像素坐标 (u, v) 中,原点 为图像左上角点,坐标轴 为 u 轴 和 v 轴,表示物体所在的行数和列数
物理尺寸坐标 (x, y) 中,原点 为图像的主点,也即光轴与像平面的交点,坐标轴 为 x 轴 (平行 u 轴) 和 y 轴 (平行 v 轴),表示物体的尺寸大小
1.2 仿射变换
当相机调整好焦距后,相机透镜中心点到像平面的距离是固定的,此时,像平面内每个像素的尺寸大小也变成了固定值。
假设每个像素在 x 轴和 y 轴 方向上的物理尺寸分别为 dx 和 dy,则在忽略相机成像畸变的情况下,像素坐标和物理尺寸坐标的转换关系如下:
$\begin{cases} u = \dfrac{x}{d_{x}} + u_{0} \\ v = \dfrac{y}{d_{y}} + v_{0} \end{cases} $
两者的齐次坐标转换关系为:
$\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} \dfrac{1}{d_{x}} & 0 & u_{0} \\ 0 & \dfrac{1}{d_{y}} & v_{0} \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x\\ y \\ 1 \end{bmatrix} $
这样,就建立了图像中,像素坐标和物理尺寸坐标之间的对应关系。
2 相机坐标系
相机坐标系 $(Xc, Yc, Zc)$中,原点 为相机透镜的中心,坐标轴 Xc 轴与 x 轴平行,Yc 轴与 y 轴平行,Zc 轴与相机光轴重合
2.1 小孔成像
相机是三维物体和所成二维图像之间的一种映射,常用的小孔成像模型,如下图所示:
2.2 投影变换
设相机的焦距为 f,则根据小孔成像模型,可知相机坐标系下空间点 $(Xc, Yc, Zc)$,与物理尺寸坐标 $(x, y)$ 的关系如下:
$\begin{cases} \dfrac{x}{f} = \dfrac{X_{c}}{Z_{c}} \\ \dfrac{y}{f} = \dfrac{Y_{c}}{Z_{c}} \end{cases} $ => $\begin{cases} Z_{c} \cdot x = f \cdot {X_{c}} \\ Z_{c} \cdot y = f \cdot {Y_{c}} \end{cases} $ => $ Z_{c} \begin{bmatrix} x \\ y \\ 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} $
像素坐标 $(u, v)$ 与相机坐标点 $(Xc, Yc, Zc)$ 的关系为:
$ Z_{c} \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} \dfrac{1}{d_{x}} & 0 & u_{0} \\ 0 & \dfrac{1}{d_{y}} & v_{0} \\ 0 & 0 & 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} = \begin{bmatrix} \dfrac{f}{d_{x}} & 0 & u_{0} & 0 \\ 0 & \dfrac{f}{d_{y}} & v_{0} & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} X_{c} \\ Y_{c} \\ Z_{c} \\ 1 \end{bmatrix}$
3 世界坐标系
世界坐标系,是实际物体位置的参考系,它和 相机坐标系 的转换关系,就是一个刚体变换,具体见 立体视觉 之 刚体变换
$ \begin{bmatrix} X_{c} \\ Y_{c} \\ Z_{c} \end{bmatrix} = \begin{bmatrix} R & T \end{bmatrix} \begin{bmatrix} X_{w} \\ Y_{w} \\ Z_{w} \end{bmatrix}$
这样,就建立了图像中的 像素点 (u, v) 和 世界坐标中的 空间点 (Xw, Yw, Zw) 之间的对应关系。
世界坐标系,可根据运算的方便,来*放置。若世界坐标系和相机坐标系重合,则 $R$ 为单位矩阵,$T$ 为零矩阵,即:
$ \begin{bmatrix} X_{c} \\ Y_{c} \\ Z_{c} \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} X_{w} \\ Y_{w} \\ Z_{w} \end{bmatrix}=\begin{bmatrix} X_{w} \\ Y_{w} \\ Z_{w} \end{bmatrix}$
小结
这样,像素点 (u, v), 通过相机内参 A,转换为相机坐标下的 (Xc, Yc, Zc),再经过 $RT$ 变换,便可得到世界坐标下的 (Xw, Yw, Zw)
$ Z_{c} \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} \dfrac{f}{d_{x}} & 0 & u_{0} & 0 \\ 0 & \dfrac{f}{d_{y}} & v_{0} & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} R & T \\ 0^{T} & 1 \end{bmatrix} \begin{bmatrix} X_{w} \\ Y_{w} \\ Z_{w} \\ 1 \end{bmatrix}$
后记
两个问题:第一,上式 $Z_{c}$ 未知,也即投影变换的缩放比例不确定;第二,一个像素坐标点 (u,v),虽能转化为空间点坐标 (Xw, Yw, Zw),但并没有 成像物体的特征点 与其对应
针对上述问题,有三个解决思路:一是放置 比例尺,另一个是 双目视觉,最后是 结构光
参考资料
<视觉测量> 张广军,第2章,第 7章