当前位置: 首页 > article >正文

ORB-SLAM2源码学习: Frame.cc: cv::Mat Frame::UnprojectStereo将某个特征点反投影到三维世界坐标系中

前言

这个函数是在跟踪线程中更新上一帧的函数中被调用。

1.函数声明

cv::Mat Frame::UnprojectStereo(const int &i)

2.函数定义 

1.获取这个特征点的深度值。

const float z = mvDepth[i];

深度值由双目或 RGB-D 传感器获取。

在双目情况下,这个深度来自视差ComputeStereoMatches

在RGB-D情况下,这个深度来自深度图对应像素的测量。

2.只有在深度值满足大于0的条件下才能进行下一步,否则直接返回一个空矩阵。

if(z>0)
    {
        ....
    }
else
    return cv::Mat();

3.获取矫正后的特征点的像素坐标。

const float u = mvKeysUn[i].pt.x;
const float v = mvKeysUn[i].pt.y;

 4.将当前像素坐标反投影到相机坐标系下。

const float x = (u - cx) * z * invfx;
const float y = (v - cy) * z * invfy;
cv::Mat x3Dc = (cv::Mat_<float>(3,1) << x, y, z);

反投影公式:

5.返回到世界坐标系下。

return mRwc * x3Dc + mOw;

mRwc 表示从相机坐标系到世界坐标系的旋转矩阵。

mOw 表示相机在世界坐标系下的平移(通常是世界坐标下相机光心的位置)。

结束语 

以上就是我学习到的内容,如果对您有帮助请多多支持我,如果哪里有问题欢迎大家在评论区积极讨论,我看到会及时回复。


http://www.kler.cn/a/507931.html

相关文章:

  • Redis 性能优化:多维度技术解析与实战策略
  • 爬虫基础学习
  • C#-方法(函数)
  • 如何在vue中渲染markdown内容?
  • 【Elasticsearch】全文搜索与相关性排序
  • AIGC时代:如何快速搞定Spring Boot+Vue全栈开发
  • “云计算+中职”:VR虚拟仿真实训室的发展前景
  • VS2022——WPF初始化和控件Nmae虚假报错
  • 在 JIRA 中利用仪表盘功能生成 Bug 相关图表的手册
  • 无人机(Unmanned Aerial Vehicle, UAV)路径规划介绍
  • Qotom Q10922H6 N100多网口无风扇迷你电脑2个10G和4个2.5G网口
  • Android SystemUI——NavigationBar导航栏(七)
  • 39.【4】CTFHUB web sql 布尔注入
  • 客户案例:致远OA与携程商旅集成方案
  • python之二维几何学习笔记
  • 简单介绍JSONStream的使用
  • Gateway与WebFlux的整合
  • 1.3变革之力:Transformer 如何重塑深度学习的未来
  • 精选算法合集
  • 快慢指针问题
  • 【2024年华为OD机试】(B卷,100分)- 比赛 (Java JS PythonC/C++)
  • 隧道IP广播与紧急电话系统:提升隧道安全的关键技术
  • CanTp 笔记
  • 【微信小程序】5|我的页面 | 我的咖啡店-综合实训
  • 【PowerQuery专栏】PowerQuery 函数之CSV文件处理函数
  • 手机上做笔记的APP工具?有哪些好用的记笔记APP