逆透视变换
部分参考其他文章,自己理解学习
前言
在多视图几何中,射影映射(projection mapping)是一种非常重要的三维平面到三维平面之间的变换,射影平面
IP2
上的点满足一种映射
h
,使
存在一个3*3的非奇异矩阵H,使得 IP2 平面上任意一个可以用矢量表示的点都可以在另一个 IP2 平面上找到映射 h(x)=Hx 。
而当沿着过某一公共点的射线,穿过该两个平面留下两个相互映射的点,并且该中心投影映射的两个平面都是直角坐标系下的平面,那么称其为透视映射,是射影映射的一个特殊形式。
透视变换
相机与世界之间存在多次变换,将透视变换分成三个部分。
1. 世界坐标系到相机坐标系(光心坐标系)
假设存在一个点
(X,Y,Z)
在世界坐标系下表示为
(X,Y,Z)w
,在相机坐标系下表示为
(X,Y,Z)c
,那么在这两个坐标系之间的变换可以表示为:
这里使用的是齐次坐标,R和t代表了这两种坐标系之间的变换。
2. 相机坐标系到相机平面坐标系
相机坐标系的原点就相当于透视变换中的射线公共点,所有的射线从这一点发出,穿过相机平面到达物体上,那么在相机平面上会留下一个坐标,这就是相机平面坐标系的坐标。因为相机平面上的点的三维信息与现实场景下相机坐标系上的点的三维信息满足三角形的相似性,所以我们可以将相机坐标系原点与
(X,Y,Z)c
链接起来,在相机平面上经过点
(x,y,1)
其中相机平面坐标系的原点在相机平面的中心,那么我们可以定义从
(X,Y,Z)c
到
(x,y,1)
的映射关系(其中f是焦距,即相机坐标系和相机平面坐标系原点之间的距离):
xf=XcZc
且
yf=YcZc
那么用矩阵形式表示,可以表示成:
3. 相机平面坐标系到像素坐标系
因为我们的计算机读取图片都是从左上角开始读取的,所以是以左上角的坐标为原点,以像素作为刻度,这是像素坐标系。而上一步得到的相机平面坐标系则不是这样,之前的坐标都是物理单位。所以这里还需要从相机平面坐标系映射到像素坐标系。
设存在以像素为单位的像素坐标系
UV
和以mm为单位的相机平面坐标系
XY
,如下图
两个坐标系有以下的关系
u=xdx+u0;v=ydy+v0
,其中
dx
和
dy
表示每mm有多少像素点。使用矩阵映射表达如下:
4. 透视变换
以上所有的步骤整合在一张图中:
总结以上三步,得到了总等式
这个公式就代表了从世界坐标系下的一个点到像素平面的一个点的坐标的映射,这一过程就叫做透视变换。
逆透视变换
因为射影变换的结合依旧是射影变换,所以上面的射影变换的公式,我们可以用一个M矩阵代表中间的变换过程,简写成如下的公式
假设在我们的摄像机面前有一条道路,道路两侧的沿线在水平线处相聚,此刻,两边的道路线的相聚点实际上是无穷远的。我们设一边道路沿线上有一个点 a 坐标是
然后,我们以无穷远的相聚点为目标点,用公式表示目标点在像素平面上的坐标,
由于k趋向于无穷,所以a点可以被直接被消去,同时k被提到最前面。将矩阵展开,得到
因为像素平面上的无穷远点的坐标是已知的,并且通过标定可以得到中间变换M,解该方程组得到对应坐标,就是在世界坐标系下的坐标。这一过程相当于将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
《计算机视觉中的多视图几何》