UI演示双视图立体匹配与重建

相关文章:

  • PyQt5和Qt designer的详细安装教程:https://blog.csdn.net/qq_43811536/article/details/135185233?spm=1001.2014.3001.5501
  • Qt designer界面和所有组件功能的详细介绍:https://blog.csdn.net/qq_43811536/article/details/135186862?spm=1001.2014.3001.5501
  • Qt designer设计UI实例:双视图立体匹配与重建的可视化UI:https://blog.csdn.net/qq_43811536/article/details/135198820?spm=1001.2014.3001.5501
  • 基于PyQt5自定义UI的详细教程:https://blog.csdn.net/qq_43811536/article/details/135284469?spm=1001.2014.3001.5501

目录

  • 1. 实例:双视图立体匹配与重建的可视化UI
  • 2. 实现描述
    • 2.1 算法简介
    • 2.2 用户界面
    • 2.3 功能流程
  • 3. 实验结果
    • 3.1 运行结果展示
    • 3.2 算法性能对比
  • 4. 源代码
  • 5. 附录


1. 实例:双视图立体匹配与重建的可视化UI

  • 输入:一对左右眼视图的图像。
  • 任务:对输入的一对带相机参数的左右眼图像数据,实现SAD、NCC 两种局部的立体匹配方法进行重建。
  • 输出
    • 基本的交互界面供用户选择立体匹配算法以及输入的图片。
    • 将每种立体匹配方法所用的时间以及图片大小信息显示出来。
    • 可视化重建的结果,如点云,深度图,视差图等,可以使用Meshlab 软件
      或者Open3D 进行可视化

2. 实现描述

2.1 算法简介

本项目旨在通过双视图立体匹配技术实现三维场景重建。输入为一对左右眼视图的图像,输出为三维重建的深度图可视化结果。本报告通过实现 WTA(Winner-Take-All)和 SGM(Semi-Global Matching)匹配算法,结合 SAD(Sum of Absolute Differences)、SSD(Sum of Squared Differences)和 NCC(Normalized Cross-Correlation)三种成本函数,提供了一个用于立体图像匹配和深度图重建的较为完整的解决方案。

  • 匹配算法:

    • WTA:一种简单但有效的匹配策略,选择具有最低成本的匹配作为最终结果。
    • SGM:一种更复杂的方法,通过考虑图像中的邻近像素来优化匹配过程。
  • 成本计算:

    • SAD:计算两个窗口中对应像素差的绝对值之和。
    • SSD:计算两个窗口中对应像素差的平方和。
    • NCC:衡量两个窗口的相似性。

2.2 用户界面

基于上一小节具体的算法实现,本报告使用Qt Designer 设计了一个可供用户交互的界面,详情参考Qt designer设计UI实例:双视图立体匹配与重建的可视化UI。界面包含图片选择(Picture)、匹配算法选择(Matching algorithm)、成本函数选择(Matching cost)、运行按钮(Run)、图片显示窗口(Picture visualization)、结果显示窗口(Results display)和输出信息窗口(Output information)。然后使用 PyQt5 实现界面的初始化和槽函数自定义,详情参考基于PyQt5自定义UI的详细教程。

2.3 功能流程

  • 用户选择双视图:本报告提供了5对双视图,分别为“Adirondack”、“cones”、“bow-ling”、“artroom1”和“chess1” 1,其中前两对双视图提供深度图的ground truth(灰度图)以及masked image(用于排除遮挡区域的掩码图),最后两对提供左右视图的彩色深度图的ground truth但缺少masked image,中间的“bowling”仅有左右视图。在用户选择好图片之后,被选择的图片会实时绘制在Picture visualization窗口中,根据可视化结果用户可以决定是否更改图片选择。
  • 选择匹配参数:我们的界面相对简陋,目前只提供两种匹配算法WTA和SGM,以及三种成本SAD、SSD和NCC。有关算法的细节比如max_disparity(要考虑的最大差距)、filter_radius(滤波器半径)以及accx_threshold(计算重建精度Acc时的阈值差)等参数未提供接口,默认使用实验过程确定好的参数。
  • 运行:用户点击“RUN”按钮开始匹配和重建过程。这部分可能需要等候一段时间。
  • 结果显示:在Results display窗口输出深度图,同时Output information窗口显示运行日志、用时、图片大小和重建精度(如果存在ground truth)等信息。所有结果都保存在“./results”中。

3. 实验结果

3.1 运行结果展示

以图片“Adirondack”为例,下图展示了该图片在使用SGM和NCC算法时的重建结果以及运行过程中的用户界面。其中运行时长为21.565s,重建精度为0.929。

在这里插入图片描述

3.2 算法性能对比

我们以双视图“Adirondack”和“cones”为例,分别对两种匹配算法和三种成本算法进行重建性能和用时对比。“bowling”的重建结果见附录图。

下面两幅图分别呈现两个双视图在不同匹配和成本算法下的深度图结果,两个表格分别罗列重建性能和用时的量化结果。

  • 在两个不同的场景下,全局匹配算法SGM的性能都是要显著优于WTA的,但由于算法的复杂性相应的用时也会成倍增长。这主要是因为SGM通过考虑像素间的连续性和平滑性,减少了匹配错误,同时它的算法结构使其对图像噪声和纹理不均匀区域更具鲁棒性,在处理复杂场景(如遮挡、重复纹理等)时表现更优。但SGM 的计算复杂度高于 WTA,因此在计算资源受限的环境中可能不太适用。
  • 成本算法NCC相比其他两种成本性能提升显著。这主要是以为NCC对光照变化和图像强度缩放具有较好的鲁棒性。它通过归一化操作减少了这些因素的影响。在光照变化显著的环境下,NCC 往往能提供比 SAD 和 SSD 更准确的匹配结果,比如“Adirondack_SGM_NCC”性能最优。但NCC 的计算相对复杂,可能不适合对实时性要求较高的应用。而SSD 对差异较大的像素施加更强的惩罚,有助于准确匹配高对比度的特征,比如“cones_SGM_SSD”性能最优。

图1

图1

请添加图片描述

图2

在这里插入图片描述


4. 源代码

源代码可以从GitHub链接获取:https://github.com/Jurio0304/Two-view_Stereo_Matching_and_Reconstruction

创作不易,参考的话球球给个star…


5. 附录

请添加图片描述


创作不易,麻烦点点赞和关注咯!

  1. Scharstein D, Hirschmüller H, Kitajima Y, et al. High-Resolution Stereo Datasets with Subpixel-Accurate Ground Truth. In: Pattern Recognition. Ed. by Jiang X, Hornegger
    J, and Koch R. Cham: Springer International Publishing, 2014:31–42. ↩︎

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何理解李克特量表?选项距离相等+题目权重相等!

在学术研究中,通过开展问卷调查获取数据时,调查问卷分为量表题和非量表题。量表题就是测试受访者的态度或者看法的题目,大多采用李克特量表。 李克特量表是一种评分加总式态度量表(attitude scale),由美国…

论文阅读——Slide-Transformer(cvpr2023)

Slide-Transformer: Hierarchical Vision Transformer with Local Self-Attention 一、分析 1、改进transformer的几个思路: (1)将全局感受野控制在较小区域,如:PVT,DAT,使用稀疏全局注意力来…

山西电力市场日前价格预测【2023-12-28】

日前价格预测 预测说明: 如上图所示,预测明日(2023-12-28)山西电力市场全天平均日前电价为814.30元/MWh。其中,最高日前电价为1500.00元/MWh,预计出现在08:00~08:45,17:00~20:15。最低日前电价为394.61元/…

FairyGUI-Cocos Creator官方Demo源码解读

博主在学习Cocos Creator的时候,发现了一款免费的UI编辑器FairyGUI。这款编辑器的能力十分强大,但是网上的学习资源比较少,坑比较多,主要学习方式就是阅读官方文档和练习官方Demo。这里博主进行官方Demo的解读。 从gitee上克隆项目…

Java多线程<二>多线程经典场景

leetcode 多线程刷题 上锁上一次,还是上多次? 同步的顺序。 1. 交替打印字符 使用sychronize同步锁使用lock锁使用concurrent的默认机制使用volitale关键字 Thread.sleep() / Thread.yield机制使用automic原子类 方式1 :使用互斥访问st…

Linux上管理不同版本的 JDK

当在 Linux 上管理不同版本的 JDK 时,使用 yum 和 dnf 可以方便地安装和切换不同的 JDK 版本。本文将介绍如何通过这两个包管理工具安装 JDK 1.8 和 JDK 11,并利用软连接动态关联这些版本。 安装 JDK 1.8 和 JDK 11 使用 yum 安装 JDK 1.8 打开终端并…

Linux 内存数据 Metrics 指标解读

过去从未仔细了解过使用 free、top 等命令时显式的内存信息,只关注了已用内存 / 可用内存。本文我们详解解读和标注一下各个数据项的含义,同时和 Ganglia 显式的数据做一个映射。开始前介绍一个小知识,很多查看内存的命令行工具都是 cat /pro…

Pytorch框架基础

参考资料 pytorch框架基础 Pycharm 页面卡住解决方案 使用ps命令结合grep来查找PyCharm相关的进程 ps aux | grep pycharm kill -9 [PID]关于怎么找这个卡住的进程,据初步观察,卡住进程打印的信息是最长的,此外,在卡住进程的打…

贪心算法—会议安排

与其明天开始,不如现在行动! 文章目录 1 安排会议1 题目描述2 解决思路3 代码实现 💎总结 1 安排会议 1 题目描述 一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。 给你每一个项目开始的时间和结束的时间 你来…

MendelianRandomization | 孟德尔随机化神包更新啦!~(一)(小试牛刀)

1写在前面 今天发现MendelianRandomization包更新v0.9了。😜 其实也算不上更新。🫠 跟大家一起分享一下这个包做MR的用法吧。🤩 还有一个包就是TwoSampleMR,大家有兴趣可以去学一下。😅 2用到的包 rm(list ls())# ins…

壮志酬筹>业务被裁>副业转正>收入回正。一个前黑马程序员老师的2023

从年初时的踌躇满志,到年中时整个业务线被砍。全职做前端训练营,四个多月的时间帮助100多名同学拿到了满意的offer,同时也让我的收入重归正轨。仅以这个视频记录我,一个普通程序员的 2023 。 视频版可直接访问 Hello,大…

【年度征文】回顾2023,迎接2024

转眼一年~~2023又到年底了,CSDN年度征文如约而至!不知不觉又在CSDN平台写了488篇博文,非常感谢CSDN提供的平台,同时也感谢关注和支持博主的粉丝们,在马上到来新的一年里,我会继续努力!也非常感谢…

mysql突然找不到,任务管理器里也没有了(图文详细解决)

右键开始键,选终端(管理员) 2.点↓的命令提示符,进到以管理员打开命令指示符 3.输入命令: mysqld.exe -install 如果出现这个Service successfully installed. 就代表成功了 4.输入: net start mysql MySO…

如何解决“电脑缺失msvcp110.dll”错误,msvcp110.dll文件解决方法

“msvcr110.dll丢失”。那么,msvcr110.dlll丢失到底是什么意思呢?它对我们的电脑有什么影响?本文将详细介绍msvcr110.dll的作用以及msvcr110.dll丢失对电脑的影响,并提供5个解决方案来解决这个问题。 一、msvcr110.dll的作用 ms…

【三维目标检测/自动驾驶】IA-BEV:基于结构先验和自增强学习的实例感知三维目标检测(AAAI 2024)

系列文章目录 论文:Instance-aware Multi-Camera 3D Object Detection with Structural Priors Mining and Self-Boosting Learning 地址:https://arxiv.org/pdf/2312.08004.pdf 来源:复旦大学 英特尔Shanghai Key Lab /美团 文章目录 系列文…

交互式笔记Jupyter Notebook本地部署并实现公网远程访问内网服务器

最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 1.前言2.Jupyter Notebook的安装2.1 Jupyter Notebook下…

Java guava partition方法拆分集合自定义集合拆分方法

日常开发中&#xff0c;经常遇到拆分集合处理的场景&#xff0c;现在记录2中拆分集合的方法。 1. 使用Guava包提供的集合操作工具栏 Lists.partition()方法拆分 首先&#xff0c;引入maven依赖 <dependency><groupId>com.google.guava</groupId><artifa…

Leetcode算法系列| 10. 正则表达式匹配

目录 1.题目2.题解C# 解法一&#xff1a;分段匹配法C# 解法二&#xff1a;回溯法C# 解法三&#xff1a;动态规划 1.题目 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 1.‘.’ 匹配任意单个字符 2.‘.’ 匹配任意单个字…

SimpleCG小游戏开发系列(2)--贪吃蛇

一、前言 在之前的C语言小游戏开发系列我们已经介绍了扫雷游戏的开发&#xff0c;本篇我们继续此系列第二篇&#xff0c;同样是比较简单但好玩的一个游戏--贪吃蛇。因为有了之前的游戏框架&#xff0c;我们只需要直接搬来原来的框架即可&#xff0c;可以省去不少活。 先看看游…

布隆过滤器-使用原理和场景

一、概述 布隆过滤器&#xff08;Bloom Filter&#xff09;主要用来检索一个元素是否在一个集合中。它是一种数据结构bitMap,优点是高效的插入和查询&#xff0c;而且非常节省空间。缺点是存在误判率和删除困难。 二、应用场景 1、避免缓存穿透&#xff0c;当redis做缓…