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

  • 3类团购营销十六种经典方法大集锦!(团购营销策略有哪些)

    3类团购营销十六种经典方法大集锦!(团购营销策略有哪些)

  • icloud自动续费怎么取消订阅(icloud 自动续费)

    icloud自动续费怎么取消订阅(icloud 自动续费)

  • 酷狗怎么退出账号登录(酷狗怎么退出账号登陆)

    酷狗怎么退出账号登录(酷狗怎么退出账号登陆)

  • 360浏览器怎么翻译英文网站(360浏览器怎么翻译网站)

    360浏览器怎么翻译英文网站(360浏览器怎么翻译网站)

  • ios14都支持哪些设备呢(ios14支持的iphone)

    ios14都支持哪些设备呢(ios14支持的iphone)

  • 荣耀20青春版呼吸灯如何设置(荣耀20青春版呼叫转移怎么设置)

    荣耀20青春版呼吸灯如何设置(荣耀20青春版呼叫转移怎么设置)

  • 手机迅雷内容无法下载(手机迅雷为什么看不到画面)

    手机迅雷内容无法下载(手机迅雷为什么看不到画面)

  • 淘宝平台标题栏最多允许输入多少个字符(淘宝平台标题栏允许最多输入60个字符集30个汉字)

    淘宝平台标题栏最多允许输入多少个字符(淘宝平台标题栏允许最多输入60个字符集30个汉字)

  • 电脑有红外线功能吗(电脑红外线功能是监控吗)

    电脑有红外线功能吗(电脑红外线功能是监控吗)

  • 小程序开发公司有几个(北京小程序开发公司)

    小程序开发公司有几个(北京小程序开发公司)

  • 华为手机门禁卡读不出来(华为手机门禁卡怎么在手机上使用)

    华为手机门禁卡读不出来(华为手机门禁卡怎么在手机上使用)

  • 电脑电源开不了机怎么办(电脑电源开不了机是什么情况)

    电脑电源开不了机怎么办(电脑电源开不了机是什么情况)

  • 能插卡的ipad是哪一款(插卡的ipad是哪一款)

    能插卡的ipad是哪一款(插卡的ipad是哪一款)

  • 朋友圈设置部分人可见别人知道吗(朋友圈设置可见对方知道吗)

    朋友圈设置部分人可见别人知道吗(朋友圈设置可见对方知道吗)

  • 手机wadl可以删除吗(手机里能删的文件)

    手机wadl可以删除吗(手机里能删的文件)

  • 苹果app下载怎么设置指纹(苹果app下载怎么设置不需要密码)

    苹果app下载怎么设置指纹(苹果app下载怎么设置不需要密码)

  • 淘宝优惠券删除了从哪里可以恢复(怎么把淘宝优惠券删除)

    淘宝优惠券删除了从哪里可以恢复(怎么把淘宝优惠券删除)

  • pr视频添加动画效果(pr怎么给视频加动态效果)

    pr视频添加动画效果(pr怎么给视频加动态效果)

  • 萤石如何强制解绑(萤石如何强制解绑视频)

    萤石如何强制解绑(萤石如何强制解绑视频)

  • 小米蓝牙耳机如何恢复出厂设置(小米蓝牙耳机如何充电)

    小米蓝牙耳机如何恢复出厂设置(小米蓝牙耳机如何充电)

  • app未受信用怎么解决(app未授信 是什么意思)

    app未受信用怎么解决(app未授信 是什么意思)

  • 关机后还收得到微信吗(关机后还收得到短信吗)

    关机后还收得到微信吗(关机后还收得到短信吗)

  • bkka-l00是什么型号(bkkal10)

    bkka-l00是什么型号(bkkal10)

  • 女性app制作如何实现商业化(女性专属软件)

    女性app制作如何实现商业化(女性专属软件)

  • 小规模纳税人纳税申报时间
  • 税务局做社保关联带什么资料
  • 个人租房缴纳由谁缴纳增值税
  • 研发支出属于什么科目借贷方向
  • 向银行借款存入银行会引起
  • 税务局查账需要几天
  • 国有资产报废如何委托拍卖公司
  • 免税产品的销项税
  • 溢价发行债券的发行价格怎么计算的
  • 服装厂里面
  • 非本单位费用列支 违反
  • 转让财产收入计入哪个科目
  • 以非现金资产清偿债务的会计处理
  • 公司购入房产账务处理
  • 医疗机构交企业所得税吗
  • 企业筹建期购买设备是否可以扣除
  • 新版edge浏览器如何恢复设置
  • 笔记本windows10截屏
  • 间接费用是什么费用
  • 应用程序错误0x000000
  • thinkphp怎么用
  • nvcpl.dll是什么
  • 栀子花的养殖方法和注意事项茉莉花
  • linux怎么打开makefile
  • 富山和富士山
  • 农产品核定扣除和计算抵扣的区别
  • 带息应收票据应于收到或开出或承兑时
  • 适用执行企业会计准则的一般企业
  • 应交税金及附加包括哪些
  • php执行系统命令函数
  • 进项税额转出在申报的时候怎么填
  • 退质保金计入什么科目
  • 工会经费按工资总额的
  • 6%税点是什么意思
  • 不动产用于集体福利进项税额抵扣吗
  • 所得税汇算清缴账务处理
  • 现代服务行业有哪些
  • 银行汇票用什么会计分录
  • sqlserver 数据集字符集种类
  • 疫情期间制造费用账务处理
  • MySQL Replace INTO的使用
  • 固定资产清理的借贷方向
  • 删除mysql57服务
  • 国家税务总局就是国税局吗?
  • 以前年度损益调整
  • 银行存款支付业务招待费
  • 盘盈存货账务处理
  • 增值税 附加税费
  • 公司贷款直接打收据吗
  • 损益类科目明细账怎么结账
  • 手工账明细账怎么登记
  • 企业会计准则第4号固定资产
  • 公司购买的车辆
  • 明细账建账的步骤
  • sql to sqlalchemy 转换的小例子
  • windows 10 build 9888
  • ubuntu有线正在连接
  • xp系统打不开电脑
  • 删除xp本地保存的视频
  • centos如何配置ip地址,网关和掩码
  • 盗版win7怎么升级
  • win10周年更新版是什么意思
  • win7旗舰版系统激活码
  • js给表格添加一行
  • jquery插件库怎么导入
  • node_modules复制
  • node.js怎么学
  • shell 正则表达式 *什么意思
  • linux搭载服务器
  • unity获取物体的位置
  • unity3d android 插件
  • javascript基础编程
  • python 批量查询
  • unity火球特效
  • unity角色扮演游戏
  • jquery如何解决跨域问题
  • 税务局遴选能去什么单位
  • 怎样从增值税发票查询
  • 企业所得税计算器在线计算
  • 政府补贴 收入
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设