【图像处理】基于双目立体匹配的景深计算(Matlab代码实现)​

article/2025/6/18 10:26:00

 👨‍🎓个人主页

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

基于双目立体匹配的景深计算研究

1. 双目立体匹配的基本原理

2. 景深计算的定义与理论

3. 立体匹配算法的分类与对比

3.1 传统方法

3.2 基于深度学习的方法

4. 视差图优化与深度图生成

5. 应用案例

6. 最新研究进展

7. 挑战与未来方向

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

基于双目立体匹配的景深计算研究

双目立体匹配一直是双眼视觉的研究热点。双目相机捕获同一场景的左右视点图像,使用立体匹配匹配算法获得视差图和深度图。

流程:

首先导入左右图像,并设置合理的搜索窗口和模板大小。以每个像素为中心,并使用固定大小的像素作为模板。假设相机已被校正,因此它仅水平搜索。在搜索窗口中连续移动左侧图像模板,以计算左侧和右侧模板的成本。获得成本后,通过累积像素信息来提高结果的信噪比,即成本聚合过程。这里我们优化窗口中最小生成值的坐标,并使用抛物线拟合来更新视差值。最后,对得到的视差图进行细化(使用中值滤波器),以消除视差图中产生的部分噪声。


1. 双目立体匹配的基本原理

双目立体视觉通过模拟人眼视差感知机制,利用两个相机从不同视角采集同一场景的图像,通过立体匹配技术计算视差图,进而推导出深度信息。其核心流程包括以下步骤:

  1. 双目标定
    确定相机的内参(焦距、主点坐标、畸变系数)和外参(两相机间的旋转矩阵RR和平移向量TT),建立两相机的几何关系模型。

  2. 极线校正
    将两幅图像的极线对齐至水平方向,简化匹配搜索范围为一维水平线,降低计算复杂度。

  3. 立体匹配

    • 代价计算:通过像素或特征相似性(如SAD、SSD、Census变换、NCC等)构建初始代价体。

    • 代价聚合:利用窗口或全局优化方法(如动态规划、图割)平滑代价体,提升匹配鲁棒性。
    • 视差计算:通过赢家通吃(WTA)策略选择最小代价对应的视差值,生成初始视差图。
    • 视差优化:采用左右一致性检测、中值滤波、空洞填充等方法优化视差图,减少误匹配。
  4. 深度计算
    根据三角测量原理,视差dd与深度ZZ成反比,公式为:

其中f为焦距,B为基线距离。


2. 景深计算的定义与理论

景深(Depth of Field, DOF)指场景中能清晰成像的纵向范围,其计算不仅依赖双目立体匹配结果,还需考虑光学参数:

  • 影响因素:光圈大小(有效F值)、焦距、拍摄距离、传感器尺寸。
  • 公式推导

3. 立体匹配算法的分类与对比
3.1 传统方法
算法类型核心思想优点缺点
局部匹配基于窗口相似性(SAD、NCC等)计算速度快低纹理区域误匹配率高
全局匹配最小化全局能量函数(动态规划、图割)精度高计算复杂度高
半全局匹配(SGBM)结合局部和全局优化策略速度与精度平衡参数调优复杂
3.2 基于深度学习的方法
  • CNN方法:通过卷积神经网络提取多尺度特征,构建代价体并聚合,如GCNet、PSMNet。
  • Transformer方法:利用自注意力机制捕捉长距离依赖,解决CNN感受野受限问题。
  • 混合方法:结合传统算法与深度学习(如AD-Census改进算法),在低纹理区域提升18%精度。

4. 视差图优化与深度图生成
  1. 视差优化技术

    • 错误检测:左右一致性检测(式11)剔除遮挡点。
    • 空洞填充:邻域插值或最小视差填充。
    • 滤波处理:加权中值滤波平滑噪声。
  2. 深度图生成
    通过视差图转换公式计算深度,并融合超像素分割、多尺度特征融合等技术提升精度。


5. 应用案例
  1. 机器人导航
    基于景深信息的避障策略(如深度强化学习中的奖励预测与碰撞约束),提升路径规划效率。
  2. AR/VR
    实时景深模拟(如GPU加速滤波算法)增强虚拟场景的沉浸感。
  3. 工业测量
    双目结构光混合方法实现高精度体积测量,误差小于5%。

6. 最新研究进展
  1. 深度学习模型创新
    • 注意力机制:如MS-ACV网络通过多尺度注意力提升视差估计精度。
    • 端到端优化:DRR网络通过检测-替换-精修三步迭代优化视差图。
  2. 硬件加速
    GPU并行化处理使传统算法速度提升1\sim2个数量级。
  3. 多模态融合
    结合结构光与双目视觉,解决低纹理场景的匹配难题。

7. 挑战与未来方向
  1. 挑战
    • 低纹理、反光表面的匹配精度不足。
    • 实时性与计算资源的平衡。
  2. 未来方向
    • 轻量化深度学习模型(如MobileStereoNet)。
    • 多传感器融合(LiDAR、ToF)提升鲁棒性。
    • 自监督学习减少对标注数据的依赖。

📚2 运行结果

主函数部分代码:

clc;
clear;%% 加载2张立体图像
left = imread('iml1545.jpg');
right = imread('imr1545.jpg');
sizeI = size(left);% 显示复合图像
zero = zeros(sizeI(1), sizeI(2));
channelRed = left(:,:,1);
channelBlue = right(:,:,3);
composite = cat(3, channelRed, zero, channelBlue);figure(1);
subplot(2,3,1);
imshow(left);
axis image;
title('左图');subplot(2,3,2);
imshow(right);
axis image;
title('右图');subplot(2,3,3);
imshow(composite);
axis image;
title('重叠图');%% 基本的块匹配% 通过估计子像素的块匹配计算视差
disp('运行基本的块匹配~');% 启动定时器
tic();% 平均3个颜色通道值将RGB图像转换为灰度图像
leftI = mean(left, 3);
rightI = mean(right, 3);% SHD
%  bitsUint8 = 8;
% leftI = im2uint8(leftI./255.0);
% rightI = im2uint8(rightI./255.0);% DbasicSubpixel将保存块匹配的结果,元素值为单精度32位浮点数
DbasicSubpixel = zeros(size(leftI), 'single');% 获得图像大小
[imgHeight, imgWidth] = size(leftI);% 视差范围定义离第1幅图像中的块位置多少像素远来搜索其它图像中的匹配块。
disparityRange = 50;% 定义块匹配的块大小
halfBlockSize = 5;
blockSize = 2 * halfBlockSize + 1;% 对于图像中的每行(m)像素
for (m = 1 : imgHeight)% 为模板和块设置最小/最大块边界% 比如:第1行,minr = 1 且 maxr = 4minr = max(1, m - halfBlockSize);maxr = min(imgHeight, m + halfBlockSize);% 对于图像中的每列(n)像素for (n = 1 : imgWidth)% 为模板设置最小/最大边界% 比如:第1列,minc = 1 且 maxc = 4minc = max(1, n - halfBlockSize);maxc = min(imgWidth, n + halfBlockSize);% 将模板位置定义为搜索边界,限制搜索使其不会超出图像边界 % 'mind'为能够搜索至左边的最大像素数;'maxd'为能够搜索至右边的最大像素数% 这里仅需要向右搜索,所以mind为0% 对于要求双向搜索的图像,设置mind为max(-disparityRange, 1 - minc)mind = 0; maxd = min(disparityRange, imgWidth - maxc);% 选择右边的图像块用作模板template = rightI(minr:maxr, minc:maxc);% 获得本次搜索的图像块数numBlocks = maxd - mind + 1;% 创建向量来保存块偏差blockDiffs = zeros(numBlocks, 1);% 计算模板和每块的偏差for (i = mind : maxd)%选择左边图像距离为'i'处的块block = leftI(minr:maxr, (minc + i):(maxc + i));% 计算块的基于1的索引放进'blockDiffs'向量blockIndex = i - mind + 1;%{% NCC(Normalized Cross Correlation)ncc = 0;nccNumerator = 0;nccDenominator = 0;nccDenominatorRightWindow = 0;nccDenominatorLeftWindow = 0;%}% 计算模板和块间差的绝对值的和(SAD)作为结果for (j = minr : maxr)for (k = minc : maxc)% SAD(Sum of Absolute Differences)blockDiff = abs(rightI(j, k) - leftI(j, k + i));blockDiffs(blockIndex, 1) = blockDiffs(blockIndex, 1) + blockDiff;%{% NCCnccNumerator = nccNumerator + (rightI(j, k) * leftI(j, k + i));nccDenominatorLeftWindow = nccDenominatorLeftWindow + (leftI(j, k + i) * leftI(j, k + i));nccDenominatorRightWindow = nccDenominatorRightWindow + (rightI(j, k) * rightI(j, k));%}endend

🎉3 参考文献

[1]杨晓立,叶乐佳,赵鑫,王飞,徐玉华,肖振中.双目立体视觉研究进展与应用[J/OL].激光与光电子学进展:1-30[2023-06-06].

部分理论引用网络文献,若有侵权联系博主删除。

🌈4 Matlab代码实现


http://www.hkcw.cn/article/jFFlSqYmXq.shtml

相关文章

VGG16模型:图像处理深度学习的象征

本文还有配套的精品资源,点击获取 简介:VGG16,作为深度学习领域的里程碑,以其独特的16层深度网络架构在2014年ILSVRC中取得突破。该模型主要采用3x3的小型卷积核,通过深层次的卷积层堆叠来提升模型复杂度。VGG16通常…

使用场景广泛存在于各种编程应用当中,比如图像处理中的像素点集合、科学计算里的数值

数组的数据结构 数组是一种线性的数据结构,其中所有的元素都具有相同的数据类型并按照连续的方式存储在内存中。这种特性使得通过索引访问特定位置上的元素变得非常高效。 对于多维数组而言,其本质上是由多个一维数组嵌套而成。例如二维数组可以视为由…

计算机眼中的图像处理基础:灰度化与二值化实验详解

在计算机视觉和图像处理领域,理解计算机如何"看"图像是基础中的基础。本文将详细介绍图像处理中的两个核心概念:灰度化和二值化,并通过实验方法展示不同算法的效果差异。 一、计算机眼中的图像 1. 像素 像素(Pixel)是图像的基本…

OpenCV学习路线全解析!从入门图像处理到计算机视觉实战,搭建你的视觉AI技能体系

想进入计算机视觉领域,OpenCV 几乎是绕不开的第一站。它是一个开源的视觉工具库,拥有丰富的图像处理、识别、追踪等能力,被广泛用于教育、科研和工业场景。 但 OpenCV 功能强大,文档复杂,很多初学者“安装完不知道干啥…

图像处理——卷积

一、什么是卷积 卷积可以理解为两个函数f和g的重叠运算,通过将一个函数翻转并滑动到另一个函数上,计算它们在重叠点的乘积并求和,从而生成一个新的函数。数学上,卷积的表达式通常为: (f∗g)(t)∫−∞∞​f(τ)g(t−τ)…

【图像轮廓特征查找】图像处理(OpenCV) -part8

17 图像轮廓特征查找 图像轮廓特征查找其实就是他的外接轮廓。 应用: 图像分割 形状分析 物体检测与识别 根据轮廓点进行,所以要先找到轮廓。 先灰度化、二值化。目标物体白色,非目标物体黑色,选择合适的儿值化方式。 有了轮…

CImage类在VS2010中的应用与图像处理教程

本文还有配套的精品资源,点击获取 简介:本文旨在介绍如何在Visual Studio 2010中使用MFC库的CImage类进行图像处理。首先概述了CImage类的功能,然后详细讲解了加载、显示、保存图像以及进行裁剪、缩放、旋转等操作的方法。提供了示例代码&a…

【机器学习】图像处理与深度学习利器:OpenCV实战攻略全面解析

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 前言 OpenCV想必大家都听过跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而…

机器学习中的图像处理与计算机视觉

引言 在现代计算机科学中,图像处理和计算机视觉已成为最活跃的研究领域之一,这得益于机器学习和深度学习的发展。本文将深入探讨图像处理与计算机视觉的基础概念、常见应用、关键技术、常用工具,以及在这些领域中的代码示例。通过本篇文章&a…

Fiji —— 基于 imageJ 的免费且开源的图像处理软件

文章目录 一、Fiji —— 基于 imageJ 的免费且开源的图像处理软件1.1、Fiji工具安装(免费)1.2、Fiji源码下载1.2、Fiji - Plugins插件安装 二、功能详解2.0、Fiji - ImageJ(Web应用程序)2.1、常用功能(汇总&#xff09…

深入了解 OpenCV:C# 开发者的图像处理利器

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉与图像处理库,自 2000 年由 Intel 开发以来,已经发展成为业界领先的图像处理框架之一。凭借其跨平台特性、丰富的功能集以及活跃的社区支持,OpenCV…

巴黎世家平角短裤造型裙子已缺货 时尚争议再起

近日,奢侈品牌巴黎世家推出的一款售价4500元的女款半身裙在网上引发热议。不少网友吐槽该裙子造型与平角短裤极为相似,直呼“看不懂时尚”。据巴黎世家官网介绍,这款深蓝色弹力平纹针织半身裙亮相于2025秋季系列Look 50和Look 54。裙子采用弹力棉混纺平纹针织面料,设计为平…

日本男子杀害妻子幼女后自杀 家庭悲剧震惊邻里

6月2日上午,日本大阪府吹田市发生一起悲剧。一名26岁男子从世博会馆附近的一座天桥上跳下自杀。警方随后在其家中发现了他妻子和两名幼女的尸体,三人腹部血流不止,已经死亡。现场还发现了一把带血的菜刀和一张字条,字条上写着对女儿和妻子的歉意。据警方透露,当天早上6点2…

女婴术后脑损伤疑撞到床栏 家属求真相艰难

近日,四川的徐女士反映,她五个多月大的孩子鱼鱼在四川大学华西第二医院锦江院区做完心脏手术后,头部出现了一个创口。经检查,鱼鱼被诊断为脑出血和脑损伤,并伴有癫痫。当地卫健委介入调查后未能得出明确结论。5月29日,记者在事发医院见到已经一岁多的鱼鱼,她仍旧不会爬行…

A股六月开门红 三大指数集体反弹

端午节三天小长假后,六月首个交易日A股三大指数集体反弹,给股民朋友们带来了一个“开门红”。这是继五月“开门红”之后,A股再度取得月度良好开局。截至收盘,沪指涨0.43%,深成指涨0.16%,创业板指涨0.48%,北证50指数涨1.03%。全市场成交额达到11638亿元,较上日放量4亿元…

端午节假期国内出游1.19亿人次 文旅融合添彩传统节日

文化和旅游部6月3日公布了2025年端午节假期文化和旅游市场的情况。经测算,假期三天内,全国国内出游人数达到1.19亿人次,同比增长5.7%;国内出游总花费为427.30亿元,同比增长5.9%。在假期期间,群众积极参与赛龙舟、吃粽子、唱山歌和赏古曲等活动,传统节日文化内涵与旅游发…

乌克兰袭击克里米亚大桥 画面曝光 大桥严重受损

据乌克兰独立新闻社等媒体6月3日报道,乌克兰方面对克里米亚大桥发动了袭击。乌克兰国家安全局表示,克里米亚大桥在这次袭击中严重受损。截至报道时,俄罗斯官方尚未对此消息作出公开回应。责任编辑:0764

媒体评游客因小孩进入拍摄画面打架 迪士尼冲突引热议

5月31日,有网友发布视频称,在上海迪士尼疯狂动物城园区内,一对情侣和一家三口发生肢体冲突。视频中显示,双方在现场扭打,周围游客纷纷上前劝阻。6月1日晚,上海市公安局浦东分局通报了此事。据通报,5月31日18时许,浦东公安分局接到报警,称迪士尼乐园内有人打架。经初步…

广州即将进入“蒸烤”模式 高温晴热天气来袭

广东省气象部门预计,端午假期最后一天起的新一轮“龙舟水”强降水过程将在4日开始减弱。在本轮“龙舟水”减弱前,广东各地仍需防御风雨影响;即使在“龙舟水”减弱后,仍需警惕地质灾害发生。此外,在“龙舟水”间歇期,广东各地还需留意高温天气。根据广东省气象部门的观测和…

南海部分海域有火箭残骸坠落 航行警告发布

据中国海事局消息,清澜海事局发布航行警告,6月4日0时至6月6日24时,南海部分海域将有火箭残骸掉落,禁止驶入。责任编辑:0764