位姿估计 | 从目标特征点检测到目标体坐标系相对于相机坐标系的位姿估计过程

news2024/11/29 6:29:42

目录

  • 引言
  • 技术流程
    • 1. PNP介绍
    • 2. ICP介绍
      • a. 利用ICP求解目标相对相机的位姿
      • b. 利用ICP求解相机帧间运动

引言

本文接着分享空间目标位姿跟踪和滤波算法中用到的一些常用内容,希望为后来者减少一些基础性内容的工作时间。以往分享总结见文章:位姿跟踪 | 相关内容目录和链接总结(不断更新中~~~)

本文介绍如何利用特征点求解目标体坐标系相对于相机坐标系的位姿

技术流程

1. PNP介绍

PnP(Perspective-n-Point)是根据图像中特征点的二维像素坐标及其对应的三维空间坐标,来估计相机在参考坐标系中位姿的一类算法。

直观来讲,当相机观察到空间中的某一物体时,我们已经知道了该物体在某一参考坐标系下的位置和姿态,那么如何通过图片中物体的成像判断出相机此时在参考坐标系下的位姿

这正是PnP要解决的问题,即利用已知三维结构与图像的对应关系求解相机与参考坐标系的相对关系(相机的外参)。

总的来说,PNP问题求解的是相机相对于参考坐标系的位姿。需要已知特征点像素坐标,以及对应的参考坐标系下的坐标值。

一般来说,利用特征点的像素坐标,以及已知的相机内参,可以获取特征点在相机坐标系下的坐标。

在已知特征点在相机坐标系下的坐标和参考坐标系下的坐标位置后,利用ICP方法可以求解相机坐标系和参考坐标系之间的相对位姿!!

2. ICP介绍

迭代最近点算法ICP ( Iterative Closest Point):已知三维点在两个坐标系中的坐标,求这两个坐标系的变换关系,称为 ICP 问题。

ICP 算法的目的是要找到特征点匹配之间的旋转参数 R R R和平移参数 T T T,使得两点数据之间满足某种度量准则下的最优匹配。

设参考坐标系下特征点坐标集合为 S 1 S_1 S1,相机坐标系下特征点坐标集合为 S 2 S_2 S2 P i P_i Pi Q i Q_i Qi (又可记作 p 1 i p_1^i p1i p 2 i p_2^i p2i)分别表示特征点集 S 1 S_1 S1 S 2 S_2 S2中某个特征点坐标。

构造目标函数:

利用SVD分解求解ICP问题,具体步骤为:

  1. 首先计算特征点集的均值以及去中心点化的点坐标:
  1. 定义矩阵 M M M
  1. M M M进行奇异值分解:
  1. 计算旋转矩阵 R R R的最优解为:
  1. 计算平移矩阵 T T T

a. 利用ICP求解目标相对相机的位姿

得到特征点坐标在相机坐标系和目标坐标系下的坐标值后,可以利用奇异值分解(SVD)求解目标坐标系相对于参考坐标系的旋转矩阵 R R R和平移矩阵 T T T,即为求解相对位姿问题。

b. 利用ICP求解相机帧间运动

ICP算法还可以根据前后两帧图像中匹配好的特征点在相机坐标系下的三维坐标,求解相机帧间运动。

直观来讲,当相机在某处观察某一物体时,我们知道了相机此时与物体之间的相对位姿关系;当相机运动到另一处,我们亦知道此时相机与物体的相对位姿关系。

ICP问题可以求解这两次相机与物体的相对位姿关系,从而确定相机发生了怎样的运动。

参考网址:

  1. ICP 问题之 SVD
  2. 视觉SLAM中的对极约束、三角测量、PnP、ICP问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/646391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当你全力以赴世界也会为你让路,23级人大女王金融硕士准备中

当你全力以赴,世界也会为你让路,在申报人民大学与加拿大女王大学金融硕士(国际班)项目的路上你真的努力了吗? 记得曾经在知乎上看过一个问题“什么事情给你的生活带来什么改变”,下边有很多人回答说&#x…

【每日算法】【202. 快乐数】

☀️博客主页:CSDN博客主页 💨本文由 我是小狼君 原创,首发于 CSDN💢 🔥学习专栏推荐:面试汇总 ❗️游戏框架专栏推荐:游戏实用框架专栏 ⛅️点赞 👍 收藏 ⭐留言 📝&…

【Linux】—— 详解计算机体系结构

前言: 在之前,我们已经对Linux环境开发的基本工具进行了详细的学习。接下来,我们将要学习的第一大块便是关于计算机体系结构的知识!! 目录 前言 (一)冯诺依曼体系结构 基本介绍 木桶原理 …

SpringSecurity实现前后端分离登录授权详解

在介绍完SpringSecurity实现前后端分离认证之后,然后就是SpringSecurity授权,在阅读本文章之前可以先了解一下作者的上一篇文章SpringSecurity认证SpringSecurity实现前后端分离登录token认证详解_山河亦问安的博客-CSDN博客。 目录 1. 授权 1.1 权限系…

线程间的通信机制与生产者消费者案例

线程间的通信机制与生产者消费者案例 线程间通信 为什么要处理线程间通信: 当我们需要多个线程来共同完成一件任务,并且我们希望他们有规律的执行,那么多线程之间需要一些通信机制,可以协调他们的工作,以此实现多线…

中空百叶玻璃隔断怎么组装

以下是中空百叶玻璃隔断的组装步骤: 1. 准备材料:中空百叶玻璃、接头、U型槽、挂件、固定螺钉等。 2. 根据实际需要,将中空百叶玻璃按照尺寸进行切割。 3. 在地面上铺上一张软垫,将切好的玻璃放置在垫子上,然后在两侧标…

自动化部署工具 drone 部署文档 (使用于 vue java 部署 其他自行研究)

1.准备好docker环境 drone 官网 Drone CI – Automate Software Testing and Delivery 推荐使用宝塔傻瓜式一键安装宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 安装好docker环境之后开始部署容器 这里用到的git版本软件是gogs,其他自己研究 docker版的gogs和实…

Linux内存管理 —— 文件系统缓存和匿名页的交换

转自:https://www.cnblogs.com/wangshaowei/p/14089132.html 文件页 内存回收,也就是系统释放掉可以回收的内存,比如缓存和缓冲区,就属于可回收内存。它们在内存管理中,通常被叫做文件页(File-backed Pag…

B045-jQuery案例实战BootStrap

目录 一、BootStrap概述二、BootStrap使用1.起步1.下载或放入BootStrap文件到本地工程里2.在html代码中引入1个css文件和两个js文件3.复制模板代码到本地html文件里会自动应用成bootStrap图样中的效果0.实战案例-环境准备0.实战案例-基本模板 2.布局容器3.栅格系统4.常用组件表…

echarts里type为custom,自定义配置renderItem为柱状形状

echarts里type为custom,自定义配置renderItem为柱状形状 echarts里type为custom,自定义配置renderItem为柱状形状 echarts里type为custom,自定义配置renderItem为柱状形状 主要功能:文本超过柱状形状就隐藏否则就显示,…

风口上的AIGC,技术人才动不动就年薪百万?

2023年,职场人都在讨论什么? 自今年3月以来,随着ChatGPT应用持续走俏,AIGC领域抢人大战盛况空前。随之而来的便是“AI取代人类”“10亿打工人被革命”,AI的发展速度和步伐,超乎我们预期,也影响…

MySQL - 第0节 - MySQL在Centos 7环境安装

1.安装前说明 • 安装与卸载过程中,用户全部切换成为root,一旦安装,普通用户也能够使用。 • 初期练习,mysql不进行用户管理,全部使用root进行,后面学了用户管理,再考虑新建普通用户。 注&#…

互联网医院资质申请条件|互联网医院申请流程

互联网医院是医疗行业应用互联网技术的一种创新形态,它为患者提供便捷的医疗服务,改善了医疗资源的不足和分散情况。在中国,互联网医院的发展也越来越受到重视,互联网医院牌照的申请流程和需要的资料也成为了关注的焦点。 一、互…

SpringCloud 中各微服务使用 springcloud-config 获取配置文件时,配置信息无法实时刷新

文章目录 1、引入actuator监控2、修改 yml3、添加注解 RefreshScope4、业务操作5、发送通知,即可生效6、思考 使用 springcloud-config 作为 服务配置 管理时, 当对 git 上的配置进行修改后, 各微服务客户端 配置无法 实时刷新,需…

【Flutter】Flutter 切换语言 当前页面不刷新

文章目录 一、前言二、Flutter 多语言支持的基础知识三、如何在 Flutter 中设置语言四、如何在 Flutter 中切换语言五、代码示例六、完整代码七、总结 一、前言 大家好,今天我们要探讨的主题是如何在 Flutter 中切换语言,而不需要刷新当前页面。这是一个…

vue-element-admin - 最新完美解决项目是英文的问题,将英文变成中文的汉化处理详细教程(克隆完项目后不是中文的解决方法)

前言 网上的教程(并且都是好几年前的了)克隆运行后界面文字全都是英文的,如果您想要中文汉语版本请使用本文的方案。 本文 解决了克隆运行 vue-element-admin 项目后,默认是英文的问题!将语言设置为中文的详细教程! 官方文档说的很晦涩,您可以按照本教程步骤进行操作即…

log4j配置说明

目录&#xff1a; 1、 引入jar包使用 2、 使用 3、 配置文件 4、 配置 5、 说明 说明&#xff1a;2015年9月&#xff0c;Apache软件基金业宣布&#xff0c;Log4j不在维护&#xff0c;建议所有相关项目升级到Log4j2。 1.引入jar包使用 <dependency><groupI…

vscode 调试

目录 准备 GDB 调试方法 问题 准备 然后点击 文件-打开文件夹&#xff0c;找到创建的代码路径&#xff0c;确定后&#xff0c;在左侧的资源管理器可以看到代码文件。 第一次运行需要安装 c 的扩展&#xff0c;在扩展页面中&#xff0c;安装 C/C 编译注意一定要加上 -g 指令…

SpringBoot项目配置方式及优先级

说明&#xff1a;SpringBoot支持以下五种方式配置方式&#xff0c;例如将项目的Tomcat端口从8080&#xff0c;更改为9000&#xff0c;可以使用如下方式配置 【方式一】命令行参数 在启动窗口&#xff0c;鼠标右键&#xff0c;选择“Edit Configurations”&#xff0c;在弹出来…

开会糟透了?试试无声会议吧

引言 无声会议(Silent Meeting) 是一种已被成功实践但却鲜有公开资料的开会方法&#xff0c;本文会探寻下它的有趣历史&#xff0c;并介绍如何通过它的小小改变让会议变得不再糟糕。 文档是无声会议的核心基础&#xff0c;本文会引出 Coda 和 Mojidoc(妙记多) 这两款让你的会…