双目相机立体匹配算法概述

news2024/12/23 13:15:56

这里写目录标题

  • 双目相机立体匹配算法概述
    • 1.算法分类
    • 2.传统算法
      • 2.1 局部算法
      • 2.2 全局算法
      • 2.3 半全局算法
    • 3.深度学习算法
      • 3.1 基于CNN的方法
      • 3.2 基于GAN的方法
      • 3.3 基于transformer的方法
    • 4.总结
    • 5.参考文献

双目相机立体匹配算法概述

双目立体匹配是计算机视觉中的一个重要研究方向,其目的是通过两个摄像头拍摄的图像来恢复场景的三维信息。本文将对传统算法和深度学习算法进行概述。

1.算法分类

在这里插入图片描述

2.传统算法

2.1 局部算法

局部算法主要基于窗口匹配的思想,计算左右图像中对应窗口的相似度。

  • SAD(Sum of Absolute Differences)
    原理:计算左右图像对应窗口像素差的绝对值之和,值越小表示匹配度越高。

  • SSD(Sum of Squared Differences)
    原理:计算左右图像对应窗口像素差的平方和,同样值越小表示匹配度越高。

  • NCC(Normalized Cross-Correlation)
    原理:计算左右图像对应窗口的归一化互相关,值越大表示匹配度越高。

2.2 全局算法

全局算法通常将立体匹配问题建模为能量最小化问题,考虑整个图像的一致性。

  • 图割算法(Graph Cuts)
    原理:将立体匹配问题转化为图论中的最小割问题,通过最小化能量函数来获得最优视差图。

  • 信念传播算法(Belief Propagation)
    原理:通过迭代地在图像的像素网格上传递"信念"来优化能量函数,最终得到全局最优的视差图。

2.3 半全局算法

半全局算法试图在局部算法的效率和全局算法的准确性之间取得平衡。

  • SGM(Semi-Global Matching)
    原理:在多个(通常是8或16个)方向上进行一维的路径代价聚合,然后将这些路径的代价进行加和,选择具有最小聚合代价的视差值。

3.深度学习算法

3.1 基于CNN的方法

  • MC-CNN(Matching Cost Convolutional Neural Network)
    在这里插入图片描述

原理:使用Siamese网络结构学习匹配代价,然后使用传统的代价聚合和优化方法得到最终视差图。

  • GC-Net(Geometry and Context Network)
    在这里插入图片描述

原理:端到端的3D卷积神经网络,直接从立体图像对预测视差图,无需显式的特征提取和匹配过程。

  • PSMNet(Pyramid Stereo Matching Network)
    在这里插入图片描述

原理:采用金字塔池化模块和3D CNN来规范化代价体积。首先使用共享权重的CNN提取特征,然后通过空间金字塔池化模块获取全局上下文信息。最后,使用3D CNN对代价体积进行规范化,得到最终的视差图。PSMNet能够有效地处理纹理较少的区域和遮挡问题。

3.2 基于GAN的方法

  • StereoGAN
    在这里插入图片描述

原理:使用生成对抗网络来学习立体匹配,生成器负责生成视差图,判别器负责判断生成的视差图是否合理。

3.3 基于transformer的方法

  • STTR(Stereo Transformer)
    在这里插入图片描述

原理:利用transformer的自注意力机制来建立左右图像间的对应关系,能够捕捉长距离依赖。

4.总结

传统算法在计算效率和特定场景下的表现上仍有优势,而深度学习算法在复杂场景下通常能获得更好的性能。未来的研究方向可能集中在如何结合传统算法和深度学习算法的优势,以及如何提高算法在实际应用中的鲁棒性和效率。

5.参考文献

[1]Scharstein, D., & Szeliski, R. (2002). A taxonomy and evaluation of dense two-frame stereo correspondence algorithms. International journal of computer vision, 47(1), 7-42.
[2]Hirschmuller, H. (2005, June). Accurate and efficient stereo processing by semi-global matching and mutual information. In 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'05) (Vol. 2, pp. 807-814). IEEE.
[3]Zbontar, J., & LeCun, Y. (2016). Stereo matching by training a convolutional neural network to compare image patches. The journal of machine learning research, 17(1), 2287-2318.
[4]Kendall, A., Martirosyan, H., Dasgupta, S., Henry, P., Kennedy, R., Bachrach, A., & Bry, A. (2017). End-to-end learning of geometry and context for deep stereo regression. In Proceedings of the IEEE International Conference on Computer Vision (pp. 66-75).
[5]Li, C., & Wand, M. (2016). Precomputed real-time texture synthesis with markovian generative adversarial networks. In European conference on computer vision (pp. 702-716). Springer, Cham.
[6]Li, X., Liu, S., De Mello, S., Wang, X., Kautz, J., & Yang, M. H. (2020). Joint stereo matching and optical flow estimation in feature space. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 12690-12699).
[7][Chang, J. R., & Chen, Y. S. (2018). Pyramid stereo matching network. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 5410-5418).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1940785.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据挖掘与分析部分实验内容

一、机器学习算法的应用 1. 朴素贝叶斯分类器 相关代码 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.naive_bayes import GaussianNB, MultinomialNB from sklearn.metrics import accuracy_score # 将数据加载到DataFrame中&a…

Stable Diffusion 使用详解(3)---- ControlNet

背景 炼丹师在AI绘画的过程中,由于Stable Diffusion的原理是水滴式的扩散作图原理,其实在前面也有提到,他的发挥是‘不稳定’的,因为你没有办法做到精确控制,只能说是大致符合你的预期。你不能总依赖抽卡固定随机数种…

SpringCloud--负载均衡

目录 前言 一.负载均衡的引入 1.1问题引入 1.2代码修改实现 二.负载均衡介绍 2.1实现负载均衡 2.2负载均衡策略 2.3LoadBalancer 原理 学习专栏:http://t.csdnimg.cn/tntwg 前言 在前面的Eureka当中,我们虽然实现了从注册中心中获取url&#xf…

spark 广播变量broadcast

broadcast使用如下图,可以看到创建broadcast是val barr1 sc.broadcast(arr1),使用broadcast是barr1.value 创建broadcast是使用的broadcastManager。 BroadcastManager cachedValues变量是map结构,key是broadcastId,强引用&a…

初识C++|模板初阶

🍬 mooridy-CSDN博客 🧁C专栏(更新中!) 目录 🍉1. 泛型编程 🍉2. 函数模板 🥝2.1 函数模板概念 🥝2.2 函数模板格式 🥝2.3 函数模板的原理 &#x1f95…

java题目之数字加密以及如何解密

public class Main6 {public static void main(String[] args) {// 某系统的数字密码&#xff08;大于0&#xff09;&#xff0c;比如1983&#xff0c;采用加密方式进行传输//定义了一个静态数组int []arr{1,9,8,3};//1.加密//先给每位数加上5for (int i 0; i <arr.length …

1997. 孤独的素数(结果有一点问题,希望能一起求解)

问题描述 在一个 &#x1d45b; 行 &#x1d45a;列的矩阵王国中&#xff0c;生活着一些整数&#xff0c;其中一些是素数&#xff0c;一些不是素数。如果一个素数的上下左右、左上、右上、左下、右下相邻的数中都没有素数&#xff0c;我们就认为这是一个孤独的素数。 比如&am…

Spring Boot + Spring Cloud 入门

运行配置 java -jar spring-boot-config-0.0.1-SNAPSHOT.jar --spring.profiles.activetest --my1.age32 --debugtrue "D:\Program Files\Redis\redis-server.exe" D:\Program Files\Redis\redis.windows.conf "D:\Program Files\Redis\redis-cli.exe" &q…

【零基础必看的前端教程】——JavaScript(四)类型转换

欢迎大家打开前端的新篇章——JavaScript&#xff0c;JavaScript与HTML、CSS合称为前端三大件&#xff0c;JavaScript是前端的重中之重&#xff0c;小洪将继续以零基础视角&#xff0c;带你循序渐进学习前端知识&#xff0c;一看就懂&#xff0c;小白也能转行做前端&#xff01…

基于WebGoat平台的SQL注入攻击

目录 引言 一、安装好JAVA 二、下载并运行WebGoat 三、注册并登录WebGoat 四、模拟攻击 1. 第九题 2. 第十题 3. 第十一题 4. 第十二题 5. 第十三题 五、思考体会 1. 举例说明SQL 注入攻击发生的原因。 2. 从信息的CIA 三要素&#xff08;机密性、完整性、可用性&…

推荐一款基于Spring Boot 框架开发的分布式文件管理系统,功能齐全,非常便捷(带私活源码)

前言 在数字化时代&#xff0c;文件管理是企业和个人用户的基本需求。然而&#xff0c;现有的文件管理系统往往存在一些痛点&#xff0c;如存储空间有限、文件共享困难、缺乏在线编辑功能、移动端适配性差等。这些问题限制了用户在不同设备和场景下的文件处理能力。 为了解决…

spring-retry详解

spring-retry详解 1.引入依赖2.Retryable基础使用3.Recover使用4.Retryable参数详解5.需要注意 重试机制对于大部分场景来说都是必要的&#xff0c;比如同步调用三方接口&#xff0c;三方接口、信息拉取等网络原因突然不通&#xff0c;有了重试就可以多一些容错机制&#xff0c…

压缩包方式windows安装mysql

压缩包方式windows安装mysql 本文介绍通过压缩包方式在Windows本地安装mysql。 一、 具体步驟 步骤1&#xff0c;下载mysql压缩程序 这里好像上传不了压缩文件&#xff0c;先这样吧&#xff0c;后期补充。 步骤2&#xff0c;解压并手写添加 my.ini 文件 my.ini 文件内容如下…

Air780EP-AT开发-HTTP应用指南

简介 关联文档和使用工具&#xff1a; AT固件获取AT指令手册 概述 4G模块支持HTTP和HTTPS协议&#xff0c; HTTP应用的基本流程如下&#xff1a; 1、激活PDP&#xff08;参考&#xff1a;http://oldask.openluat.com/article/937&#xff09;2、初始化HTTP服务3、设置HTTP会话…

17_高级进程间通信 UNIX域套接字1

非命名的UNIX域套接字 第1个参数domain&#xff0c;表示协议族&#xff0c;只能为AF_LOCAL或者AF_UNIX&#xff1b; 第2个参数type&#xff0c;表示类型&#xff0c;只能为0。 第3个参数protocol&#xff0c;表示协议&#xff0c;可以是SOCK_STREAM或者SOCK_DGRAM。用SOCK_STR…

ontap simulator配置过程

一、下载模拟器 参考《Simulate_ONTAP_9-14-1_Installation_and_Setup_Guide.pdf》P4的指导&#xff0c;登录网站进行下载。 二、传入pve&#xff0c;并解压转换 # 解压 tar -xvf vsim-netapp-DOT9.14.1-cm_nodar.ova# 解压后的文件列表&#xff0c;其中ovf文件里定义了虚拟机…

Docker部署Elasticsearch8.6.0 Kibana8.6.0

为了匹配springboot3.0.x&#xff0c;安装Elasticsearch:8.5.3 拉取镜像&#xff0c;遇到问题&#xff01; [rootserver01 ~]# docker pull elasticsearch:8.5.3 8.5.3: Pulling from library/elasticsearch eaead16dc43b: Retrying in 1 second a405acf5b7d4: Retrying in 1…

结构体[C语言]

文章目录 结构体的概念结构体的用法定义结构体创建结构体变量访问结构体成员 结构体的应用 结构体的概念 结构体是一种用户自定义的数据类型&#xff0c;它允许我们将逻辑上相关的不同数据类型组合在一起。例如&#xff0c;如果我们想要表示一个学生的信息&#xff0c;我们可以…

texify - 识别数学/图像 PDF

文章目录 一、关于 texify例子训练 二、安装手动安装 三、使用1、使用技巧2、用于交互转换的应用程序3、转换图像4、Python 中导入并运行 四、限制五、基准测试运行自己的基准测试 六、其它商业用途感谢 一、关于 texify Texify是一种OCR模型&#xff0c;它将包含数学的图像或…

数据结构(Java):优先级队列(堆)堆的模拟实现PriorityQueue集合

目录 1、优先级队列 1.1 概念 1.2 PriorityQueue底层结构 2、 堆 2.1 堆的概念 2.2 堆的存储结构 3、优先级队列&#xff08;堆&#xff09;的模拟实现 3.1 堆的创建 3.1.1 向下调整算法建完整堆 3.2 堆的插入 3.2.1 向上调整算法 3.3 堆的删除 3.4 堆排序 4、Pri…