如下图,位于XY平面的单位正方形投影到任意平面P上后,变成了不规则的四边形ABCD,我们能根据正方形的四个顶点投影前后的坐标,计算出平面XY上任意点 (x,y) 投影到平面P 上之后的坐标 (x', y') 吗?
我们注意到正方形的四个边投影到平面P之后,分别变为线段AB,BC,CD,DA,也就是说投影前位于一条直线上的点,投影后仍然位于一条直线上,对于直线来说,这种变换是线性的;但投影前平行的两条直线,投影后不再平行,对于平面而言,这种变换不是线性的。不过,虽然这种变换不能表示成线性变换,但可以表示成两个线性变换相除,于是就有了齐次坐标,
齐次坐标的好处是,可以把投影变换转化成线性变换,从而使用矩阵运算来对问题求解。
使用齐次坐标,可以有以下变换
写成方程式表达:
x' = Ax + By + Cw
y' = Dx + Ey + Fw
w'= Gx + Hy + Iw
其中 (x,y,w) 是变换前的坐标,(x',y',w')是变换后的坐标,(A B C ...)是变换矩阵
根据上面的讨论,我们已知四边形四个顶点变换前后的二维坐标,每个点可以写出三个方程式,总共有12个方程式,而变换矩阵共有9个未知数,再加上变换之后的坐标w也是未知数,总共有13个未知数,于是这个方程组有无限多组解,但是在投影平面上,每个点的齐次坐标本身就可以有无数个表达,我们只要把w规则化为1,就可以求出x, y
根据仿射变换理论,系数C,F表示变换前后的原点位移(平移变换),为了简化计算,我们假定C,F都等于0(即变换前后原点没有位移),并且把系数I 调整成1,于是有