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

  • vue响应式网页设计企业有必要做网站吗?现在是2022年。现在还有人看网站吗

    vue响应式网页设计企业有必要做网站吗?现在是2022年。现在还有人看网站吗

  • 怎么在抖音群里发自己的名片(怎么在抖音群里踢人)

    怎么在抖音群里发自己的名片(怎么在抖音群里踢人)

  • 闲鱼发布商品搜索不到是哪些原因导致的(闲鱼发布商品搜不到 超过5天)

    闲鱼发布商品搜索不到是哪些原因导致的(闲鱼发布商品搜不到 超过5天)

  • word怎么截取其中几页(如何在word中截取部分截图)

    word怎么截取其中几页(如何在word中截取部分截图)

  • 计算机分类汇总怎么操作(计算机分类汇总怎么做)

    计算机分类汇总怎么操作(计算机分类汇总怎么做)

  • 微信怎么给别人留言(微信怎么给别人转账到银行卡)

    微信怎么给别人留言(微信怎么给别人转账到银行卡)

  • 微信语音电话静音对方能听到吗(微信语音电话静音了会被看出来)

    微信语音电话静音对方能听到吗(微信语音电话静音了会被看出来)

  • ipad qq语音通话怎么静音(ipad qq语音通话声音太大)

    ipad qq语音通话怎么静音(ipad qq语音通话声音太大)

  • ai卡住直接重启会丢失吗(ai卡住直接重启怎么办)

    ai卡住直接重启会丢失吗(ai卡住直接重启怎么办)

  • 华为手机怎么查看自己的内存(华为手机怎么查用了多久)

    华为手机怎么查看自己的内存(华为手机怎么查用了多久)

  • 为什么pdf打印出来缺一部分(为什么pdf打印出来字体不一样)

    为什么pdf打印出来缺一部分(为什么pdf打印出来字体不一样)

  • 苹果xsmax防水到什么程度(苹果xs max防水视频)

    苹果xsmax防水到什么程度(苹果xs max防水视频)

  • 抖音怎么弄合集(抖音怎么弄合集有什么要求)

    抖音怎么弄合集(抖音怎么弄合集有什么要求)

  • 苹果wifi版能不能插卡(苹果wifi版能不能连热点)

    苹果wifi版能不能插卡(苹果wifi版能不能连热点)

  • ps行间距快捷键(ps怎么设置行之间的距离)

    ps行间距快捷键(ps怎么设置行之间的距离)

  • 苹果手机投屏怎么设置(苹果手机投屏怎么取消隔空播放)

    苹果手机投屏怎么设置(苹果手机投屏怎么取消隔空播放)

  • 小米5s什么时候能更新MIUI11(小米5s什么时候更新miui12)

    小米5s什么时候能更新MIUI11(小米5s什么时候更新miui12)

  • 苹果xr日历怎么显示节假日(苹果xr日历怎么删除日程)

    苹果xr日历怎么显示节假日(苹果xr日历怎么删除日程)

  • 朋友圈在看什么意思(朋友圈看什么时候给别人点赞)

    朋友圈在看什么意思(朋友圈看什么时候给别人点赞)

  • 新苹果手机如何关闭购买服务(新苹果手机如何下载软件?)

    新苹果手机如何关闭购买服务(新苹果手机如何下载软件?)

  • 手机不在店里,收款语音如何实现(手机不在店里支付宝怎么播报)

    手机不在店里,收款语音如何实现(手机不在店里支付宝怎么播报)

  • 嵌入式系统开发用什么语言

    嵌入式系统开发用什么语言

  • 红米mee7s是什么型号(红米mee7是什么型号手机)

    红米mee7s是什么型号(红米mee7是什么型号手机)

  • 全民k歌私密分享啥意思(全民k歌私密分享后怎么不让好友听)

    全民k歌私密分享啥意思(全民k歌私密分享后怎么不让好友听)

  • In Java, how do I read/convert an InputStream to a String?  Stack Overflow

    In Java, how do I read/convert an InputStream to a String? Stack Overflow

  • 帝国CMS怎么调用下载排行(帝国cms相关文章调用)

    帝国CMS怎么调用下载排行(帝国cms相关文章调用)

  • 外经证预缴税款征收率
  • 小规模纳税人起征点和免征额
  • 医院都需要交什么税
  • 发票右上角数字是什么
  • 直线法计提折旧的公式预计净残值
  • 工资和社保计提和发放账务处理
  • 退货的增值税专用发票
  • 库存现金盘点表是不是原始凭证
  • 销售收入冲红如何入账
  • 无法确认退货率时,差错更正为啥不反转增值税
  • 员工借款可以直接转账吗
  • 企业进货不收发票怎么做帐?
  • 所得税季报中的利润总额包括哪些
  • 外省农村户口可以迁到外省农村吗
  • 早教加盟需要
  • 差额纳税和全额纳税比例
  • 实际缴纳的增值税税额怎么算
  • 进项发票已入账抵扣后开负数红冲怎么处理
  • 物流公司货车报废款怎么做账
  • 一般商贸企业出口白酒要交税吗
  • 无形资产和长期待摊费用思维导图
  • 汽车租赁公司产品服务
  • win11隐藏图标怎么弄出来
  • 3%减按2%征收增值税政策
  • 劳务发票税率是多少
  • mac废纸篓立即删除和清倒
  • Linux系统中怎么开机自动运行拍摄文件
  • 商品购进核算
  • php的项目
  • 转让房屋土地增值税如何计算
  • 金融企业营业税税率是多少
  • web渗透实战
  • 外币借款费用
  • 购车的车辆购置税怎么交
  • CSS: overflow-anchor 固定滚动到底部,随着页面内容增多滚动条自己滚动展示最新的内容
  • 多模手机
  • torch.nn.functional.interpolate()函数详解
  • php 验证类
  • phpcms官网打不开
  • 跨域问题是什么
  • 成本利润率算出的不含税吗
  • 工地购买的厨房用品计入哪个科目
  • 母公司资产包括子公司吗
  • php中定义常量的函数是什么
  • mongodb主备配置
  • 金蝶暂存凭证怎样转正常凭证
  • 查验发票显示红冲是什么意思
  • 辞退员工补偿金计入什么科目
  • 无形资产出租如何入账
  • sql server数据查询语句
  • access数据库修改字段类型
  • 应交增值税转入未交增值税怎么算
  • 误餐补助需要提供发票吗
  • 营业外收入应如何核算
  • 物业电费加价如何处理
  • 公司分期付款购车如何做账
  • 企业支付宝扣费
  • 新企业办理金税盘流程
  • 新单位建账怎么做
  • 客户火车票可以抵扣进项税吗
  • 建筑公司的会计好做吗
  • sql server分组查询
  • SQL Server"错误 21002: [SQL-DMO]用户 * 已经存在问题解决
  • windows2008 64位系统下MySQL 5.7绿色版的安装教程
  • xp系统本地用户和组在哪里
  • dsapi.exe是什么
  • win10电脑清理磁盘
  • unity3d读取gis数据
  • node.js 10实战
  • js内置对象方法有哪些
  • toolkit:eclipse导入下载好的android系统源码
  • js 键盘码
  • nodemodules拷贝到其他目录
  • shell脚本编程实验报告
  • js tojsonstring
  • android assets
  • 山东税务申报如何网上申报
  • 北京国税app
  • 矿产资源税税率2020年
  • 富士康走了,京东去哪了
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设