部分参考其他文章,自己理解学习
在多视图几何中,射影映射(projection mapping)是一种非常重要的三维平面到三维平面之间的变换,射影平面 IP2 上的点满足一种映射 h ,使 IP2 上的点 x1,x2,x3 共线时,当且仅当 h(x1),h(x2),h(x3) 也共线。并且射影映射可以组成一个群,使得射影映射的逆以及两个射影映射的复合也是一个射影映射。同时,射影映射也被称为保线变换,摄影变换和单应。所以射影映射可以定义为:
存在一个3*3的非奇异矩阵H,使得 IP2 平面上任意一个可以用矢量表示的点都可以在另一个 IP2 平面上找到映射 h(x)=Hx 。
而当沿着过某一公共点的射线,穿过该两个平面留下两个相互映射的点,并且该中心投影映射的两个平面都是直角坐标系下的平面,那么称其为透视映射,是射影映射的一个特殊形式。
相机与世界之间存在多次变换,将透视变换分成三个部分。
假设存在一个点 (X,Y,Z) 在世界坐标系下表示为 (X,Y,Z)w ,在相机坐标系下表示为 (X,Y,Z)c ,那么在这两个坐标系之间的变换可以表示为:
相机坐标系的原点就相当于透视变换中的射线公共点,所有的射线从这一点发出,穿过相机平面到达物体上,那么在相机平面上会留下一个坐标,这就是相机平面坐标系的坐标。因为相机平面上的点的三维信息与现实场景下相机坐标系上的点的三维信息满足三角形的相似性,所以我们可以将相机坐标系原点与 (X,Y,Z)c 链接起来,在相机平面上经过点 (x,y,1)
其中相机平面坐标系的原点在相机平面的中心,那么我们可以定义从 (X,Y,Z)c 到 (x,y,1) 的映射关系(其中f是焦距,即相机坐标系和相机平面坐标系原点之间的距离): xf=XcZc 且 yf=YcZc
那么用矩阵形式表示,可以表示成:
因为我们的计算机读取图片都是从左上角开始读取的,所以是以左上角的坐标为原点,以像素作为刻度,这是像素坐标系。而上一步得到的相机平面坐标系则不是这样,之前的坐标都是物理单位。所以这里还需要从相机平面坐标系映射到像素坐标系。
设存在以像素为单位的像素坐标系 UV 和以mm为单位的相机平面坐标系 XY ,如下图
两个坐标系有以下的关系 u=xdx+u0;v=ydy+v0 ,其中 dx 和 dy 表示每mm有多少像素点。使用矩阵映射表达如下:
因为射影变换的结合依旧是射影变换,所以上面的射影变换的公式,我们可以用一个M矩阵代表中间的变换过程,简写成如下的公式
参考:
http://blog.csdn.net/u014096352/article/details/53526747
http://blog.csdn.net/yeyang911/article/details/51912322
http://blog.csdn.net/yeyang911/article/details/51915348
《计算机视觉中的多视图几何》