位置: IT常识 - 正文

PnP解算及SolvePnp用法(pnp算法简介与代码解析)

编辑:rootadmin
PnP解算及SolvePnp用法 1 PnP解算

推荐整理分享PnP解算及SolvePnp用法(pnp算法简介与代码解析),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:pnp求解,pnp算法简介与代码解析,pn结计算题,pnp电路计算,pnp位置解算,pnp求解方法有哪些,pnp算法简介与代码解析,详解pnp,内容如对您有帮助,希望把文章链接给更多的朋友!

PnP问题:Perspective-n-Point问题。 参考下图, 给定n个3D空间参考点,以及各点在相机图像上对应的成像点,求参考点所在坐标系与相机的空间关系。 即: 已知条件1:给定匹配点对:世界坐标系(图中OwXwYwZw)下的n个3D点坐标及其对应在图像坐标系(图中ouv)下的2D点坐标。 已知条件2:相机的内参。 求:世界坐标系OwXwYwZw与相机坐标系OcXcYcZc之间的位姿变换关系。 PnP问题的用途:相机位姿获取,物体位姿测量,AR/VR,机器人操作,SLAM中位姿初值求解…… 常用解法:DLT,P3P,EPnP,UPnP。

2 OpenCV的solvePnP2.1 函数原型定义

OpenCV提供了PnP问题的解算函数,且包含有多种解法。 有以下两个函数。

1) solvePnPbool solvePnP( InputArray objectPoints, InputArray imagePoints, InputArray cameraMatrix, InputArray distCoeffs, OutputArray rvec, OutputArray tvec, bool useExtrinsicGuess = false, int flags = SOLVEPNP_ITERATIVE );

作用:根据3D-2D点对应关系,获得物体的位姿。 此函数返回旋转和平移向量,可用来将物体坐标系中的3D点变换到相机坐标系下。

2) solvePnPRansacbool solvePnPRansac( InputArray objectPoints, InputArray imagePoints, InputArray cameraMatrix, InputArray distCoeffs, OutputArray rvec, OutputArray tvec, bool useExtrinsicGuess = false, int iterationsCount = 100, float reprojectionError = 8.0, double confidence = 0.99, OutputArray inliers = noArray(), int flags = SOLVEPNP_ITERATIVE );PnP解算及SolvePnp用法(pnp算法简介与代码解析)

与solvePnP功能相同,但这个函数使用RANSAC算法剔除异常样本。 RANSAC:Random Sample Consensus(随机抽样一致)。它是根据一组包含异常数据的样本数据集,计算出数据的数学模型参数,得到有效样本数据的算法。它于1981年由Fischler和Bolles最先提出。 因此RANSAC使得PnP函数能够抵抗异常值。

2.2 函数参数

参数: objectPoints:世界坐标系(上图中OwXwYwZw)下的3D点坐标数组 imagePoints:图像(上图中ouv)中对应3D点的成像点坐标数组 cameraMatrix:相机内参矩阵,3×3 distCoeffs:相机畸变系数数组,可以为NULL,此时视为无畸变。 rvec和tvec:计算结果输出,rvec为旋转向量,tvec为平移向量,两者合并表达的是物体整体(即世界坐标系)在相机坐标系中的位姿

以下参数为可选: useExtrinsicGuess,这个参数仅用于flags=SOLVEPNP_ITERATIVE,此值如果为true (1),需要rvec和tvec有输入值,以便函数把输入值作为旋转和平移的估计初始值. flags:PnP解算方法,详见下节。

solvePnPRansac需要的可选参数 iterationsCount:迭代次数; reprojectionError:RANSAC使用的内点阈值,即考虑作为内点的观察点与计算点投影之间的最大允许距离 confidence:算法得到有用结果的概率; inliers:包含 objectPoints 和 imagePoints 中的内点索引的输出向量 .

2.3 PnP解算方法(flags取值)SOLVEPNP_ITERATIVE:缺省方法,基于 Levenberg-Marquardt 优化的迭代方法,使重投影误差最小化SOLVEPNP_P3P:方法基于论文 X.S. Gao, X.-R. Hou, J. Tang, H.-F. Chang “Complete Solution Classification for the Perspective-Three-Point Problem”SOLVEPNP_AP3P:方法基于论文 T. Ke, S. Roumeliotis "An Efficient Algebraic Solution to the Perspective-Three-Point ProblemSOLVEPNP_EPNP:方法基于论文 F. Moreno-Noguer, V. Lepetit and P. Fua “EPnP: Efficient Perspective-n-Point Camera Pose Estimation”SOLVEPNP_DLS:方法基于论文 J. Hesch and S. Roumeliotis. “A Direct Least-Squares (DLS) Method for PnP”SOLVEPNP_UPNP:方法基于论文 A. Penate-Sanchez, J. Andrade-Cetto, F. Moreno-Noguer. “Exhaustive Linearization for Robust Camera Pose and Focal Length Estimation”SOLVEPNP_IPPE:方法基于论文 T. Collins and A. Bartoli. “Infinitesimal Plane-Based Pose Estimation”SOLVEPNP_IPPE_SQUARE:方法基于论文 Toby Collins and Adrien Bartoli. “Infinitesimal Plane-Based Pose Estimation”SOLVEPNP_SQPNP:方法基于论文 “A Consistently Fast and Globally Optimal Solution to the Perspective-n-Point Problem” by G. Terzakis and M.Lourakis2.4 solvePnp的点对

一般来说,解算PnP,最少需要4个物体点与其成像点构成的点对,几个特例如下:

当SOLVEPNP_ITERATIVE并且useExtrinsicGuess=true时(rvec和tvec有初值),所需的点数最小可以为3;P3P methods (SOLVEPNP_P3P, SOLVEPNP_AP3P): 需且仅需4个输入点来获得唯一解;SOLVEPNP_IPPE:输入点数必须 >= 4,并且所有物体点必须共面;SOLVEPNP_IPPE_SQUARE:对点的顺序有规定,具体这里略; 除了这几个外,其它方法(flags)要求点的数量必须 >= 4 ,对物体点位置顺序等没有特殊规定。3 solvePnP使用

使用solvePnP前,需要已具备如下参数:

vector<Point3f>objPts;//3D点数组,世界坐标系物体点坐标,至少4个点vector<Point2f>imgPts;//2D点数组,与以上物体点一一对应的图像点坐标Mat cameraMatrix;//相机内参矩阵,3x3矩阵Mat distCoeff;//相机畸变系数矩阵,我一般是用1x5矩阵,如果相机没有畸变,可以把所有元素置为0

然后调用

Mat rvec, tvec;//
本文链接地址:https://www.jiuchutong.com/zhishi/289626.html 转载请保留说明!

上一篇:最大规模的科技公司IPO交易是什么(最大规模的科技公司)

下一篇:基础:BS(Browser/Server)、CS(Client/Server)架构(基础代谢)

  • 华为延时摄影能拍多久(华为延时摄影能拍多久的视频)

    华为延时摄影能拍多久(华为延时摄影能拍多久的视频)

  • 抖音删除评论对方知道吗(抖音删除评论对号有影响吗)

    抖音删除评论对方知道吗(抖音删除评论对号有影响吗)

  • 华为p40拍照怎么设置(华为p40拍照怎么显示时间日期)

    华为p40拍照怎么设置(华为p40拍照怎么显示时间日期)

  • dub-al00是什么型号(dub-al00是什么型号手机)

    dub-al00是什么型号(dub-al00是什么型号手机)

  • 微信群开视频最多几个人(微信群里开视频)

    微信群开视频最多几个人(微信群里开视频)

  • 微信被限制8天后登录怎么办(微信被限制8天怎么解决)

    微信被限制8天后登录怎么办(微信被限制8天怎么解决)

  • iphonex xr xs的区别(苹果 x xr xs区别)

    iphonex xr xs的区别(苹果 x xr xs区别)

  • 平板wlan版和wifi版的区别(平板wlan版和蜂窝版有什么区别)

    平板wlan版和wifi版的区别(平板wlan版和蜂窝版有什么区别)

  • 荣耀8有投屏功能吗(荣耀8能不能投屏)

    荣耀8有投屏功能吗(荣耀8能不能投屏)

  • vivox9充电慢怎么解决(vivox9s充电慢)

    vivox9充电慢怎么解决(vivox9s充电慢)

  • 电脑乘法符号怎么打(电脑乘法符号怎么输?)

    电脑乘法符号怎么打(电脑乘法符号怎么输?)

  • 苹果手机全网通是什么意思(苹果手机全网通和公开版有什么区别)

    苹果手机全网通是什么意思(苹果手机全网通和公开版有什么区别)

  • word2010有几个视图方式(word2010有哪几种视图方式)

    word2010有几个视图方式(word2010有哪几种视图方式)

  • word黄色底纹怎么弄(word黄色底纹怎么去掉)

    word黄色底纹怎么弄(word黄色底纹怎么去掉)

  • 怎么更改微信默认相机(怎么更改微信默认地图)

    怎么更改微信默认相机(怎么更改微信默认地图)

  • 华为手机运动健康怎么开启(华为手机运动健康怎么关闭)

    华为手机运动健康怎么开启(华为手机运动健康怎么关闭)

  • 微信收藏悬浮窗怎么设置(微信聊天框上面的收藏)

    微信收藏悬浮窗怎么设置(微信聊天框上面的收藏)

  • oppoa3呼吸灯在哪开(oppoa73手机在哪里找呼吸灯)

    oppoa3呼吸灯在哪开(oppoa73手机在哪里找呼吸灯)

  • 手机excel怎么打字(手机excel怎么打印到一张a4纸)

    手机excel怎么打字(手机excel怎么打印到一张a4纸)

  • 6s怎么弄微信分身(iphone6微信分身怎么弄)

    6s怎么弄微信分身(iphone6微信分身怎么弄)

  • 话费充值卡怎么用(话费充值卡怎么回收)

    话费充值卡怎么用(话费充值卡怎么回收)

  • 快手怎么发快手影集(快手怎么发快手赚钱)

    快手怎么发快手影集(快手怎么发快手赚钱)

  • elementUI使用el-upload上传文件写法总结及避坑,上传图片/视频到本地/服务器以及回显+删除(vue中elementui怎么用)

    elementUI使用el-upload上传文件写法总结及避坑,上传图片/视频到本地/服务器以及回显+删除(vue中elementui怎么用)

  • 流程图拖拽视觉编程--概述(用流程图的形式写出视觉的形成过程)

    流程图拖拽视觉编程--概述(用流程图的形式写出视觉的形成过程)

  • WP Smart Preloader 为你的WordPress添加预加载动画

    WP Smart Preloader 为你的WordPress添加预加载动画

  • 企业缴纳季度所得税
  • 软件企业认定流程
  • 购买电脑的折旧怎么计算
  • 退休后兼职收入需要交税吗
  • 测绘费能否在土地出让
  • 部门奖金怎么入账
  • 不能税前扣除的费用有哪些
  • 进口关税完税价格
  • 主营业务收入包含消费税吗
  • 无票收入如何抵税
  • 无形资产的入账价值包括什么
  • 金税盘的用户名
  • 企业房产税怎么申报缴纳流程
  • 员工离职一次性结清工资
  • 公转私用途最好写借款
  • 一般纳税人的月报,季报年报
  • 浏览器备份文件在哪里
  • 生育津贴申请表打印
  • bios boot设置
  • 怎么更新电脑系统win10
  • php安装及使用教程
  • windows闹钟
  • service.exe是什么进程
  • 公允价值计量转成本法 同一控制
  • 新手会计怎么做分录
  • thinkphp save
  • 弥补以前年度亏损最多几年
  • 提高支票处理效率的有效方法是
  • joomla模板制作教程
  • php链表的应用场景
  • php和mysql关系
  • ls -all命令
  • 增值税发票开票系统数据与实际报税数不一致的原因?
  • 境外公司委托境内公司付款
  • 投标保证金的缴纳方式有哪些
  • 资产负债表里长期股权投资是什么意思
  • C语言中次方怎么表示
  • python locator
  • MySQL Proxy的安装及基本命令使用教程
  • 商品售后回购分录
  • 教你如何看懂标签
  • 走账的目的
  • sql server 附加
  • 印花税计税依据怎么算
  • 管理费用错账怎么处理
  • sql server 防止表锁死
  • 客户多付的货款 不用退回 进营业外收入吗
  • 股东分红申报个税怎么填
  • 现在购入不动产怎么办
  • 只知道主营业务怎么办
  • 未抵扣机动车专票红字发票怎么填开
  • 取得无形资产发生的相关费用
  • 建筑材料租赁公司
  • 汇算清缴工资调减怎么做账
  • 租赁合同的印花税的计税依据
  • mysql怎么查询数据表
  • wan 微型端口
  • 如何禁止win10系统更新到win11
  • win10打开文件夹弹出新窗口
  • 为什么电脑显示windows10即将终止服务
  • win7系统如何关闭开机自动启动软件
  • 信佛是信教吗
  • windows7出现错误恢复怎么办
  • 用VMware安装阿里linux
  • 按developer.android.com安装新的环境
  • opengl图形裁剪
  • android5种布局
  • css中背景图片设置
  • 拥有一个属于自己的空间高中作文
  • linux 部署
  • js鼠标点击事件监听
  • 让ie运行js时提示允许阻止内容运行的解决方法
  • python提取信息
  • python添加用户并加入到相应组
  • 广州电子税务局官网登录入口网址
  • 大连天气app
  • 纳税人就是负税人对还是错
  • 海南海葬需要多少费用
  • 国税局发票查询平台发票查询
  • 怎么查询地税信息表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设