透视变换的原理推导(cvGetPerspectiveTransform)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/flyyufenfei/article/details/78436675
从opencv源码中基本能看懂,



xi,yi ----世界坐标点
ui,vi ----图像坐标点


/* Calculates coefficients of perspective transformation
* which maps (xi,yi) to (ui,vi), (i=1,2,3,4):
*
* c00*xi + c01*yi + c02
* ui = ---------------------
* c20*xi + c21*yi + c22
*
* c10*xi + c11*yi + c12
* vi = ---------------------
* c20*xi + c21*yi + c22
*
* Coefficients are calculated by solving linear system:
* / x0 y0 1 0 0 0 -x0*u0 -y0*u0 \ /c00\ /u0\
* | x1 y1 1 0 0 0 -x1*u1 -y1*u1 | |c01| |u1|
* | x2 y2 1 0 0 0 -x2*u2 -y2*u2 | |c02| |u2|
* | x3 y3 1 0 0 0 -x3*u3 -y3*u3 | * |c10| = |u3|,
* | 0 0 0 x0 y0 1 -x0*v0 -y0*v0 | |c11| |v0|
* | 0 0 0 x1 y1 1 -x1*v1 -y1*v1 | |c12| |v1|
* | 0 0 0 x2 y2 1 -x2*v2 -y2*v2 | |c20| |v2|
* \ 0 0 0 x3 y3 1 -x3*v3 -y3*v3 / \c21/ \v3/
*
* where:
* cij - matrix coefficients, c22 = 1
*/

c00*xi + c01*yi + c02
ui = ---------------------
c20*xi + c21*yi + c22
那个等式展开,就是
c00*xi + c01*yi + c02 = ui * ( c20*xi + c21*yi + c22)
c00*xi + c01*yi + c02 - c20*xi*ui - c21*yi*ui = ui*c22 (c22=1 )
这样就形成了第一个矩阵相乘的第一个等式。以此类推,就能写出上方的等式,求矩阵即可。

猜你喜欢

转载自blog.csdn.net/flyyufenfei/article/details/78436675