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

视觉SLAM14精讲——相机与图像3.3

视觉SLAM14精讲

  1. 三维空间刚体运动1.0
  2. 三维空间刚体运动1.1
  3. 三维空间刚体运动1.2
  4. 李群与李代数2.1
  5. 相机与图像3.1
  6. 相机与图像3.2

视觉SLAM14精讲——相机与图像3.3

  • 视觉SLAM14精讲
  • 相机投影流程
  • 双目相机模型

相机投影流程

至此,有关相机三维刚体变换的所有因素已经汇集。书中对完整的投影过程做了总结。其中主要是将相机投影到世界坐标系。这里我们更进一步,以相机投影到另一个相机为目标,完整推理一遍其中的数学过程,加深对空间的理解。

请添加图片描述

完整的投影流程如下:
p 2 d l ⇌ K l K l − 1 1 Z l P d i s t o r t e d l ⇌ d i s t o r t u n d i s t o r t 1 Z l P 3 d l ⇌ 1 Z l × Z l P 3 d l ⇌ T − 1 ⋅ T ⋅ P 3 d r . . . p^l_{2d} \xrightleftharpoons[K_l]{K_l^{-1}} \frac{1}{Z^l} P^l_{distorted} \xrightleftharpoons[distort]{undistort} \frac{1}{Z^l} P^l_{3d} \xrightleftharpoons[\frac{1}{Z^l}]{\times Z^l} P^l_{3d} \xrightleftharpoons[ T^{-1} \cdot ]{T \cdot } P^r_{3d} \quad ... p2dlKl1 KlZl1Pdistortedlundistort distortZl1P3dl×Zl Zl1P3dlT T1P3dr...

上式中,左右相机记为上标 l l l r r r Z Z Z是该点图像坐标对应的深度值。 K K K是内参。 T T T是变换, 等价于左乘旋转矩阵加平移矩阵 R ⋅ ( ⋅ ) + t R \cdot (\cdot) + t R()+t p p p是2D像素点, P P P是3D点云。

要点:

  • 这个式子右侧被省略了。以左乘 T T T为对称轴,右侧和左侧是对称的操作,因此这个式子只需要记忆一半。
  • 左右的深度值是带下标的,因为左右看到物体的距离不是等价的。
  • 左右的内参也分别带下标。 即便左右目是型号一致的两个相机,内参和畸变参数也会不同。
  • 如果上式描述了随时间变化位姿的相机,则左右两侧 K K K D D D等价。
  • 如果你考虑过这个模型, 你会发现他其实可以是双目相机深度的左右转换。 T T T即外参。

当讨论外参的时候,指的就是 T T T或成对的 R , t R, t R,t。一些工程项目中,可能只需要其中一两个参数,但是项目人员仍然将其称为外参。你只需要知道他的本质是外参中的一部分。此外,一定有两个标定的目标出现在讨论话题内, 无论是两个传感器,还是世界坐标系相对一个传感器,外参一定形容的是两个对象之间的空间变换关系。经常有人跟我要外参,而不说明外参所指的另一个对象是什么,让人一头雾水。

双目相机模型

双目相机通过块匹配进行视差估计,然后通过下式计算深度:
d e p t h = f o c u s ∗ b a s e l i n e d i s p a r i t y depth = \frac{focus * baseline}{disparity} depth=disparityfocusbaseline
式中, d i s p r a i t y dispraity dispraity是视觉计算获得的视差,与彩色图像的分辨率一一对应。OpenCV中有块匹配的具体算法实现,常用的传统算法SGBM。通过构建sgbm对象进行视差的计算。

		cv::StereoSGBM sgbm;  sgbm.preFilterCap = 63;  int SADWindowSize=11;   int cn = 1;  sgbm.SADWindowSize = SADWindowSize > 0 ? SADWindowSize : 3;  sgbm.P1 = 4*cn*sgbm.SADWindowSize*sgbm.SADWindowSize;  sgbm.P2 = 32*cn*sgbm.SADWindowSize*sgbm.SADWindowSize;  sgbm.minDisparity = 0;  sgbm.numberOfDisparities = 32;  sgbm.uniquenessRatio = 10;  sgbm.speckleWindowSize = 100;  sgbm.speckleRange = 32;  sgbm.disp12MaxDiff = 1;  sgbm(left , right , left_disp_);  sgbm(right, left  , right_disp_); 

该算法对cpu计算量的压力很大,因此建议降采样计算。然而这种方案不能应对纹理缺乏的场景,有厂商,例如intel,会采用红外结构光发射器。通过红外摄像头对缺乏纹理区域的斑点进行匹配,然后生成深度。然后在通过文章开头讲的外参变换过程,将两个红外摄像头产生的深度数据投影到彩色摄像头上。配合彩色摄像头的颜色,此时深度就能够进行立体建模。

相关文章:

视觉SLAM14精讲——相机与图像3.3

视觉SLAM14精讲 三维空间刚体运动1.0三维空间刚体运动1.1三维空间刚体运动1.2李群与李代数2.1相机与图像3.1相机与图像3.2 视觉SLAM14精讲——相机与图像3.3 视觉SLAM14精讲相机投影流程双目相机模型 相机投影流程 至此,有关相机三维刚体变换的所有因素已经汇集。…...

【路径规划】基于粒子群结合遗传算法实现机器人栅格地图路径规划

研究方法: 基于粒子群优化算法结合遗传算法的机器人栅格地图路径规划是一种智能算法的应用。它将粒子群优化算法和遗传算法相结合,以寻找最优路径规划解决方案。 研究路线: 理论研究:了解粒子群优化算法和遗传算法的基本原理,并掌握相关的路径规划理论知识。 算法设计:…...

内容安全复习 9 - 身份认证系统攻击与防御

文章目录 基于生物特征的身份认证系统概述基于生物特征的身份认证 人脸活体检测检测方法未解决问题 基于生物特征的身份认证系统概述 作用:判别用户的身份、保障信息系统安全。 是识别操作者身份的过程,要保证其**物理身份(现实&#xff0…...

Python-gui开发之Pycharm+pyside6/Pyqt6环境搭建

Python-gui开发之Pycharm+pyside6/Pyqt6环境搭建 软件版本一、软件安装1、Python安装2、Pycharm安装3、pyside6或pyqt6安装①安装pyside6②安装PyQt6和pyqt6-tools二、Pycharm项目配置1、插件安装2、新建项目以及环境配置3、包管理安装三、在Pycharm中配置PySide61、pyside6 Qt…...

大数据开发语言Scala入门 ,如何入门?

Ai文章推荐 1 作为程序员,开发用过最好用的AI工具有哪些? 2 Github Copilot正版的激活成功,终于可以chat了 3 idea,pycharm等的ai assistant已成功激活 4 新手如何拿捏 Github Copilot AI助手,帮助你提高写代码效率 5 Jetbrains的…...

【人机交互 复习】第1章 人机交互概述

人机交互的知识点碎,而且都是文字,过一遍脑子里什么都留不下,但是背时间已经来不及了,最好还是找题要题感吧,加深印象才是做对文科的关键 一、概念 1.人机交互(Human-Computer Interaction,HCI)&#xff1…...

HCIP-HarmonyOS Device Developer 课程大纲

一:系统及应用场景介绍 1 -(3 课时) - HarmonyOS 系统介绍;HarmonyOs 定义;HarmonyOS 特征; - 统一 OS,弹性部署;硬件互助,资源共享;一次开发,多…...

蓝桥杯 经典算法题 查找两个总和为特定值的索引

题目: 给定一个数组,找到两个总和为特定值的索引。 例如给定数组 [1, 2, 3, -2, 5, 7],给定总和 7,则返回索引 [1, 4]。 若有多组符合情况则输出索引对中小索引最小的一组。 题解: 本题可以通过暴力枚举,枚举每两…...

Java | Leetcode Java题解之第169题多数元素

题目: 题解: class Solution {public int majorityElement(int[] nums) {int count 0;Integer candidate null;for (int num : nums) {if (count 0) {candidate num;}count (num candidate) ? 1 : -1;}return candidate;} }...

十大机器学习算法深入浅出

本栏目涉及对于回归算法、聚类算法、决策树、随机森林、神经网络、贝叶斯算法、支持向量机等十大机器学习算法的笔记 下面是笔记大纲,具体内容可查看**“十大机器学习算法深入浅出”**专栏,内容持续更新,欢迎订阅专栏和专注我! 1…...

【论文笔记】Parameter-Effificient Transfer Learning for NLP

题目:Parameter-Effificient Transfer Learning for NLP 阅读 文章目录 0.摘要1.引言2 Adapter tuning for NLP3 实验3.1 参数/性能平衡3.2 讨论 4.相关工作 0.摘要 克服微调训练不高效的问题,增加一些adapter模块,思想就是固定原始的网络中的参数&…...

Qt异常处理

初步警告:异常安全功能不完整!一般情况下应该可以工作,但类仍然可能泄漏甚至崩溃。 Qt本身不会抛出异常。而是使用错误码, 但是C可能会抛出异常。此外,有些类有用户可见的错误消息,例如QIODevice::errorString()或QSqlQuery::lastError()。这…...

【ElasticSearch】ElasticSearch实战

初步检索 检索 ES 信息 1)、GET /_cat/nodes:查看所有节点 127.0.0.1 44 83 1 0.01 0.01 0.00 dilm * 1b06a843b8e3 *代表主节点 2)、GET /_cat/health:查看健康状况 1718265331 07:55:31 elasticsearch yellow 1 1 4 4 0 0…...

48-3 内网渗透 - 令牌操纵

访问令牌操纵 Windows 操作系统的访问控制模型是其安全性的重要组成部分,主要由访问令牌(Access Token)和安全描述符(Security Descriptor)构成。访问令牌是访问者持有的,而安全描述符则由被访问对象持有。通过对比访问令牌和安全描述符的内容,Windows 可以判断访问者是…...

架构师之 Kafka 核心概念入门

Kafka 核心概念 作为架构师,理解 Kafka 的核心概念至关重要。这些概念是构建高效、可靠的 Kafka 系统的基础。 以下是需要掌握的 Kafka 核心概念及其详细说明: 1. Topic 定义:Topic 是 Kafka 中用于存储和分类消息的逻辑命名空间。每个 Topic 代表一类数据流, 例如日志、…...

Redis通用命令详解

文章目录 一、Redis概述1.1 KEYS:查看符合模板的所有 key1.2 DEL:删除一个指定的 key1.3 EXISTS:判断 key 是否存在1.4 EXPIRE:给一个 key 设置有效期,有效期到期时该 key 会被自动删除1.5 TTL:查看一个 ke…...

物联网设备安装相关知识整理

拓扑图 对于ADAM-4150先接设备的整体的供电。 ADAM-4150就涉及到几个电子元器件的连接,一个是485-232的转换器,一个是将RS-232转换为USB的转接口,因为现在的计算机很多都去掉了RS-232接口而使用USB接口。 4150右侧有个拨码,分别两…...

React实现H5手势密码

监测应用进入前后台 在JavaScript中,监听H5页面是否在前台或后台运行,主要依赖于Page Visibility API。这个API在大多数现代浏览器中都是支持的,包括苹果的Safari和谷歌的Chrome(也就基本覆盖了Android和iOS平台)。下…...

[leetcode hot 150]第十五题,三数之和

题目: 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复…...

视频AI分析定时任务思路解析

序言: 最近项目中用到视频ai分析,由于sdk涉及保密,不便透露,仅对定时任务分析的思路作出分享,仅供参考。 1、定时任务 由于ai服务器的性能上限,只能同时对64个rtsp流分析一种算法,或者对8个rts…...

HTML 列表、表格、表单

1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...