一、前言
视觉系统一共有四个坐标系:像素平面坐标系(u,v)、图像坐标系(x,y)、相机坐标系(Xc,Yc,Zc)和世界坐标系(Xw,Yw,Zw),如下图所示。每种坐标系之间均存在联系,那么如何通过图像像素坐标定位到世界坐标系的坐标,需要通过相机标定来解决,其中关键的算法部分在于坐标系转换,而变换则需要通过齐次坐标的表示方式来完成。
二、坐标系变换
2.1像素坐标系和图像坐标系的变换
像素坐标就是像素在图像中的位置。像素坐标系是建立在图像中的,需要和相机坐标系进行变换,其单位为像素。其的左上角的顶点就是原点(Op),水平向右是u,垂直向下是v轴。
图像坐标系的单位为毫米,这是因为像素坐标没办法反应图片中点的具体尺寸大小,所以需要图像坐标系来表示,原点为Oi,为光轴与成像平面的交点。
两个坐标系都在成像平面上,只是各自的原点和度量单位不一样。转换时需要知道两个参数(dx,dy),分别表示感光芯片上像素的实际大小。
两者之间变换需要进行单位上的转换。在图中,假设图像中心的像素坐标是(u0,v0),那么,图像坐标系的坐标(x,y)与像素坐标系的坐标(u,v)之间的关系可以表示为:
u=x/dx+u0u=x/dx+u0u=x/dx+u0
v=y/dy+v0v=y/dy+v0v=y/dy+v0
转换为齐次坐标:
[uv1]\begin{bmatrix} u\\ v\\1\end{bmatrix}⎣⎡uv1⎦⎤=[1/dx0u001/dyv0001]\begin{bmatrix} 1/dx&0&u0\\ 0&1/dy&v0\\0&0&1\end{bmatrix}⎣⎡1/dx0001/dy0u0v01⎦⎤*[xy1]\begin{bmatrix} x\\ y\\1\end{bmatrix}⎣⎡xy1⎦⎤
2.2 相机坐标系与图像坐标系转换
相机坐标系是以相机的光轴作为Z轴,光线在相机光学系统的中心位置就是原点Oc(实际上就是透镜的中心),相机坐标系的水平轴Xc与垂直轴Yc分别于图像坐标系的X轴和Y轴平行,OcOi之间的距离为f。
上图P点为图像点坐标,B为相机坐标系下物体坐标,可以通过相似三角形求解,如上图所示,最终也用齐次坐标进行表示。最后的表达式可以看出相机坐标系为三维,图像坐标系为2维,只能通过齐次坐标变换的形式升维。
那为什么像素坐标系会在相机坐标系的前面呢?
从原理图上我们可以看到像平面在镜面的右面,而在推导相机标定的坐标系关系时,却认为光线先通过成像平面,再在相机坐标系上汇聚到一个点。其原因是推导的时候,把像平面用虚拟像平面代替了。
2.3世界坐标系与相机坐标系转换
世界坐标系是目标物体位置的参考系,可以根据运算方便与否自由放置,单位为长度单位如mm。从世界坐标系转换到相机坐标系,涉及到旋转和平移(其实所有的运动也可以用旋转矩阵和平移向量来描述)。因为世界坐标系和摄像机坐标都是右手坐标系,所以其不会发生形变(刚性变换)。
计算过程:
平移,相机坐标点(Xc,Yc,Zc)平移距离为(tx,ty,tz)到世界坐标点(Xw,Yw,Zw):
[XwYwZw1]\begin{bmatrix} Xw\\ Yw\\Zw\\1\end{bmatrix}⎣⎢⎢⎡XwYwZw1⎦⎥⎥⎤=[100tx010ty001tz0001]\begin{bmatrix} 1&0&0&tx\\0&1&0&ty\\0&0&1&tz\\0&0&0&1\end{bmatrix}⎣⎢⎢⎡100001000010txtytz1⎦⎥⎥⎤*[XcYcZc1]\begin{bmatrix} Xc\\Yc\\Zc\\1\end{bmatrix}⎣⎢⎢⎡XcYcZc1⎦⎥⎥⎤
坐标点(Xc,Yc,Zc)在平移的过程中旋转一定角度到世界坐标点(Xw,Yw,Zw):
首先给定一个基本旋转矩阵和基本矩阵:
R=[cosθsinθ−sinθ−cosθ]\begin{bmatrix} cosθ&sinθ\\ -sinθ&-cosθ\end{bmatrix}[cosθ−sinθsinθ−cosθ]
基本矩阵:
[1000010000100001]\begin{bmatrix} 1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&0&1\end{bmatrix}⎣⎢⎢⎡1000010000100001⎦⎥⎥⎤
如果坐标点(Xc,Yc,Zc)绕X,Y,Z轴分别旋转α,β,γ度,则最终的表达式为(哈哈,实在不想自己推导仿射变换的公式了,直接给最终结果,链接可以看下方):
那么和平移变换联合起来可以写为:
2.4像素坐标系到世界坐标系变换(终极变换)
红框内即为外参,R和T分别为旋转和平移量。
内参为是相机固有的属性,实际上就是焦距f,像元尺寸dx,dy。
Zc很明显,表示的是点离光轴的距离。
参考文章:
相机参数标定(camera calibration)及标定结果如何使用
3d变换基础:平移、旋转、缩放(仿射变换)详解——公式推导
计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换