透视变换的原理推导(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 )
这样就形成了第一个矩阵相乘的第一个等式。以此类推,就能写出上方的等式,求矩阵即可。
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 )
这样就形成了第一个矩阵相乘的第一个等式。以此类推,就能写出上方的等式,求矩阵即可。
相关文章推荐
- 【OpenCV3】透视变换——cv::getPerspectiveTransform()与cv::warpPerspective()详解
- 透视变换矩阵(单应矩阵)计算:findHomography 与 getPerspectiveTransform
- NDT(Normal Distributions Transform)算法原理与公式推导
- opencv透视变换GetPerspectiveTransform的总结
- 分类算法3----线性判别分析(LDA)原理和推导过程
- Adaboost 算法的原理与推导
- 主成分分析(PCA)原理及推导
- 编译原理之最左推导和最右推导
- Adaboost 算法的原理与推导
- Adaboost 算法的原理与推导
- 密集透视变换 cvWarpPerspective
- CGAffineTransform 原理
- 第6月第17天 CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- 奇异值分解(SVD)原理详解及推导
- Adaboost 算法的原理与推导
- Adaboost 算法的原理与推导
- CSS3中动画 transform必须要了解的Skew变化原理,css3skew
- 分布式系列文章——Paxos算法原理与推导
- Adaboost 算法的原理与推导
- AdaBoost 算法原理及推导