四点变换方程

=========前置知识======================
高斯消元法解方程
矩阵的计算

=========经验========================
有一个要点就是,高斯消元的算法,在消元过程中出现除数为零的时候的处理
非常重要,因为介于我给本没有接触过高数也使我开始的时候放弃用高斯消元法
而直接寻找解法公式的原因,当然这也是让我走了那么长长的弯路的原因。

=========问题描述======================
从'任意四边形'中任意一点,来寻找作为其投影原像的'矩形'中的对应点

针对解决这个问题的方法的叫法网上有很多种,从我的所掌握的知识是无法判
断其准确性了,大家知道就行了。

例如:
射影映射,同素变换,透视畸变,四点转正,透视投影变换等,还有好几个都
是解决这一个问题。

=========参考位置======================
http://topic.csdn.net/t/20030727/15/2077097.html
http://topic.csdn.net/t/20020719/11/886049.html

=========解决方法======================
前提条件是必须先知道4对控制点(例如:矩形及四边形的各四个顶点)
然后用[高斯消元法]解出八个未知系数就OK了
-----------------------------------

四点转正算法的变换式是:
        u   =   (Ax + By + C) / (Gx + Hy + 1)
        v   =   (Dx + Ey + F) / (Gx + Hy + 1)  -------  (1)
通过上面的式子就可以得到从(x,y)到(u,v)的变换了。这时要确定8个参数A--H。
把(1)式变形就是:
        Ax + By + C              - uxG - uyH = u
                     Dx + Ey + F - vxG - vyH = v

我们已经知道了四点到四点的对应关系,把他们带入上面的式子就可以得到8个方程,8个方程解8个未知数刚刚好(可以选用高斯消元法解).
用你上面的点就是解这个方程组了:

|-                                          -|   |-     -|   |-      -|
| x1  y1   1   0   0   0   -a1*x1   -a1*y1   |   |   A   |   |   a1   |
| x2  y1   1   0   0   0   -a2*x2   -a2*y1   |   |   B   |   |   a2   |
| x1  y2   1   0   0   0   -a3*x1   -a3*y2   |   |   C   |   |   a3   |
| x2  y2   1   0   0   0   -a4*x2   -a4*y2   |   |   D   |   |   a4   |
|  0   0   0  x1  y1   1   -b1*x1   -b1*y1   | * |   E   | = |   b1   |
|  0   0   0  x2  y1   1   -b2*x2   -b2*y1   |   |   F   |   |   b2   |
|  0   0   0  x1  y2   1   -b3*x1   -b3*y2   |   |   G   |   |   b3   |
|  0   0   0  x2  y2   1   -b4*x2   -b4*y2   |   |   H   |   |   b4   |
|_                                          _|   |_     _|   |_      _|   

用高斯消元法就可以解出A--H了,解出后问题也就解决了。

你可能感兴趣的:(c,算法)