前言:
眼前看官们对“怎么把坐标用矩阵形式表达”大约比较讲究,各位老铁们都想要分析一些“怎么把坐标用矩阵形式表达”的相关内容。那么小编在网上搜集了一些对于“怎么把坐标用矩阵形式表达””的相关资讯,希望我们能喜欢,同学们一起来了解一下吧!一、标定原理
摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵的过程。
基本的坐标系:
分别是世界坐标系、相机坐标系、成像平面坐标系、像素坐标系。
一般来说,标定的过程分为两个部分:
1、从世界坐标系转为相机坐标系,这一步是三维点到三维点的转换。
2、从相机坐标系转为成像平面坐标系(像素坐标系),这一步是三维点到二维点的转换。
基本知识
摄像机模型
上图是一个小孔成像的模型,其中:
[1]O点表示camera centre,即相机的中心点,也是相机坐标系的中心点。
[2]Z轴表示principal axis,即相机的主轴。
[3]q点所在的平面表示相机的像平面,也就是图片坐标系所在的二维平面。
[4]O1点表示主点,也就是主轴与像平面相交的点。
[5]O点到O1点的距离,也就是右边图中的f,即相机的焦距。
[6]像平面上的x和y坐标轴是与相机坐标系上的X和Y坐标轴互相平行的。
[7]相机坐标系是以X、Y、Z三个轴组成的且原点在O点,度量值为米(m)。
[8]像平面坐标系是以x,y两个轴组成的且原点在O1点,度量值为米(m)。
[9]像素坐标系一般指图片相对坐标系,这里认为和像平面坐标系在一个平面上,不过原点是在图片的角上,而且度量值为像素的个数(pixel)。
2、相机坐标系→成像平面坐标系
以O点为原点建立摄像机坐标系,点Q(X,Y,Z)为摄像机坐标系空间中的一点,该点被光线投影到图像平面上的q(x,y,f)点。图像平面与光轴z轴垂直,和投影中心距离为f(f是相机的焦距),按照三角比例关系可以得出:
x/f = X/Z,y/f = Y/Z,即 x = fX/Z,y = fY/Z。
将以上将坐标为(X,Y,Z)的Q点映射到投影平面上坐标为(x,y)的q点的过程称作投影变换。
上述Q点到q点的变换关系用3*3的矩阵可表示为:q = MQ ,其中:
M称为摄像机的内参数矩阵,单位均为物理尺寸。通过上面,可以把相机坐标系转换到像图像坐标系的物理单位[即(X,Y,Z)→(x,y)]。
3、成像平面坐标系→像素坐标系
通过下面,可以把像平面坐标系物理单位到像素单位[即→(u,v)],以图像平面的左上角或左下角为原点建立坐标系。假设像平面坐标系原点位于图像左下角,水平向右为u轴,垂直向上为v轴,均以像素为单位。
以图像平面与光轴的交点O1 为原点建立坐标系,水平向右为x轴,垂直向上为y轴。原点O1一般位于图像的中心处,O1在以像素为单位的图像坐标系中的平面坐标为(u0, v0)。像平面坐标系和像素坐标系虽然在同一个平面上,但是原点并不是同一个。
设每个像素的物理尺寸大小为 dx * dy (mm) ( 由于单个像素点投影在图像平面上是矩形而不是正方形,因此可能dx != dy),图像平面上某点在成像平面坐标系中的坐标为(x, y),在像素坐标系中的坐标为(u, v),则二者满足如下关系:[即(x, y)→(u, v)],u = x / dx + u0,v = y / dy +v0。用齐次坐标与矩阵形式表示为:
将摄像机坐标系中的(1)式代入上式可得:
则右边第一个矩阵和第二个矩阵的乘积亦为摄像机的内参数矩阵(单位为像素),相乘后可得:
和(1)式相比,此内参数矩阵中f/dx, f/dy,cx/dx+u0,cy/dy+v0的单位均为像素。令内参数矩阵为K,则上式可写成:
畸变参数
采用理想针孔模型,由于通过针孔的光线少,摄像机曝光太慢,在实际使用中均采用透镜,可以使图像生成迅速,但代价是引入了畸变。有两种畸变对投影图像影响较大: 径向畸变和切向畸变。
1、径向畸变
对某些透镜,光线在远离透镜中心的地方比靠近中心的地方更加弯曲,产生"筒形"或"鱼眼"现象,称为径向畸变。一般来讲,成像仪中心的径向畸变为0,越向边缘移动,畸变越严重。不过径向畸变可以通过下面的泰勒级数展开式来校正:
2、切向畸变
当成像仪被粘贴在摄像机的时候,会存在一定的参数误差,使得图像平面和透镜不完全平行,从而产生切向畸变。也就是说,如果一个矩形被投影到成像仪上时,可能会变成一个梯形。切向畸变可以通过如下公式来校正:
摄像机的外参数
旋转向量(大小为1×3的矢量或旋转矩阵3×3)和平移向量(tx,ty,tz)。
旋转向量:旋转向量是旋转矩阵紧凑的变现形式,旋转向量为1×3的行矢量。
r就是旋转向量,旋转向量的方向是旋转轴 ,旋转向量的模为围绕旋转轴旋转的角度。通过上面的公式,我们就可以求解出旋转矩阵R。同样的已知旋转矩阵,我们也可以通过下面的公式求解得到旋转向量:
标签: #怎么把坐标用矩阵形式表达