先列出参考资料吧,
一个网上的tutorial http://lear.inrialpes.fr/people/triggs/pubs/isprs96/node1.html 不过这篇tutorial看起来比较累,它是从投影空间来看calibration的,数学的定义太多,只看了前面一点。
Camera Calibration ( Book Chapter) http://research.microsoft.com/en-us/um/people/zhang/Papers/Camera%20Calibration%20-%20book%20chapter.pdf
******************************* 齐次坐标
在之前的一篇关于坐标变换的博文 (http://blog.csdn.net/u012702874/article/details/43312957) 里面提到过齐次坐标,当时说的是齐次坐标的优点是可以很自然地区分点和向量。除了这个优点,齐次坐标还可以很有效地应用在投影中,使得投影过程可以以矩阵相乘的形式描述。
投影中齐次坐标的引入:
在三维空间上选定一个视平面位于 z=T,给定视平面上一点(x,y)即(x,y,T),视点(0,0,0)到(x,y, T)构成一个向量。如果规定一个标准的视平面为z=1,那么该向量上所有点投影到该平面都是同一个点(x/T,y/T,1). 所以事实上 齐次坐标前面乘以任意非零比例系数k,空间中的点 k*(x,y,T) 都代表z=1平面上同一个投影点(x/T,y/T)
以上解释都是基于T不等于0。当T=0时,k*(x,y,0)代表z=0平面上的直线,它们平行于z=1这个视平面,永远不相交 ==> 这些点称作无穷点
******************************** 投影矩阵
上面我们说过,一旦有了齐次坐标表示,我们就可以用矩阵相乘表示3D到2D的投影过程。下面我们看怎么求得这个投影矩阵。
上图是空间中一个点M投影到视平面上一个点m的图示。焦距 f 是视点到视平面的距离
1. 我们先考虑最简单的情形,(满足下面的假设条件):
a). M 的参考坐标系是相机的坐标系本身。
b). z轴和视平面的交点(principle point)视为投影面坐标系的原点
c). u v 是投影面坐标轴 且 u v 正交
由相似三角形可得
所以在齐次坐标下,矩阵表示为
..............................................(1)
其中
为投影矩阵。
2. 修改1. 中假设 b)为: 投影面的坐标原点不一定与principle point重合。原假设下的坐标系原点离现在的原点有偏移 (u0,v0)
设 原投影面坐标系基向量为 i,j ,原点为 ; 新坐标系的基向量为 i‘,j’,原点为
为了量化基向量和原点的坐标,我们设参考坐标系就是原投影面坐标系。这样才能把 i j 这些写成具体坐标
设 坐标系变换为
(T是仿射的,所以最后一行确定)
因为 ............................................................................(2)
所以
易得
又因为 新坐标系下的坐标=T逆 * 原坐标下的坐标,而 原坐标系下的坐标就是 (1) 的左边,所以现在
3. 修改1. 中的假设 c)为: u v 轴夹角为 ,而非正交。
用类似于2 中坐标系变换的方法,我们仍然设参考坐标系为原投影平面坐标系。当新坐标系下的u v 轴有夹角后,在参考坐标系的度量下新基向量和原点坐标为
(齐次坐标)
将上式带入(2)可得
易得
又因为 新坐标系下的坐标=T逆 * 原坐标下的坐标,而 原坐标系下的坐标就是 (1) 的左边,所以现在
4. 在1. 的基础上将原投影面坐标系进行缩放,坐标轴 u v 方向拉伸比例为ku kv
用类似于2 中坐标系变换的方法,我们仍然设参考坐标系为原投影平面坐标系。当u轴 v轴按给定比例缩放后,带入(2)式得所以
又因为 新坐标系下的坐标=T逆 * 原坐标下的坐标,而 原坐标系下的坐标就是 (1) 的左边,所以现在
注:这里的ku kv是坐标轴拉伸比例,不是坐标的拉伸比例。坐标的拉伸比例刚好是坐标轴拉伸比例的倒数
5. 修改1. 中的假设 a)为: M的坐标度量(X,Y,Z) 不是在相机的坐标系下,而是世界坐标系,或这其他坐标系。
这时就需要在使用(X,Y,Z)之前,把M坐标转化到相机坐标系下,即
然后就可以把得到的(X,Y,Z,1)带入之前推导的各种的公式
******************************* Calibration Matrix
我们把上面所有的情况合并到一个公式里面
其中(X,Y,Z,1)是非相机坐标系度量下的坐标。R是旋转矩阵,t 和平移矩阵。alpha,beta,s 是其他参数合并后的简洁表示,calibration 的过程也就是求这几个参数。
为投影矩阵
又
为caliration matrix
K又叫做intrinsic matrix,因为它只与相机参数有关;R t 又叫做extrinsic matrix,因为它与相机设计构造无关。它表示了相机的pose