基本原理是利用函数:findHomography,该 函数是求两幅图像的单应性矩阵或者叫(单映射矩阵),它是一个3*3的矩阵。findHomography: 计算多个二维点对之间的最优单映射变换矩阵 H(3行x3列) ,使用最小均方误差或者RANSAC方法 。
单应性矩阵算过后的投影点的偏移量 scene_corners[0],就是在匹配图像中的点的位置,
findHomography
功能:在两个平面之间寻找单映射变换矩阵
结构:
Mat findHomography(InputArray srcPoints, InputArray dstPoints, int method=0, double ransacReprojThreshold=3, OutputArray mask=noArray() )
srcPoints :在原平面上点的坐标,CV_32FC2 的矩阵或者vector<Point2f>
dstPoints :在目标平面上点的坐标,CV_32FC2 的矩阵或者 vector<Point2f> .
method –
用于计算单映射矩阵的方法.
0 - 使用所有的点的常规方法
CV_RANSAC - 基于 RANSAC 的方法
CV_LMEDS - 基于Least-Median 的方法
PerspectiveTransform
功能:向量数组的透视变换
结构:
void perspectiveTransform(InputArray src, OutputArray dst, InputArray m)
src :输入两通道或三通道的浮点数组,每一个元素是一个2D/3D 的矢量转换
dst :输出和src同样的size和type
m :3x3 或者4x4浮点转换矩阵