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

  • iphone13pro怎么添加小组件(iphone13pro怎么添加nfc门禁卡)

    iphone13pro怎么添加小组件(iphone13pro怎么添加nfc门禁卡)

  • 苹果相册怎么打码(苹果手机相册怎么打)

    苹果相册怎么打码(苹果手机相册怎么打)

  • 双通道一定要买套条吗(双通道必须同品牌吗)

    双通道一定要买套条吗(双通道必须同品牌吗)

  • 怎样下载微信运动(怎样下载微信运动计步器)

    怎样下载微信运动(怎样下载微信运动计步器)

  • 网络tx是什么意思

    网络tx是什么意思

  • 换手机微信收藏不同步(换手机微信收藏夹怎么转移)

    换手机微信收藏不同步(换手机微信收藏夹怎么转移)

  • qq签名怎么换回以前用过的(qq个人签名怎么恢复)

    qq签名怎么换回以前用过的(qq个人签名怎么恢复)

  • p30发热怎么解决(p30发热严重如何处理)

    p30发热怎么解决(p30发热严重如何处理)

  • ss8050和s8050的区别(ss8050和8050的区别)

    ss8050和s8050的区别(ss8050和8050的区别)

  • c8817d是华为什么型号(华为c8816d是什么型号)

    c8817d是华为什么型号(华为c8816d是什么型号)

  • am3和am3+ cpu能通用吗(am3和am2+ cpu能通用吗)

    am3和am3+ cpu能通用吗(am3和am2+ cpu能通用吗)

  • 苹果手机微信可以投屏到电视吗(苹果手机微信可以同步另外一台手机吗)

    苹果手机微信可以投屏到电视吗(苹果手机微信可以同步另外一台手机吗)

  • ipadair3和ipadpro区别(ipad air3与ipad pro区别)

    ipadair3和ipadpro区别(ipad air3与ipad pro区别)

  • 宽带运营商服务器未响应(宽带运营商服务器未响应怎么解决)

    宽带运营商服务器未响应(宽带运营商服务器未响应怎么解决)

  • 华为mate30后面的标签可以撕掉吗(华为mate30后面的灯图片)

    华为mate30后面的标签可以撕掉吗(华为mate30后面的灯图片)

  • 手机没字怎么恢复(手机字体没有了怎么恢复)

    手机没字怎么恢复(手机字体没有了怎么恢复)

  • 为什么苹果xr总是没有信号(为什么苹果xr总是退卡怎么回事)

    为什么苹果xr总是没有信号(为什么苹果xr总是退卡怎么回事)

  • oppor15怎么添加桌面插件(oppor15怎么添加nfc功能)

    oppor15怎么添加桌面插件(oppor15怎么添加nfc功能)

  • 淘宝直播中怎么看自己的id(淘宝直播中怎么看回放?)

    淘宝直播中怎么看自己的id(淘宝直播中怎么看回放?)

  • 苹果手机怎么截屏(苹果手机怎么截长图)

    苹果手机怎么截屏(苹果手机怎么截长图)

  • 小米8se电池不耐用(小米8se电池寿命)

    小米8se电池不耐用(小米8se电池寿命)

  • 腾讯能投屏吗(腾讯视频能投屏吗怎么投屏)

    腾讯能投屏吗(腾讯视频能投屏吗怎么投屏)

  • 抖音视频可二次编辑吗(抖音视频可二次推广吗)

    抖音视频可二次编辑吗(抖音视频可二次推广吗)

  • 拉黑后红包能退回吗(拉黑好友红包退还有提示吗)

    拉黑后红包能退回吗(拉黑好友红包退还有提示吗)

  • IDEA如何运行SSM项目(超详细图解)(idea如何运行ssm项目spring)

    IDEA如何运行SSM项目(超详细图解)(idea如何运行ssm项目spring)

  • 增值税开票软件怎么改开票人
  • 外部奖励与内部奖励
  • 土地使用税的纳税义务人
  • 二手房交易需要购房发票吗
  • 减少实收资本需要缴纳什么税
  • 个体工商户单位性质怎么填
  • 小规模销售收入免税会计分录
  • 母子公司往来明细账正反面都可以写吗
  • 境内企业向境外放款额度最长放款期限为两年
  • 房地产企业营销设施建造费包括哪些
  • 刚成立的外贸公司做小规模纳税人好不好
  • 房租租金收入都缴纳什么税金
  • 房地产计税毛利率什么意思
  • 设备发票怎么抵扣
  • 人工材料成本怎么分配
  • 公司开出增值税发票可以作为货款证据起诉
  • 企业营改增后的会计处理有何变化
  • 消费税价外费用的计算
  • 红字发票怎么做帐
  • 个税少报有什么后果
  • 空调安装工程如何做
  • 个体工商户怎么办对公账户
  • 企业购买理财产品的会计分录
  • win10如何获得管理员权限修改文件
  • 固定资产合计等于固定资产账面价值吗
  • 手机CPU天梯图2023年7月
  • 处置固定资产增值税怎么计算
  • 转让股权怎么做分录
  • laravel视频教程
  • PHP:imageloadfont()的用法_GD库图像处理函数
  • 退回以前年度多交的附加税怎么做分录
  • 定时器计数器实验报告
  • gpt3 api
  • es5和es6的区别
  • 远程调试时,gdbserver运行在调试机
  • 融资租赁业务的程序主要有
  • 小微企业所得额如何计算
  • 运输发票必须附票吗
  • 费用化与资本化的区别与影响
  • 支付临时工工资,需要个税申报吗
  • 接待客户的住宿费发票是开谁的
  • 清算机构收单机构和发卡行
  • mysql,if
  • 公司垫付生育津贴后,社保局未报销给公司
  • 什么叫查账征收和核定征收
  • 当月进项发票忘记抵扣
  • 职工教育经费是否可以抵扣进项税
  • 递延所得税资产和负债账务处理
  • 税费多一分钱怎么调回来?
  • 如果对装修费用有异议怎么办
  • 预提费用如何做账务处理
  • 经营性应收项目的计算公式
  • 进项发票冲红退回怎么做账
  • 转回小规模
  • 先开票后发货是什么意思
  • 实收资本认缴怎么做账,要做账吗
  • 费用设置的明细科目
  • mysql优化技巧实战
  • Windows虚拟内存不足
  • ubuntu更换版本
  • linux使用yum
  • win7应用程序无法正常启动
  • os x yosemite10.10.4beta2更新了哪些内容 os x yosemite性能增强和bug修复以及下载
  • 进程 内核栈
  • android xui
  • cocos2dx 3.5 win7 eclipse 环境搭建及hello world
  • cocos2dx游戏案例
  • nodejs 插件开发
  • 简述javascript执行原理
  • html+css网站设计基础教程
  • unity rp
  • for 命令
  • 安卓监听事件
  • 税务局副科长工资
  • 安徽省国家税务局通用定额发票
  • 国家税务总局使用
  • 广东国税局发票查询系统
  • 授课费800元个税要收吗
  • 处理报废固定资产
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设