您的位置:首页 > 编程语言 > PHP开发

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

2017-11-03 16:12 1776 查看
从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 )
这样就形成了第一个矩阵相乘的第一个等式。以此类推,就能写出上方的等式,求矩阵即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: