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

相关推荐
music&movie1 分钟前
多模态工程师面试--准备
人工智能
_OP_CHEN4 分钟前
算法基础篇:(七)基础算法之二分算法 —— 从 “猜数字” 到 “解难题” 的高效思维
c++·算法·蓝桥杯·二分查找·acm·二分答案·二分算法
一匹电信狗8 分钟前
【C++11】Lambda表达式+新的类功能
服务器·c++·算法·leetcode·小程序·stl·visual studio
在等晚安么11 分钟前
力扣面试150题打卡
算法·leetcode·面试
机器之心24 分钟前
GPT-5.1发布,OpenAI开始拼情商
人工智能·openai
YangYang9YangYan34 分钟前
高职单招与统招比较及职业发展指南
大数据·人工智能·数据分析
AI科技星35 分钟前
宇宙膨胀速度的光速极限:基于张祥前统一场论的第一性原理推导与观测验证
数据结构·人工智能·经验分享·python·算法·计算机视觉
Mintopia38 分钟前
🚀 共绩算力:3分钟拥有自己的图像优化服务-CodeFormer:先进的图像算法优化、修复马赛克、提升图片清晰度等
前端·人工智能·ai编程
EXtreme3541 分钟前
C语言指针深度剖析(2):从“数组名陷阱”到“二级指针操控”的进阶指南
c语言·开发语言·算法
南山安1 小时前
🚀 从“Hulk”扩展开发实战,聊聊我找到的“Vibe Coding”最佳姿势
人工智能·设计