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

ORB_SLAM2原理及代码解析:Frame::UnprojectStereo() 函数

1 作用

把当前帧中的第 i 个特征点反投影到世界坐标系(如果有深度信息)。

2 所属位置及代码

(1)声明:include/Frame.h

    // Backprojects a keypoint (if stereo/depth info available) into 3D world coordinates.cv::Mat UnprojectStereo(const int &i);

(2)定义:src/Frame.cc

cv::Mat Frame::UnprojectStereo(const int &i)
{const float z = mvDepth[i];if(z>0){const float u = mvKeysUn[i].pt.x;const float v = mvKeysUn[i].pt.y;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);return mRwc*x3Dc+mOw;}elsereturn cv::Mat();
}

3 原理解析

思路:像素坐标-去畸变-归一化-相机坐标-世界坐标

mvDepth[i]:存储第 i 个特征点的深度;

mvKeysUn[i]:去畸变后的关键点;

(u,v):是图像平面上的像素坐标

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

ORB_SLAM2中在ORB提取特征点时已经“去畸变”,得到的是去畸变后的像素坐标。

3.2 const float x = (u-cx)*z*invfx;
const float y = (v-cy)*z*invfy;

去畸变后的像素坐标转化为相机坐标。

3.3 cv::Mat x3Dc = (cv::Mat_<float>(3,1) << x, y, z);

把反投影(像素坐标-相机坐标)得到的相机坐标系下的三维点X_{c},Y_{c},Z_{c}构造成 OpenCV 的 cv::Mat 矩阵。

3.4 return mRwc*x3Dc+mOw;

输出世界坐标系下的坐标。注意相机初始化是用的是左目的数据。

3.5 公式推导

http://www.dtcms.com/a/430986.html

相关文章:

  • SLAM算法分类对比
  • 碎片笔记|生成模型原理解读:AutoEncoder、GAN 与扩散模型图像生成机制
  • 中文粤语(广州)语音语料库:6219条高质量语音数据助力粤语语音识别与自然语言处理研究
  • Kubernetes HTTPS迁移:Ingress到GatewayAPI实战
  • [Power BI] 矩阵表
  • 陕西省建设厅网站劳保统筹基金网站建设合同需要注意什么
  • 【多线程】——基础篇
  • 多语言网站 自助洛阳兼职网站
  • 【C++实战(61)】C++ 并发编程实战:解锁线程池的奥秘与实现
  • 外贸网站做开关行业的哪个好做网站用什么配置笔记本
  • 极路由 极1s J1S hc5661 刷入OpenWRT并设置同网段子路由
  • 帮传销组织做网站wordpress换域名安装
  • ubuntu 24.04 从 6.8 内核升级 6.11 网卡加载失败问题
  • 如何让网站gzipwordpress 站长
  • SQL——子查询
  • dw做的网站怎么传到网络上去腾度网站建设
  • [创业之路-643]:互联网与移动互联网行业与通信行业的关系
  • Easyx使用(下篇)
  • css`font-variant-numeric: tabular-nums` 用来控制数字的样式。
  • CentOS7二进制安装包方式部署K8S集群之ETCD集群部署
  • Python常用三方模块——Pillow
  • 友情下载网站外贸cms建站
  • 976. 三角形的最大周长
  • 该怎么跟程序员谈做网站自己怎么免费做网站
  • 基于岗位需求的康体项目策划与设计实训室规划
  • 大理做网站哪家好大概多少钱
  • Nest 中使用Swagger自动化API文档生成
  • 融合:迈向 “一台计算机” 的终极架构
  • ai手诊面诊抖音快手微信小程序看广告流量主开源
  • 网页设计制作手机网站网站做了301怎么查看跳转前网站