位置: 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)架构(基础代谢)

  • fileinputstream中文乱码(fileinputstreamreader)

    fileinputstream中文乱码(fileinputstreamreader)

  • 抖音怎么打开我喜欢的作品给别人看(抖音怎么打开我的橱窗)

    抖音怎么打开我喜欢的作品给别人看(抖音怎么打开我的橱窗)

  • 苹果微信悬浮窗怎么打开(苹果微信悬浮窗怎么弄出来)

    苹果微信悬浮窗怎么打开(苹果微信悬浮窗怎么弄出来)

  • vivo如何关闭上拉原子组件(vivo如何关闭上滑启动应用程序)

    vivo如何关闭上拉原子组件(vivo如何关闭上滑启动应用程序)

  • 618返场什么意思(618返场什么意思啊)

    618返场什么意思(618返场什么意思啊)

  • 电源pwr是什么意思(电源板pnl-pow是什么意思)

    电源pwr是什么意思(电源板pnl-pow是什么意思)

  • 闲鱼怎么隐藏会员名(闲鱼怎么隐藏会员)

    闲鱼怎么隐藏会员名(闲鱼怎么隐藏会员)

  • 台式cpu有必要换硅脂(台式电脑cpu是不是可以随便更换的)

    台式cpu有必要换硅脂(台式电脑cpu是不是可以随便更换的)

  • 苹果se2和苹果8手机壳通用吗(苹果se2和苹果8手机壳一样吗)

    苹果se2和苹果8手机壳通用吗(苹果se2和苹果8手机壳一样吗)

  • qqvip有什么用处(qqvip1有什么功能)

    qqvip有什么用处(qqvip1有什么功能)

  • 路由器wps按钮在哪(路由器wps按钮在哪里设置)

    路由器wps按钮在哪(路由器wps按钮在哪里设置)

  • 华为nova6上面的黑方块是什么(华为nova6上面的孔)

    华为nova6上面的黑方块是什么(华为nova6上面的孔)

  • pacmoo是r15什么版本(oppor15pacm00是什么版本)

    pacmoo是r15什么版本(oppor15pacm00是什么版本)

  • 接到未知号码怎么回事(接到未知号码怎么设置)

    接到未知号码怎么回事(接到未知号码怎么设置)

  • qq简洁模式有什么用(qq简洁模式什么样)

    qq简洁模式有什么用(qq简洁模式什么样)

  • 华为手机的闹钟在哪里能找到(华为手机的闹钟音乐在哪里设置)

    华为手机的闹钟在哪里能找到(华为手机的闹钟音乐在哪里设置)

  • iqoo支持充电口插耳机吗(iqoo充电接口支持耳机吗)

    iqoo支持充电口插耳机吗(iqoo充电接口支持耳机吗)

  • 1.5vaaa电池是几号(1.5v aa电池容量)

    1.5vaaa电池是几号(1.5v aa电池容量)

  • 服务器运行失败是怎么回事(mp4文件服务器运行失败)

    服务器运行失败是怎么回事(mp4文件服务器运行失败)

  • word无法修改内容(word无法修改内容怎么办)

    word无法修改内容(word无法修改内容怎么办)

  • 安卓10系统新功能(安卓10q)

    安卓10系统新功能(安卓10q)

  • 手机云服务要不要开启(手机云服务有必要开吗)

    手机云服务要不要开启(手机云服务有必要开吗)

  • 飞猪能买儿童半价票吗(飞猪购买儿童票怎么下单)

    飞猪能买儿童半价票吗(飞猪购买儿童票怎么下单)

  • qq怎么恢复以前的聊天记录(qq怎么恢复以前的照片)

    qq怎么恢复以前的聊天记录(qq怎么恢复以前的照片)

  • autonavi是什么文件夹

    autonavi是什么文件夹

  • 个人免征税额
  • 什么是企业税务登记号
  • 小规模纳税人未开票收入填在哪里
  • 网上认证勾选平台登录不成功
  • 非财政补助结余分配借贷方向
  • 超标公积金应怎么办理
  • 资本化支出加计摊销形成的差异
  • 奖金属于应付职工薪酬
  • 冲减上年的所得税费用入什么科目?
  • 支出没有发票怎么做账
  • 这个月没有进项开了发票可怎么办
  • 计入资本公积的固定资产转出
  • 估价入账是什么意思
  • 小规模纳税人印花税怎样计算
  • 少交了增值税怎么补
  • 物业管理专票税点
  • 销售收入里面包括免税收入呢
  • 预提厂房租金
  • 结转应交增值税会计科目
  • 新版edge浏览器历史记录
  • 公司餐饮费怎么做账
  • kb4579311安装失败
  • uniqpp
  • player.exe是什么意思
  • 营改增后工程税收怎么计算
  • 税前扣除是好事吗
  • wlan和蜂窝版的区别
  • 二级资本债记哪个科目
  • 变更营业执照中心怎么改
  • 转让存货属于什么收入
  • 代扣代缴企业所得税如何申报
  • php对数组进行排序
  • php页面跳转方法
  • 微信小程序父子通信
  • 微软的人工智能ChatGPT
  • javascript中文手册
  • hadoop集群搭建完整教程
  • 网页设置怎么在css中设置
  • pythontime模块
  • php 微信公众号自定义菜单
  • 什么是跨域以及解决方法
  • 待核销基建支出与待摊投资的区别
  • 销售旧货和销售使用过的固定资产
  • 视同内销补税的财务处理
  • 以前年度损益调整结转到本年利润吗
  • 年度纳税申报时间
  • 小额贷款公司如何运作
  • 财务费用结转时会计分录
  • 在建工程什么时候用
  • 租赁厂房生产是生产经营活动吗
  • 发票未到成本如何做分录
  • 跨年收入会计分录
  • 出租不动产如何缴纳增值税
  • 工程施工和主营业务成本关系
  • 使用mysql进行模糊查询
  • win8宽带连接
  • xp系统换成win10
  • wmiprvse.exe是什么程序
  • macbook看视频卡顿
  • win7系统打不开浏览器
  • win1020th2
  • opengl的坐标系
  • es6字符串模版
  • nodejs和mysql
  • android开发工程师案例教程源码
  • android方法大全
  • 细说javascript
  • shell脚本if用法
  • numpy使用心得
  • js移动dom
  • android设计模式书籍
  • python程序解析
  • 广西壮族自治区图书馆
  • 南京电子税务局咨询电话
  • 个人所得税缴纳标准2024年
  • 深圳市国家税务局网站
  • 没有核定印花税可以按次申报吗
  • 在山东省一个月水费大概多少
  • 广西定额发票查询入口官网
  • 贵州国家税务局陈开平
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设