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

文章目录

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

深度恢复公式:

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

其中:

  • 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(x−d,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)∈W∑∣IL(x+u,y+v)−IR(x−d+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(x−d,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(x−d+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(u−d,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(x−d,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) (x−d,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)f⋅B

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


相关推荐
几道之旅16 小时前
Isaac Sim 5.1 机器人基本操作
机器人·具身智能
Hi2024021717 小时前
如何通过选择正确的畸变模型解决相机标定难题
人工智能·数码相机·计算机视觉·自动驾驶
线束线缆组件品替网18 小时前
Bulgin 防水圆形线缆在严苛环境中的工程实践
人工智能·数码相机·自动化·软件工程·智能电视
jifengzhiling18 小时前
机器人关节模组CR认证全解析
机器人·核心部件中国cr认证
kylezhao201921 小时前
工业 2D 相机与镜头选型详解
数码相机
沫儿笙1 天前
CLOOS克鲁斯焊接机器人混合气节气装置
人工智能·机器人
Deepoch1 天前
从“机械臂”到“农艺手”:Deepoc如何让机器人理解果实的生命语言
人工智能·机器人·采摘机器人·农业机器人·具身模型·deepoc
思绪漂移1 天前
算法调度:场景分析、策略与工程化技术难点——无人机全量感知 vs 机器人定点路由
机器人·无人机·算法调度
才兄说1 天前
机器人租赁服务中的不确定性:客户视角下的支持体验差异
机器人
中达瑞和-高光谱·多光谱1 天前
中达瑞和MAX-G800相机农产品品质检测中的应用
人工智能·数码相机