计算两幅图像之间的单应矩阵

Posted KAVEI

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算两幅图像之间的单应矩阵相关的知识,希望对你有一定的参考价值。

单应矩阵

  是指在特殊情况下(纯旋转或平面目标),投影矩阵为3x3的矩阵

  单应矩阵格式

                              

 

 

 

应用:图像校正 视角变换 图像拼接 增强现实

找到单应矩阵的函数:

Mat cv::findHomography    (    InputArray     srcPoints,
                                InputArray     dstPoints,
                                int     method = 0,
                                double     ransacReprojThreshold = 3,
                                OutputArray     mask = noArray(),
                                const int     maxIters = 2000,
                                const double     confidence = 0.995 
)


)
参数详解:

srcPoints 源平面中点的坐标矩阵,可以是CV_32FC2类型,也可以是vector<Point2f>类型
dstPoints 目标平面中点的坐标矩阵,可以是CV_32FC2类型,也可以是vector<Point2f>类型

 

method 计算单应矩阵所使用的方法。不同的方法对应不同的参数,具体如下:
0 - 利用所有点的常规方法
RANSAC - RANSAC-基于RANSAC的鲁棒算法
LMEDS - 最小中值鲁棒算法
RHO - PROSAC-基于PROSAC的鲁棒算法

 

 

ransacReprojThreshold

将点对视为内点的最大允许重投影错误阈值(仅用于RANSAC和RHO方法)。如果

则点被认为是个外点(即错误匹配点对)。若srcPoints和dstPoints是以像素为单位的,则该参数通常设置在1到10的范围内。

 

mask
可选输出掩码矩阵,通常由鲁棒算法(RANSAC或LMEDS)设置。 请注意,输入掩码矩阵是不需要设置的。

 

maxIters RANSAC算法的最大迭代次数,默认值为2000。

confidence 可信度值,取值范围为0到1.


重载形式:

Mat cv::findHomography    (    InputArray     srcPoints,
                                InputArray     dstPoints,
                                OutputArray     mask,
                                int     method = 0,
                                double     ransacReprojThreshold = 3 
)        

 

以上是关于计算两幅图像之间的单应矩阵的主要内容,如果未能解决你的问题,请参考以下文章

单应矩阵是啥?怎么用呀

具有较少关键点的单应矩阵和图像变换

opencv cv2.findHomography sift、surf特征匹配 单应性矩阵理解

线性求解单应矩阵 Homography

单应矩阵(Homography)基本概念和代码测试

如何计算两次透视变换后的结果?