立体匹配
好的!立体匹配(Stereo Matching)是计算机视觉领域中的一项核心技术,它的主要目标是:根据两张从不同视角(通常是左右水平视角)拍摄的同一场景的图像,计算出图像中每个像素的视差值,从而恢复出场景的三维深度信息。
核心思想与基础(基本原理):
- 双目视觉模型: 基于人类双目视觉的原理。两个相机(模拟左右眼)从不同位置观察同一物体。
- 极线约束: 对于左图中的某个点
P_left,它在右图中的对应点P_right必然位于一条特定的直线上,这条线称为极线。这极大地缩小了搜索对应点的范围。
- 极线约束: 对于左图中的某个点
- 视差: 同一个三维点在左右图像上的投影位置(像素坐标)之间的水平差异称为视差。
- 视差
d = X_left - X_right(假设相机基线是水平的,在Y方向对齐好的前提下)。
- 视差
- 深度与视差的关系: 视差直接反比于该点到相机的距离(深度
Z)。- 公式:
Z = (f * B) / dZ: 点到相机的深度(距离)f: 相机的焦距(像素单位)B: 两个相机之间的基线距离d: 视差(像素单位)
- 关键结论: 视差越大(左右对应点相距越远),物体离相机越近(深度越小)。视差越小(左右对应点相距越近甚至重合),物体离相机越远(深度越大)。
- 公式:
立体匹配算法的关键步骤(流程):
一个典型的立体匹配算法通常包含以下步骤:
- 预处理(可选):
- 图像校正:应用极线校正将原始图像进行变换,使得左右图像中的对应点位于同一水平扫描线上。这简化了匹配搜索范围(只需要在同一行上搜索)。
- 图像增强:去噪、亮度/对比度调整等,以提高匹配质量。
- 代价计算: 对于左图中的每个像素
(x, y)和每个可能的视差值d,计算一个匹配代价C(x, y, d)。这个代价衡量左图(x, y)处的像素与右图中(x - d, y)处的像素的相似性或差异性。- 常用代价函数:
- 像素差(灰度差)的绝对值:
C_AD = |I_left(x, y) - I_right(x - d, y)| - 像素差的平方:
C_SD = (I_left(x, y) - I_right(x - d, y))^2 - 互相关: 计算一个小窗口(邻域)内的相似度(值越大表示越相似)。
- Census Transform: 将窗口内像素值与中心像素比较(大于则置1,否则0),得到一个比特串,比较比特串的汉明距离作为代价。
- Rank Transform: 类似Census,但使用排名顺序。
- 归一化互相关: 对光照变化具有更好的鲁棒性。
- 像素差(灰度差)的绝对值:
- 常用代价函数:
- 代价聚合: 由于单点匹配对噪声非常敏感,代价计算通常在一个局部窗口或多个像素的邻域上进行聚合。这是为了平滑噪声、增加匹配的可靠性。
- 常用方法:
- 固定窗口求和/平均:
C_sum(x, y, d) = Σ[C(x + i, y + j, d)](在窗口(i, j) ∈ W内求和) - 自适应权重窗口
- 引导图滤波
- 重要的全局优化方法(如Semi-Global Matching, SGM)的核心也是进行高效的全局或半全局代价聚合(沿多个方向聚合代价)。
- 固定窗口求和/平均:
- 常用方法:
- 视差计算/优化: 基于聚合后的代价,为左图中的每个像素
(x, y)选择一个最优视差值d。- 局部方法(赢者通吃): 对于每个点
(x, y),选择使聚合代价C_sum(x, y, d)最小(或最大,取决于代价定义是差异还是相似性) 的视差值d_win:d = argmin_d (C_sum(x, y, d))(大多数差异最小化)
- 全局/半全局优化方法: 考虑像素间视差的空间连续性约束(例如,视差通常是平滑变化的,除了深度不连续处)。
- 建立一个能量函数
E(d) = data_term + smooth_term:data_term:通常指当前所有像素的聚合代价(C_sum(x, y, d(x,y)))之和。smooth_term:惩罚相邻像素视差变化过大的项(例如P1 * |d - d_neighbor|或P2 * 1[d != d_neighbor])。
- 目标:找到整个视差图
d,使总能量E最小化。 - 常用优化算法:图割 (Graph Cuts)、置信传播 (Belief Propagation)、动态规划 (Dynamic Programming)、半全局匹配(SGM)(非常流行,在效率和精度间取得较好平衡)。
- 建立一个能量函数
- 局部方法(赢者通吃): 对于每个点
- 视差精化/后处理: 初始计算出的视差图通常包含噪声、错误匹配和深度不连续处的瑕疵。后处理步骤旨在改善视差图质量:
- 亚像素插值: 在赢者通吃得到的整像素视差基础上,通过拟合代价曲线(如抛物线拟合、线性插值)来估计更精确的亚像素级视差值。
- 一致性检查: 做左右一致性检查(从左图匹配到右图,再从右图匹配回左图,看是否一致),用于检测遮挡区域和错误匹配点。
- 空洞填充/插值: 对于被标记为遮挡或无效的视差点(在视差图中表现为空洞),利用其周围可靠点的视差值进行插值填充。
- 滤波平滑: 应用中值滤波、加权中值滤波、双边滤波等去除离群噪声点。
主要挑战与难点:
- 纹理缺失区域/弱纹理区域: 图像中的纯色表面(白墙、黑板、天空)缺乏可区分的纹理特征,导致无法确定唯一的匹配点。
- 重复纹理区域: 规则图案(如格子衬衫、百叶窗)会在多个视差值上产生很低的匹配代价,导致匹配歧义。
- 遮挡区域: 左图中可见的点在右图中可能被其他物体遮挡(反之亦然),导致无法找到对应点。
- 视差不连续(深度突变区域): 在物体边缘处,相邻像素的深度(视差)会发生突然跳跃,局部窗口假设会失效,导致边缘模糊或边缘拉花。
- 光照变化: 左右相机的曝光或白平衡设置不同,使得同一物体在两张图像中的亮度或颜色不一致,影响匹配结果。
- 透视失真/镜面高光/非朗伯表面: 物体表面反射特性不符合理想的漫反射(朗伯表面)假设,导致对应点像素值差异很大。
- 计算复杂度: 高质量、稠密的立体匹配算法计算量大,对实时应用构成挑战。
常用算法举例:
- 局部方法: Block Matching (BM), Sum of Absolute Differences (SAD), Sum of Squared Differences (SSD), Normalized Cross Correlation (NCC)
- 全局/半全局方法: Graph Cuts (GC), Belief Propagation (BP), Semi-Global Matching (SGM) / SGBM (OpenCV中的
StereoBM,StereoSGBM) - 基于深度学习的方法: GCNet, PSMNet, GANet, DeepPruner, RAFT-Stereo 等端到端学习深度神经网络直接预测视差图,性能优异,但需要大量数据训练且有部署成本。
主要应用领域:
- 三维重建: 重建场景的三维点云模型。
- 机器人导航与避障: 感知环境,规划路径。
- 自动驾驶(ADAS): 感知车辆、行人、障碍物的距离。
- 虚拟现实/增强现实: 理解真实场景的三维结构。
- 无人机/无人机测绘: 生成地形图、数字表面模型。
- 工业检测: 测量产品尺寸、形状。
- 动作捕捉: 分析人体/物体的三维运动。
总结来说,立体匹配是一个通过计算左右图像像素对应关系(视差)来感知场景深度的过程。其核心在于代价计算和视差优化,面临着纹理缺失、遮挡等挑战,但被广泛应用于需要三维感知的领域。 经典方法(如SGM)仍广泛使用,而基于深度学习的方法代表了当前最先进的性能水平。
双目立体视觉相机产品介绍
身设计。设备内置高性能立体匹配算法,可直接输出高精度的深度图与点云数据,无需额外复杂的后期处理,同时提供一站式完整智能视觉解决方案,全面支持全类型目标识别、实时检测
2026-02-28 15:08:45
几种经典的双目匹配的算法
在深度相机的主流技术方案Structure Light,ToF,Stereo Dual)中,主动双目成像方案可以基于低成本的硬件,获得高分辨率、高精度的深度图像,但是立体匹配算法(stereo
2023-07-04 11:33:51
双目立体匹配的四个步骤
根据Schrstein和Szeliski的总结,双目立体匹配可划分为四个步骤: 匹配代价计算、代价聚合、视差计算和视差优化 。 一 、匹配代价计
2023-06-28 16:59:27
基于改进自适应权重的立体匹配优化算法
为解决现有立体匹配算法对低纹理以及视差不连续区域匹配效果较差的问题,提出一种改进的立体匹配优化算法。在传统自适应权重算法
资料下载
佚名
2021-04-29 15:42:11
融合边缘特征的立体匹配算法Edge-Gray
为保证SAD算法的立体匹配效率,提高匹配精度,提出一种融合边缘特征的立体匹配算法 Edge-gray。通过边缘计算得到边缘特征图,在进行
资料下载
佚名
2021-04-29 11:06:56
一种基于PatchMatch的半全局双目立体匹配算法
近年来双目立体匹配技术发展迅速,高精度、高分辨率、大视差的应用需求无疑对该技术的计算效率提出了更高的要求。由于传统立体匹配算法固有的计算复杂度正比于视差范围,已经难以满足高分辨率、大视差的应用场
资料下载
佚名
2021-04-20 11:31:54
双目立体计算机视觉的立体匹配研究综述
双目立体视觉技术具有成本低、适用性广的优点,在物体识别、目标检测等方面应用广泛,成为计算机视觉领域的研究热点。立体匹配是双目立体视觉技术中的核心
资料下载
佚名
2021-04-12 09:47:54
如何使用跨尺度代价聚合实现改进立体匹配算法
针对现有的立体匹配算法在精度和速度上不可兼得的现状,提出一种改进的跨尺度代价聚合立体匹配算法。通过强度和梯度算法计算匹配代价,利用引导滤波聚合
资料下载
佚名
2021-02-02 14:36:58
从双目标定到立体匹配:Python实践指南
obj_points、img_points_left和img_points_right分别是存储每个标定图片对应的物理坐标系下的角点坐标、左相机的像素坐标和右相机的像素坐标。这些变量同样在后续的相机标定和立体匹配中用到。
2023-06-08 16:28:53
立体匹配:经典算法Fast Bilateral Solver
而下面左图是OpenCV的SGBM算法得到的视差图,右边则是通过我今天要介绍的算法处理后的视差图。看了它们后,我想你应该对什么叫做”化腐朽为神奇“有了深刻印象了吧。
2023-01-03 10:59:14
几个经典的立体匹配算法的评价指标和数据集
事实上,有一些算法的流程比较混合——比如今天我将介绍的一个经典立体匹配算法,它总体来说是局部法的流程,但其中也有少量模块在进行视差优化的过程。
2022-09-07 15:40:59
基于双目视觉立体匹配的三维地图构建方法
摘要:针对基于双目深度图的室外大规模地图构建计算冗长,而在无人系统的有限算力下,计算效率需求显著的情况,文中提出一种基于双目视觉立体匹配的三维地图构建方法。首先针对由立体匹配算法及原图引入的噪声误差
2022-08-10 11:38:12
一种新的基于可学习的双边网格的代价空间上采样模块
高精度的实时立体匹配网络是时下研究的一个热点,它在自动驾驶、机器人导航和增强现实等领域中有着广泛的应用。虽然近年来对立体匹配网络的研究已经取得了显著的成果,但要同时兼顾实时性和高精度仍然是一个挑战
2021-06-27 09:21:03
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机