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

【状态估计】深度传感器与深度估计算法(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 yp3TXp2TX=0

x p 3 T X − p 1 T X = 0 xp^{3T}X-p^{1T}X=0 xp3TXp1TX=0

x p 2 T X − y p 1 T X = 0 xp^{2T}X-yp^{1T}X=0 xp2TXyp1TX=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=[yp3Tp2Txp3Tp1T]
采用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 [frTfrf2TfrfrTf2f2Tf2][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∣∣pt)

β = 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容器,确保它们在不同的主机和环境中能够可靠地运行。目前&#xf…...

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脚本&#xff0c;如果提权成功&#xff0c;靶机则会开放5600端口 1.网段探测 ┌──(root…...

遨博I20协作臂关节逆解组Matlab可视化

AUBO I20协作臂关节逆解组Matlab可视化 前言1、RTB使用注意点2、代码与效果2.1、完整代码2.2、运行效果 总结 前言 注意&#xff1a;请预先配置好Matlab和RTB机器人工具箱环境&#xff0c;本文使用matlab2022b和RTB10.04版本 工作需要&#xff0c;使用matlab实现对六轴机械臂…...

力扣题目训练(15)

2024年2月8日力扣题目训练 2024年2月8日力扣题目训练507. 完美数520. 检测大写字母521. 最长特殊序列 Ⅰ221. 最大正方形237. 删除链表中的节点115. 不同的子序列 2024年2月8日力扣题目训练 2024年2月8日第十五天编程训练&#xff0c;今天主要是进行一些题训练&#xff0c;包括…...

PCB差模辐射是如何产生的

在电路应用中,高频时钟信号往往会采用差分线传输模式,其优点是在提高速率的同时减小功耗和提高抗扰度,因此,差模辐射就成为电路正常工作的结果,是电流流过导体形成的环路所产生,差模辐射模型可以被模拟为一个小环形天线,对于一个面积为A的小环路,载有电流Idm,在远场中…...

车载诊断协议DoIP系列 —— 协议中术语解释和定义

车载诊断协议DoIP系列 —— 协议中术语解释和定义 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,…...

【退役之重学前端】关于在控制台得到undefined的事

在浏览器控制台中&#xff0c;undefined 会时不时地&#xff0c;在我不想看到的地方出现。如果你遇到相同的问题&#xff0c;在这篇博客中你会得到答案。 先来看代码块 function test(){} test()//undefined再看下一个代码块 function test(){return 1; } test()//1再来看一个…...

指数和估计六大问题

1955年英国著名数学家R.A.Rankin在牛津大学出版的数学刊物Quart.J.Math.发表了论文&#xff08;现 FRS D.R.Heath-Brown为主编&#xff09;&#xff0c;专门讲van der Corput方法产生的指数对理论&#xff08;1933年E.Phillips提出的精彩理论&#xff0c;好友曲阜师范大学毕业中…...

【软件相关】基于Alist挂载云盘到本地文件资源管理器

文章目录 0 前言1 Alist挂载云盘2 RaiDrive配置3 rclone配置 0 前言 因为最近在研究各种云盘存储影视资源的方法&#xff0c;无意间看到一个教程是利用软件将云盘挂载到本地的资源管理器&#xff0c;这样就能实现类似本地文件操作的方式来操作云盘文件&#xff0c;还是有点意思…...

Java多线程系列——锁

0.引言 在并发编程中&#xff0c;锁是一种重要的同步机制&#xff0c;用于控制对共享资源的访问。Java 提供了多种锁的实现&#xff0c;每种锁都有不同的特性和适用场景。本文将深入介绍 Java 中常见的锁类型&#xff0c;包括内置锁、显式锁、读写锁等&#xff0c;并讨论它们的…...

蓝牙BLE学习-GAP

1.概述 GAP层&#xff08;Generic access profile-通用访问配置文件&#xff09;。GAP是对LL层payload&#xff08;有效数据包&#xff09;如何进行解析的两种方式的一种&#xff0c;而且也是最简单的一种。GAP简单的对LL payload进行一些规范和定义&#xff0c;因此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…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...