【状态估计】深度传感器与深度估计算法(1/3)
深度传感器与深度估计算法
深度传感器概念
获得空间中目标位置或距离的传感器,按接收的媒介波来源可分为主动式和被动式两大范畴,主动式包括激光雷达、雷达、超声波传感器等,被动式主要为单目、多目相机等,同时两大类可组合为混合类型传感器,深度(即距离)测量机制可分为基于(被动)视差原理的机制和(主动)ToF(Time Of Flight)机制两种,使用结构光的RGBD相机,尽管其媒介波源于自身,但其工作原理实为双目视差。市面上已有面向室内应用的RGBD相机、面向自动驾驶应用的激光雷达+相机融合一体的传感器,其既有“被动测量深度”的单目或多目相机,又有“主动”测量深度的器件。由于环境信息规律的统一、不同种的媒介波的属性的统一,各式各样传感器的模型可再抽象为统一的深度传感器模型,进一步便引出了深度估计问题。
深度估计问题最早起源于双目立体视觉,后面扩展到多视图立体视觉并得到了详尽的研究可供借鉴,现在我们推广到一般的深度估计问题。
问题
自动驾驶应用为估计空间状态而使用多种具体的传感器,数据的具体处理方式不同,而此类硬件可被统一抽象为深度传感器,软件估计算法是否可以据此完成统一抽象?
首先总结问题的一般形式:已知传感器数据参考帧的位姿参数,帧上一个兴趣点的深度值和深度值方差的先验,提供帧序列和其位姿数据,通过一定方法获取相应同名点,估计该点的深度及其方差。此处深度指参考帧的坐标原点到空间点的距离。此问题需要设定深度分布的概率模型,然后给出一些参考思路。
深度传感器的概率模型
常用的概率模型有两种,第一种是高斯分布模型,较简单而易求解;第二种是高斯分布加均匀分布的混合分布,对现实传感器的属性描述更真实。高斯分布一般作为理想环境与传感器理想工作条件下传感器测量输出的分布,均匀分布则是对传感器运行异常或环境异常如遮挡问题等条件下假设的测量分布,两种分布的结合更能逼近描述真实世界。
深度求解的具体方法因特定传感器而异,下面首先以多视图图像估计深度为例给出具体估计方法,然后重点关注第二种概率模型的一般估计问题。
高斯分布模型的求解
深度期望估计
法I Triangulation求空间点坐标得出深度
x i x_{i} xi为图像点齐次坐标, P i P_i Pi为投影矩阵, X X X为空间点齐次坐标,投影方程如下,
x i = P i X x_i=P_iX xi=PiX
已知2帧以上的投影矩阵 P i P_i Pi和同名点,i=1,2……,求同名点的空间点估计X。
设 P j T P^{jT} PjT是 P i P_i Pi的第j行,则有
y p 3 T X − p 2 T X = 0 yp^{3T}X-p^{2T}X=0 yp3TX−p2TX=0
x p 3 T X − p 1 T X = 0 xp^{3T}X-p^{1T}X=0 xp3TX−p1TX=0
x p 2 T X − y p 1 T X = 0 xp^{2T}X-yp^{1T}X=0 xp2TX−yp1TX=0
第三行与前两行线性相关,利用多帧构造方程,
A X = 0 AX=0 AX=0
A的第i块为,
A i = [ y p 3 T − p 2 T x p 3 T − p 1 T ] A_i=\begin{bmatrix} yp^{3T}-p^{2T}\\xp^{3T}-p^{1T} \end{bmatrix} \quad Ai=[yp3T−p2Txp3T−p1T]
采用SVD求之。帧间运动不明显时易出现数值结果不稳定问题,实际测试中发现空间点坐标z经常为负数(以参考帧相机坐标系为参考坐标系,z应为正值),工程实现不考虑采用此法。
法II 射线法
设参考帧图像点对应一空间点的深度为 d r d_r dr,当前帧同一点的深度为 d c d_c dc, f r f_r fr, f c f_c fc分为参考帧、当前帧光心到空间点的射线单位矢量在相应帧坐标系下的表达,则有
d r f r = d c ( R r c f c ) + t r c d_rf_r=d_c(R_{rc}f_c)+t_{rc} drfr=dc(Rrcfc)+trc
令 f 2 = R r c f c f_2=R_{rc}f_c f2=Rrcfc, t = t r c t=t_{rc} t=trc,可构造如下方程,
[ f r T f r − f r T f 2 f 2 T f r − f 2 T f 2 ] [ d r d c ] = [ f r T t f 2 T t ] \begin{bmatrix} f^T_rf_r&-f^T_rf_2\\f^T_2f_r&-f^T_2f_2 \end{bmatrix} \quad\begin{bmatrix}d_r\\d_c\end{bmatrix}\quad=\begin{bmatrix}f^T_rt\\f^T_2t\end{bmatrix}\quad [frTfrf2Tfr−frTf2−f2Tf2][drdc]=[frTtf2Tt]
克莱默法则求解 d r d_r dr, d c d_c dc,获取参考帧下的光心到空间点下的矢量的两个表达式,
x m = d r f r x_m=d_rf_r xm=drfr
x n = d c f 2 + t x_n=d_cf_2+t xn=dcf2+t
取二者平均求结果模长即为新观测到的深度。
深度方差估计
考虑深度的不确定性,针对图像数据可考虑光度不确定性或几何不确定性,本文暂时只考虑几何关系造成的不确定性,假设角点观测误差为1个像素,以参考帧坐标系为参考系,设参考帧光心到当前帧光心的矢量为 t t t,参考帧光心到目标点的矢量为 p p p,当前帧光心到目标点的矢量为 a a a,
α = a r c c o s ( p ∗ t ∣ ∣ p ∣ ∣ ∗ ∣ ∣ t ∣ ∣ ) \alpha=arccos(\frac{p*t}{||p||*||t||}) α=arccos(∣∣p∣∣∗∣∣t∣∣p∗t)
β = a r c c o s ( a ∗ ( − t ) ∣ ∣ a ∣ ∣ ∗ ∣ ∣ t ∣ ∣ ) \beta=arccos(\frac{a*(-t)}{||a||*||t||}) β=arccos(∣∣a∣∣∗∣∣t∣∣a∗(−t))
β ′ = β + a r c t a n ( 1 / f ) \beta^\prime=\beta+arctan(1/f) β′=β+arctan(1/f)
γ = π − α − β ′ \gamma=\pi-\alpha-\beta^\prime γ=π−α−β′
∣ ∣ p ′ ∣ ∣ = ∣ ∣ t ∣ ∣ s i n β ′ s i n γ ||p^\prime||=||t||\frac{sin\beta^\prime}{sin\gamma} ∣∣p′∣∣=∣∣t∣∣sinγsinβ′
σ o b s = ∣ ∣ p ∣ ∣ − ∣ ∣ p ′ ∣ ∣ \sigma_{obs}=||p||-||p^\prime|| σobs=∣∣p∣∣−∣∣p′∣∣
σ o b s 2 = σ o b s ∗ σ o b s \sigma_{obs}^2=\sigma_{obs}*\sigma_{obs} σobs2=σobs∗σobs
相关文章:
【状态估计】深度传感器与深度估计算法(1/3)
深度传感器与深度估计算法 深度传感器概念 获得空间中目标位置或距离的传感器,按接收的媒介波来源可分为主动式和被动式两大范畴,主动式包括激光雷达、雷达、超声波传感器等,被动式主要为单目、多目相机等,同时两大类可组合为混…...
ClickHouse从入门到精通(高级)
第1章 Explain查看执行计划 第2章 建表优化 第3章 ClickHouse语法优化规则 第4章 查询优化 第5章 数据一致性(重点) 第6章 物化视图 第7章 MaterializeMySQL引擎 第8章 常见问题排查...
什么是Docker的容器编排工具,它们之间有何不同?
随着Docker容器技术的广泛应用,容器编排工具成为了自动化部署、扩展和管理容器化应用程序的关键组件。这些工具提供了一种抽象层,帮助开发者和管理员更高效地管理大量的Docker容器,确保它们在不同的主机和环境中能够可靠地运行。目前…...
qml之Control类型布局讲解,padding属性和Inset属性细讲
1、Control布局图 2、如何理解? *padding和*Inset参数如何理解呢? //main.qml import QtQuick 2.0 import QtQuick.Controls 2.12 import QtQuick.Layouts 1.12 import QtQuick.Controls 1.4 import QtQml 2.12ApplicationWindow {id: windowvisible: …...
【Jvm】性能调优(拓展)Jprofiler如何监控和解决死锁、内存泄露问题
文章目录 Jprofiler简介1.安装及IDEA集成Jprofiler2.如何监控并解决死锁3.如何监控及解决内存泄露(重点)4.总结5.后话 Jprofiler简介 Jprofilers是针对Java开发的性能分析工具(免费试用10天), 可以对Java程序的内存,CPU,线程,GC,锁等进行监控和分析, 1.安装及IDEA集成Jprofil…...
运行错误(竞赛遇到的问题)
在代码提交时会遇见这样的错误: 此处运行错误不同于编译错误和答案错误,运行错误是指是由于在代码运行时发生错误,运行错误可能是由于逻辑错误、数据问题、资源问题等原因引起的。这些错误可能导致程序在运行时出现异常、崩溃。 导致不会显示…...
nodename nor servname provided, or not known
异常信息 在 Maven 打包过程中出现的 nodename nor servname provided, or not known 异常通常是由于 Maven 无法解析某个域名,这可能是因为网络问题、DNS 解析失败或者 Maven 配置中指定的仓库地址错误导致的。这个问题通常出现在 Maven 试图从远程仓库下载依赖时 …...
前端vue金额用逗号分隔
实现效果 代码 template部分 <el-input v-model"state.val"></el-input><div>{{ priceFor(state.val) }}</div> js部分 const state reactive({ val: });const priceFor (val)> {if(!val){return }else if(val.length<4){return…...
vulvhub-----Hacker-KID靶机
打靶详细教程 1.网段探测2.端口服务扫描3.目录扫描4.收集信息burp suite抓包 5.dig命令6.XXE漏洞读取.bashrc文件 7.SSTI漏洞8.提权1.查看python是否具备这个能力2.使用python执行exp.py脚本,如果提权成功,靶机则会开放5600端口 1.网段探测 ┌──(root…...
遨博I20协作臂关节逆解组Matlab可视化
AUBO I20协作臂关节逆解组Matlab可视化 前言1、RTB使用注意点2、代码与效果2.1、完整代码2.2、运行效果 总结 前言 注意:请预先配置好Matlab和RTB机器人工具箱环境,本文使用matlab2022b和RTB10.04版本 工作需要,使用matlab实现对六轴机械臂…...
力扣题目训练(15)
2024年2月8日力扣题目训练 2024年2月8日力扣题目训练507. 完美数520. 检测大写字母521. 最长特殊序列 Ⅰ221. 最大正方形237. 删除链表中的节点115. 不同的子序列 2024年2月8日力扣题目训练 2024年2月8日第十五天编程训练,今天主要是进行一些题训练,包括…...
PCB差模辐射是如何产生的
在电路应用中,高频时钟信号往往会采用差分线传输模式,其优点是在提高速率的同时减小功耗和提高抗扰度,因此,差模辐射就成为电路正常工作的结果,是电流流过导体形成的环路所产生,差模辐射模型可以被模拟为一个小环形天线,对于一个面积为A的小环路,载有电流Idm,在远场中…...
车载诊断协议DoIP系列 —— 协议中术语解释和定义
车载诊断协议DoIP系列 —— 协议中术语解释和定义 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,…...
【退役之重学前端】关于在控制台得到undefined的事
在浏览器控制台中,undefined 会时不时地,在我不想看到的地方出现。如果你遇到相同的问题,在这篇博客中你会得到答案。 先来看代码块 function test(){} test()//undefined再看下一个代码块 function test(){return 1; } test()//1再来看一个…...
指数和估计六大问题
1955年英国著名数学家R.A.Rankin在牛津大学出版的数学刊物Quart.J.Math.发表了论文(现 FRS D.R.Heath-Brown为主编),专门讲van der Corput方法产生的指数对理论(1933年E.Phillips提出的精彩理论,好友曲阜师范大学毕业中…...
【软件相关】基于Alist挂载云盘到本地文件资源管理器
文章目录 0 前言1 Alist挂载云盘2 RaiDrive配置3 rclone配置 0 前言 因为最近在研究各种云盘存储影视资源的方法,无意间看到一个教程是利用软件将云盘挂载到本地的资源管理器,这样就能实现类似本地文件操作的方式来操作云盘文件,还是有点意思…...
Java多线程系列——锁
0.引言 在并发编程中,锁是一种重要的同步机制,用于控制对共享资源的访问。Java 提供了多种锁的实现,每种锁都有不同的特性和适用场景。本文将深入介绍 Java 中常见的锁类型,包括内置锁、显式锁、读写锁等,并讨论它们的…...
蓝牙BLE学习-GAP
1.概述 GAP层(Generic access profile-通用访问配置文件)。GAP是对LL层payload(有效数据包)如何进行解析的两种方式的一种,而且也是最简单的一种。GAP简单的对LL payload进行一些规范和定义,因此GAP能实现的…...
算法训练营day28(补), 贪心算法2
//122. 买卖股票的最佳时机 II func maxProfit(prices []int) int { result : 0 //利润总和 for i : 1; i < len(prices); i { if prices[i]-prices[i-1] > 0 { result result (prices[i] - prices[i-1]) } } return result } //55. 跳跃游戏 func canJump(nums []…...
Vue核心基础4:绑定样式、条件渲染、列表渲染
1 绑定样式 【代码】 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>绑定样式</title><s…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
