findHomography()函数详解
indHomography: 计算多个二维点对之间的最优单映射变换矩阵 H(3行x3列) ,使用最小均方误差或者RANSAC方法
函数功能:找到两个平面之间的转换矩阵。
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.
该函数能够找到并返回源平面和目标平面之间的转换矩阵H,以便于反向投影错误率达到最小。

反向投影错误率计算方式如下:

如果方法参数的值为默认值0,则该函数使用所有点对来计算具有简单最小二乘的初始单应性估计。
但是,如果不是所有的点对(srcPointsi,dstPointsi)都适合刚性透视变换(也就是说,存在一些外点(匹配错误点对)),那么这个初始估计就会很差。 在这种情况下,您可以使用三种鲁棒方法之一。 RANSAC,LMeDS和RHO等算法尝试对应点对(每对四对)的许多不同随机子集,使用该子集和简单最小二乘算法估计单应矩阵,然后计算计算单应性的质量/良好性(对于RANSAC来说,单应性的质量是指内点的数量,对于LMeDs来说,单应性的质量是指中值重投影的误差)。 最后,使用最佳子集来产生单应矩阵的初始估计和内点/异常值的掩模。
无论计算方法是否具有鲁棒性,计算单应矩阵都使用Levenberg-Marquardt方法进行细化(仅在鲁棒方法的情况下使用内点),以进一步减少重投影误差。
RANSAC和RHO方法几乎可以处理任何外点比例,但需要一个阈值来区分内点和外点。 LMeDS算法不需要任何阈值,但只有在超过50%的内点时它才能正常工作。 最后,如果没有外点且噪声很小,请使用默认方法(method = 0)。
该函数用于查找初始内部和外部矩阵。单应矩阵按比例确定。 因此,将其归一化以使。 若无法估计H矩阵,都会返回一个空矩阵。
方式二:
Mat cv::findHomography ( InputArray srcPoints,
InputArray dstPoints,
OutputArray mask,
int method = 0,
double ransacReprojThreshold = 3
)
这是一个重载的成员函数,主要是为了方便使用而提出的。 它与上述函数的不同之处仅在于它接受的参数。
参考网址:Camera Calibration and 3D Reconstruction
findHomography()函数详解的更多相关文章
- malloc 与 free函数详解<转载>
malloc和free函数详解 本文介绍malloc和free函数的内容. 在C中,对内存的管理是相当重要.下面开始介绍这两个函数: 一.malloc()和free()的基本概念以及基本用法: 1 ...
- NSSearchPathForDirectoriesInDomains函数详解
NSSearchPathForDirectoriesInDomains函数详解 #import "NSString+FilePath.h" @implementation ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- Linux C popen()函数详解
表头文件 #include<stdio.h> 定义函数 FILE * popen( const char * command,const char * type); 函数说明 popen( ...
- kzalloc 函数详解(转载)
用kzalloc申请内存的时候, 效果等同于先是用 kmalloc() 申请空间 , 然后用 memset() 来初始化 ,所有申请的元素都被初始化为 0. view plain /** * kzal ...
- Netsuite Formula > Oracle函数列表速查(PL/SQL单行函数和组函数详解).txt
PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 ...
- jQuery.attr() 函数详解
一,jQuery.attr() 函数详解: http://www.365mini.com/page/jquery-attr.htm 二,jQuery函数attr()和prop()的区别: http: ...
- memset函数详解
语言中memset函数详解(2011-11-16 21:11:02)转载▼标签: 杂谈 分类: 工具相关 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大 ...
- CreateFile函数详解
CreateFile函数详解 CreateFile The CreateFile function creates or opens the following objects and returns ...
- MYSQL常用内置函数详解说明
函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...
随机推荐
- KubeSphere 社区双周报 | OpenFunction 发布 v1.1.1 | 2023.6.9-6.22
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- git知识点,常用命令
git理论知识 git的服务器端(remote)端包含多个repository,每个repository可以理解为一个项目. 而每个repository下有多个branch."origin& ...
- hadoop运行原理
包括HDFS和Mapreduce两部分. 1)HDFS自动保存多个副本,移动计算.缺点是小文件存取占用namenode内存,写入只支持追加,不能随机修改. 它存储的逻辑空间称为block,文件的权限类 ...
- 登陆mysql,Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2) "
今天ssh到slave机器上,登陆mysql,遇到下图的报错. 查了一圈,最终解决办法简洁的出乎意料. 首先,要查看mysql服务是否已经启动(真的太容易漏掉) 第2步,你可能会自然而然的以为密码也是 ...
- SpreadJS 在数据填充时的公式填充方案
需求介绍 很多用户使用了 SpreadJS 的数据填报功能.大致用法为:设计模板,填充数据源.在这个过程中,可能会出现模板中设置了公式,而在数据源填充时,公式没有携带下来的问题. 比如我们定义一个模板 ...
- 使用sklearn中的Adaboost分类器来实现ORL人脸分类
使用sklearn中的Adaboost分类器来实现ORL人脸分类 前言:博主上网浏览使用Adaboost实现人脸分类时,发现并没有分类,大部分全都是关于人脸识别检测的,并没有实现对某个人的精准分类(例 ...
- js中的数组去重的多种方法
1. indexOf()方法 const arr = [1,2,3,4,5,1,2,3,4,6,1,1,6,6,7,5,8] const newArr = [] arr.forEach(item =& ...
- VS项目无法加载js或其他文件
1.查看文件位置项目是否加载进去 2.将文件显示,再次找到该目录将文件添加到项目中 3.启动调试,
- 深入理解ReferenceQueue GC finalize Reference
关于对象如何销毁以及finalize更详细的信息 目录 概述 1 先看一个对象finalize的顺序问题. 2 对象再生及finalize只能执行一次 3 SoftReference WeakRefe ...
- antlr的使用
我从以下几个问题入手介绍ANTLR的相关知识. 1 ANTLR是什么? ANTLR, ANother Tool for Language Recognition, 是一个可以接受含有语法描述的语言描述 ...