快捷搜索: 王者荣耀 脱发

单应性矩阵求解函数findHomography()

OPENCV官方地址: 上面这个地址是OPENCV标定和三维重建集合的函数说明,包括标定原理,过程和工具的使用,想要使用OPENCV实现各种标定的话可以参考

下面是函数声明:

findHomography()
Mat cv::findHomography	
(	InputArray 	srcPoints,//输入源平面的坐标矩阵,我这里就是像素坐标
InputArray 	dstPoints,//输入目标平面的坐标矩阵,我输入世界坐标
int 	method = 0,//计算单应性矩阵的方法,具体见下面
double 	ransacReprojThreshold = 3,//具体解释见下面
OutputArray 	mask = noArray(),//见下面
const int 	maxIters = 2000,//RANSAC算法的最大迭代次数,默认值为2000。
const double 	confidence = 0.995 //可信度值,取值范围为0到1.
)		
Python:
retval, mask	=	cv.findHomography(	srcPoints, dstPoints[, method[, ransacReprojThreshold[, mask[, maxIters[, confidence]]]]]	)

method参数对应方法:

  1. 0 - 利用所有点的常规方法
  2. RANSAC - RANSAC-基于RANSAC的鲁棒算法
  3. LMEDS - 最小中值鲁棒算法
  4. RHO - PROSAC-基于PROSAC的鲁棒算法

ransacReprojThreshold参数 将点对视为内点的最大允许重投影错误阈值(仅用于RANSAC和RHO方法)。如果 则点被认为是个外点(即错误匹配点对)。若srcPoints和dstPoints是以像素为单位的,则该参数通常设置在1到10的范围内。

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

作用:

该函数能够找到并返回源平面和目标平面之间的转换矩阵H,以便于反向投影错误率达到最小。 反向投影错误率计算方式如下:

下面是这个函数的一个重载,只是参数少一些:

Mat cv::findHomography	(	InputArray 	srcPoints,
InputArray 	dstPoints,
OutputArray 	mask,
int 	method = 0,
double 	ransacReprojThreshold = 3 
)
经验分享 程序员 微信小程序 职场和发展