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

【机器人-深度估计】双目深度估计原理解析

文章目录

    • 一、基本原理
    • 二、主要处理流程
      • 2.1. 匹配代价(Matching Cost)
        • (1)常见匹配代价函数
          • 1. 绝对差(SAD,Sum of Absolute Differences)
          • 2. 平方差(SSD,Sum of Squared Differences)
          • 3. 归一化互相关(NCC,Normalized Cross-Correlation)
          • 4. Census 变换
        • (2)匹配代价函数对比
      • 2.2. 代价体(Cost Volume)
      • 2.3. 代价聚合(Cost Aggregation)
      • 2.4. 视差计算(Disparity Computation)
      • 2.5. 视差优化(Disparity Refinement)
      • 2.6. 深度恢复(Depth Recovery)

一、基本原理

两个相机拍摄同一场景,形成左图 I L I_L IL 和右图 I R I_R IR,若场景中某点 P P P 在左图和右图的投影点分别为 p L p_L pL p R p_R pR,它们之间的水平距离就是视差 d d d

视差计算公式:

d = x L − x R d = x_L - x_R d=xLxR

深度恢复公式:

Z = f ⋅ B d Z = \frac{f \cdot B}{d} Z=dfB

其中:

  • Z Z Z:深度值
  • f f f:相机焦距
  • B B B:双目基线长度(相机间距)
  • d d d:视差

二、主要处理流程

2.1. 匹配代价(Matching Cost)

(1)常见匹配代价函数
1. 绝对差(SAD,Sum of Absolute Differences)

最简单直接的度量方式,对亮度差进行绝对值计算:

C SAD ( x , y , d ) = ∣ I L ( x , y ) − I R ( x − d , y ) ∣ C_{\text{SAD}}(x, y, d) = |I_L(x, y) - I_R(x - d, y)| CSAD(x,y,d)=IL(x,y)IR(xd,y)

窗口版本:

C SAD ( x , y , d ) = ∑ ( u , v ) ∈ W ∣ I L ( x + u , y + v ) − I R ( x − d + u , y + v ) ∣ C_{\text{SAD}}(x, y, d) = \sum_{(u,v) \in \mathcal{W}} |I_L(x+u, y+v) - I_R(x - d + u, y + v)| CSAD(x,y,d)=(u,v)WIL(x+u,y+v)IR(xd+u,y+v)

优点: 快速、简单
缺点: 对光照变化敏感,窗口大小固定易模糊边界


2. 平方差(SSD,Sum of Squared Differences)

对亮度差平方,加大离群像素的惩罚:

C SSD ( x , y , d ) = ( I L ( x , y ) − I R ( x − d , y ) ) 2 C_{\text{SSD}}(x, y, d) = (I_L(x, y) - I_R(x - d, y))^2 CSSD(x,y,d)=(IL(x,y)IR(xd,y))2

窗口版本:

C SSD ( x , y , d ) = ∑ ( u , v ) ∈ W ( I L ( x + u , y + v ) − I R ( x − d + u , y + v ) ) 2 C_{\text{SSD}}(x, y, d) = \sum_{(u,v) \in \mathcal{W}} (I_L(x+u, y+v) - I_R(x - d + u, y + v))^2 CSSD(x,y,d)=(u,v)W(IL(x+u,y+v)IR(xd+u,y+v))2

优点: 更平滑,惩罚大误差
缺点: 对噪声更敏感,不鲁棒


3. 归一化互相关(NCC,Normalized Cross-Correlation)

考虑局部均值和标准差,抑制光照变化:

C NCC ( x , y , d ) = ∑ ( u , v ) ∈ W ( I L ( u , v ) − μ L ) ( I R ( u − d , v ) − μ R ) σ L ⋅ σ R C_{\text{NCC}}(x, y, d) = \frac{\sum_{(u,v) \in \mathcal{W}} (I_L(u,v) - \mu_L)(I_R(u - d,v) - \mu_R)}{\sigma_L \cdot \sigma_R} CNCC(x,y,d)=σLσR(u,v)W(IL(u,v)μL)(IR(ud,v)μR)

其中:

  • μ L , μ R \mu_L, \mu_R μL,μR 是窗口内左/右图的均值
  • σ L , σ R \sigma_L, \sigma_R σL,σR 是窗口内的标准差

优点: 对亮度变化鲁棒
缺点: 计算复杂,适合浮点图像


4. Census 变换

将图像转换为局部结构描述符,再计算汉明距离(Hamming distance):

  1. 对每个像素构造一个比中心像素大的/小的位图(binary pattern):

    Census ( x , y ) = ⋃ ( u , v ) ∈ W [ I ( x + u , y + v ) < I ( x , y ) ] \text{Census}(x,y) = \bigcup_{(u,v) \in \mathcal{W}} [I(x+u, y+v) < I(x, y)] Census(x,y)=(u,v)W[I(x+u,y+v)<I(x,y)]

  2. 匹配代价为二进制描述符间的汉明距离:

    C Census ( x , y , d ) = Hamming ( C L ( x , y ) , C R ( x − d , y ) ) C_{\text{Census}}(x, y, d) = \text{Hamming}(C_L(x,y), C_R(x-d,y)) CCensus(x,y,d)=Hamming(CL(x,y),CR(xd,y))

优点: 对光照变化极强的鲁棒性
缺点: 描述符计算稍复杂,且损失精度信息


(2)匹配代价函数对比
场景建议代价函数
计算资源少SAD / SSD
光照变化明显(室外)Census / Rank
浮点图像 + 精度要求高NCC
深度学习方法使用特征卷积构造代价体

2.2. 代价体(Cost Volume)

代价体用于存储每个像素在不同视差假设下的匹配代价。

假设最大视差为 D D D,对于左图中每个像素 ( x , y ) (x, y) (x,y),构建一个代价向量:

C ( x , y , d ) , d ∈ [ 0 , D ] C(x, y, d), \quad d \in [0, D] C(x,y,d),d[0,D]

每个 C ( x , y , d ) C(x, y, d) C(x,y,d) 表示左图 ( x , y ) (x, y) (x,y) 与右图 ( x − d , y ) (x - d, y) (xd,y) 的匹配代价。

2.3. 代价聚合(Cost Aggregation)

从像素级匹配代价到稠密视差图的关键处理步骤,其核心目标是通过整合局部邻域或全局上下文的信息,抑制噪声并增强匹配的准确性。

常见方法:

  • 窗口聚合(Box Filter):简单快速,但容易在物体边界模糊
  • 引导滤波(Guided Filter):保边性强
  • Cross-Based Cost Aggregation:自适应支持区域,提高边界处理能力

2.4. 视差计算(Disparity Computation)

最常见的是WTA策略(Winner Takes All),对每个像素选择代价最小的视差:

d ( x , y ) = arg ⁡ min ⁡ d C ( x , y , d ) d(x, y) = \arg\min_d C(x, y, d) d(x,y)=argdminC(x,y,d)

2.5. 视差优化(Disparity Refinement)

包括:

  • 左右一致性检测(Left-Right Consistency Check)

    • 计算左图→右图 和 右图→左图 的视差,剔除不一致点
  • 空洞填补(Hole Filling)

  • 亚像素插值(Subpixel Enhancement)

  • 中值滤波、双边滤波等图像处理技术提升平滑性和边界精度

2.6. 深度恢复(Depth Recovery)

根据视差和相机参数,使用公式:

Z ( x , y ) = f ⋅ B d ( x , y ) Z(x, y) = \frac{f \cdot B}{d(x, y)} Z(x,y)=d(x,y)fB

即可还原每个像素的深度值。


相关文章:

  • 汽车制造领域:EtherCAT转Profinet网关案例全面解析
  • Redis精简总结|一主二从哨兵模式(工作机制)|集群模式|缓存的穿透雪崩击穿
  • day040-搭建lnmp服务与数据库迁移
  • C#串口通讯实战指南
  • JavaScript操作DOM对象
  • solidity+Remix本地化部署和安装教程
  • MATLAB GUI界面设计 第三章——仪器组件
  • ISO 26262-11 半导体功能安全学习(二)
  • C#采集电脑硬件(CPU、GPU、硬盘、内存等)温度和使用状况
  • 技术解读|MatrixOne Intelligence模型解析原理及微调实践
  • 华为云 Flexus+DeepSeek 征文|文案魔盒・Emoji 菌:基于华为云 CCE 集群 Dify 大模型,创意文案智能生成助手
  • 企业网盘和个人网盘的区别?
  • 数组题解——​最大子数组和​【LeetCode】(更新版)
  • 基于ASP4644多通道降压技术在电力监测系统中集成应用与发展前景
  • github常用插件
  • 6.23_JAVA_RabbitMQ
  • 使用AI开发招聘网站(100天AI编程实验)
  • 设计模式精讲 Day 12:代理模式(Proxy Pattern)
  • CSS 中aspect - ratio属性的用途及应用
  • 酒店住宿自助入住系统——店铺自动运营—仙盟创梦IDE
  • 龙岗网站多少钱/seo商城
  • 深圳电商网站开发/seo优化自动点击软件
  • 西安网站建设价格/微信小程序怎么开通
  • c2b平台都有哪些网站/seo高级教程
  • 卖文章的网站源码/站长工具高清无吗
  • 网站首页空白 wordpress/游戏代理平台