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.hqwc.cn/news/308164.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用Docker将.Net6项目部署到Linux服务器(三)

目录 四 安装nginx 4.1 官网下载nginx 4.2 下载解压安装nginx 4.3 进行configure 4.4 执行make 4.5 查看nginx是否安装成功 4.6 nginx的一些常用命令 4.6.1 启动nginx 4.6.2 通过命令查看nginx是否启动成功 4.6.3 关闭Nginx 4.6.5 重启Nginx 4.6.6 杀掉所有Nginx进程 4.…

Macos多协议远程管理---Termius中文

Termius是一款跨平台的终端管理工具,支持Windows、macOS、Linux、iOS和Android等多个操作系统。它提供了一个友好的用户界面和强大的功能,使用户能够远程连接和管理服务器。Termius的基本功能包括终端连接、SSH隧道、文件传输、组织和标记、快捷方式和别…

Transformer(seq2seq、self-attention)学习笔记

在self-attention 基础上记录一篇Transformer学习笔记 Transformer的网络结构EncoderDecoder 模型训练与评估 Transformer的网络结构 Transformer是一种seq2seq 模型。输入一个序列,经过encoder、decoder输出结果也是一个序列,输出序列的长度由模型决定…

【Bootstrap学习 day4】

Bootstrap5 列表组 使用Bootstrap创建列表 可以创建三种不类型的HTML列表: 无序列表—顺序无关紧要的项目列表。无序列表中的列表标有项目符号,例如。、等ul>li有序列表—顺序确实很重要的项目列表。有序列表中的列表项用数字标记,例如1、…

Hbase详解

Hbase 概念 base 是分布式、面向列的开源数据库(其实准确的说是面向列族)。HDFS 为 Hbase 提供可靠的底层数据存储服务,MapReduce 为 Hbase 提供高性能的计算能力,Zookeeper 为 Hbase 提供稳定服务和 Failover 机制,…

Android Camera

1. 相关的API Android有三套关于摄像头的API(库),分别是Camera、Camera2和CameraX,其中Camera已废弃,在Android5.0以后推荐使用Camera2和CameraX,Camera2推出是用来替换Camera的,它拥有丰富的API可以为复杂的用例提供…

【Python篇】python库讲解(wordcloud | jieba)

文章目录 🍔jieba库🍔wordcloud库🌹解释 🍔jieba库 jieba库是一个流行的中文分词工具,它基于统计算法和词频字典,能够将连续的汉字序列切割成有意义的词语。下面是对jieba库的简要理论说明: 分…

扭蛋机小程序搭建:打造互联网“流量池”

随着互联网科技的发展,扭蛋机小程序成为了市场发展的重要力量。 扭蛋机市从日本发展流行起来的,玩法就是根据设置的概率,让玩家体验扭蛋机的乐趣。扭蛋机中有隐藏款和稀有款,为了获得稀有款商品,玩家便会进行扭蛋&…

PiflowX组件-ReadFromKafka

ReadFromKafka组件 组件说明 从kafka中读取数据。 计算引擎 flink 有界性 Unbounded 组件分组 kafka 端口 Inport:默认端口 outport:默认端口 组件属性 名称展示名称默认值允许值是否必填描述例子kafka_hostKAFKA_HOST“”无是逗号分隔的Ka…

nodejs微信小程序+python+PHP的林业信息管理系统的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set问题解决方案

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set问题解决方案 当我们使用sudo su切换权限时提示错误: sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set该错误出现原因:是因为/usr/bin/sudo的权限被…

软件测试面试笔记分享(含文档)

大家好,最近有不少小伙伴在后台留言,得准备年后面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到…