【双目立体匹配】视差的理解及其公式推导

视差概念公式推导

双目立体匹配基础之视差概念
相机成像的模型如下图所示:
P为空间中的点,P1和P2是点P在左右像平面上的成像点,f是焦距,OR和OT是左右相机的光心。由下图可见左右两个相机的光轴是平行的。XR和XT是两个成像点在左右两个像面上距离图像左边缘的距离。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019102210172450.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6L如图

只要把这下面几点说清楚就很简单了
L为像面的长度
关于光轴对称
视差为Xr-Xt
若两个相机已经校正完成即达到极线平行,两条光轴方向也平行。则视差和物体深度的关系式如下:

(1)
在这里插入图片描述
可推导到:
(2)
在这里插入图片描述

证明过程: 已知:

### 双目相机视差立体匹配计算方法 双目相机的视差立体匹配是一种通过分析两幅图像之间的差异来估计三维空间信息的技术。以下是关于其基本原理和实现方法的具体说明: #### 基本原理 双目相机系统通常由两个摄像头组成,分别模拟人类双眼的功能。这两台摄像机从略微不同的位置捕获同一场景的两张图片。由于观察角度的不同,在成像过程中会产生水平方向上的位移,这种现象称为 **视差 (Disparity)**[^1]。 视差与物体到相机的距离呈反比关系:距离越近,视差越大;反之亦然。因此,通过对视差图的计算,可以推导出场景中各点的空间坐标,从而完成三维重建的任务。 --- #### 实现方法概述 ##### 1. 匹配代价计算 为了找到左、右图像中的对应像素点,需要定义一种衡量相似性的指标——即匹配代价函数。常见的匹配代价计算方法包括但不限于以下几种: - 灰度绝对值差(AD) - 灰度绝对值差之和(SAD) - 归一化相关系数(NCC) - 互信息(MI) - Census变换(CT) 这些方法各有优劣,具体选择取决于应用场景以及对噪声鲁棒性和计算效率的要求[^2]。 ##### 2. 成本聚合 单独依靠局部区域内的匹配代价可能会受到噪声干扰或者纹理缺乏的影响,导致误匹配的发生。为此引入了成本聚合的概念,即将当前像素周围的邻域也考虑进来共同决定最终的匹配结果。常用的成本聚合技术有: - Box Filtering(均值滤波) - Bilateral Filter(双边滤波器) - Semi-Global Matching (SGM) 其中 SGM 是目前较为流行的一种全局优化策略,它能够在保持较高精度的同时控制住运算复杂度[^3]。 ##### 3. 视差计算 经过前面几步处理之后得到的是一个初步的视差候选列表,接下来要从中挑选最有可能的真实解出来。这一步骤往往涉及动态规划或者是变分法之类的高级数学工具来进行路径搜索或是能量最小化的求解过程。 最后获得完整的视差地图后,利用三角几何公式即可转换为实际世界里的深度信息。 --- ```python import numpy as np def compute_disparity(left_image, right_image, max_disp=64): height, width = left_image.shape[:2] disparity_map = np.zeros((height, width), dtype=np.float32) for y in range(height): for x in range(width): best_match = None min_cost = float('inf') # Compute cost over possible disparities for d in range(max_disp): if x - d >= 0: cost = abs(int(left_image[y,x]) - int(right_image[y,x-d])) if cost < min_cost: min_cost = cost best_match = d disparity_map[y][x] = best_match return disparity_map ``` 此代码片段展示了一个非常基础版本的视差计算逻辑,仅采用简单的 AD 方法评估每一对潜在对应的像素间的差异程度,并记录下使得误差达到最低的那个偏移量作为该处的有效视差值。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值