middlebury立体匹配评估使用方法总结(二)——python版离线教程

news/2024/7/21 3:48:38 标签: opencv, 图像处理

系列文章目录

middlebury立体匹配评估使用方法总结(一)——网站说明
middlebury立体匹配评估使用方法总结(二)——python版离线教程


文章目录

  • 系列文章目录
  • 前言
    • 1.下载内容
    • 2.配置环境
    • 3.elas编译
    • 4. 运行评估
  • 总结


前言

  最近想使用middlebury数据集测一下算法的效果如何,奈何网上没有完整的搭建middlebury离线环境的教程,自己查阅资料和阅读官方readme文档总结如下教程。
推荐两个博主的文章,非常有用。
windows下Middlebury离线工具使用(补充)
立体视觉数据集之MiddleBury离线使用踩坑记录(Windows+Cygwin)


1.下载内容

进入middlebury官网
请添加图片描述
README.txt可以查看官方给的方案。
在这里插入图片描述
1、,下载并解压MiddleEval3-data-Q.zip(原始图片及校正参数)、MiddleEval3-GT0-Q.zip(标准视差图)。(F、H、Q代表了三个不同的分辨率,按照自己的需要下载不同分辨率的图片,也可以都下载下来,一共15组,没多大),解压到同一个文件夹下,合并起来就跟说明书里面的contents部分的结构一样了。
在这里插入图片描述

2、下载MiddEval3-SDK-1.6.zip(离线评测工具),是一些由c++代码和shell脚本组成的SDK,可以在windows环境下运行,能够在所有数据集上运行算法,评估训练集结果,和为结果创建压缩文件以及上传。进行检测需要使用后缀为.pfg的PFM格式的视差图像(算法处理后的结果图)。
在这里插入图片描述

3、下载cvkit工具包,用于查看.pfm格式的文件。
在这里插入图片描述

2.配置环境

1、安装cmake
2、安装cygwin(cygwin安装时需要手动选择make和tcsh)
3、安装MinGW(官网下载的MinGW是不包含扩展包的,然而MiddleBury中的使用到了libpng这个扩展包,所以这里分享了一个自带扩展包的MinGW,链接已经在上面了。)
4、分别为cmake、cygwin、MinGM配置环境变量。
在这里插入图片描述

3.elas编译

 官方文档说明
在这里插入图片描述
在middlebury文件夹下cmd执行

cd alg-ELAS/build
cmake ..
make
cd ../..

code/imageLib/ImageIOpng.cpp中的png.h可能会出现找不到的情况,所以需要手动添加如下代码:
路径改成自己的MinGW安装路径

extern "C"{
#include "E:\\MinGW\\MinGW\\include\\png.h"
}

在middlebury文件夹下cmd执行

cd code/imageLib
make
cd ..
make
cd ..

4. 运行评估

  打开cygwin终端 ,参考在 windows 下的某目录中右键打开 cygwin 终端

  输入指令,可以查看相关操作

/.runeval

在这里插入图片描述

  通过python中opencv代码可以获取pfm的视差图,建议直接保存为pfm文件,放到对应的测试文件目录下,即可进行测试。

cv2.imwrite("test.pfm",disp)

在这里插入图片描述
  在cygwin中输入指令,进行测试

./runeval Q Adirondack 1

在这里插入图片描述

总结

mask:(水平/垂直方向上的)非遮挡区域比例
bad1.0 传递的阈值为1的时候,坏点率:即和真实结果在对应像素点位置的值的差距大于阈值的点的比例
invalid 无效点率 ,指的是那些黑色点,匹配失败,灰度为无穷大
totbad 总体坏点,坏点率 + 无效点率
avgErr 平均误差:所有的有效的点和真实结果的点的灰度差的累加和/所有有效点个数

粘贴一下我的文件夹图,大家可以对照一下,看却些什么。
在这里插入图片描述


http://www.niftyadmin.cn/n/11347.html

相关文章

进程创建进程终止进程等待

目录前言一、进程创建1.fork()函数(1)fork()函数的基本认识进程调用fork()函数之后,控制权转移到内核中的fork()代码之后,内核做了啥?(2)实验:使用fork()函数创建进程(3&…

关于HashMap默认容量的选择

HashMap默认容量思量什么是容量容量与哈希hash的实现指定容量初始化扩容思考总结集合是Java开发日常开发中经常会使用到的,而作为一种典型的K-V结构的数据结构,HashMap对于Java开发者一定不陌生。 在日常开发中,经常会像如下方式创建一个Has…

机器学习-回归模型相关重要知识点

目录01 线性回归的假设是什么?02 什么是残差,它如何用于评估回归模型?03 如何区分线性回归模型和非线性回归模型?04 什么是多重共线性,它如何影响模型性能?05 异常值如何影响线性回归模型的性能&#xff1f…

数据监控预警系统,实现不同端信息推送

数据是反映产品和用户状态最真实的一种方式,通过数据指导运营决策,驱动业务增长。数据可分为2种情况:数据监控和数据分析;Wyn嵌入式商业智能软件就提供了完整的数据监控和数据分析能力,下面就为大家进行一个详细介绍。…

用HTML+CSS+JS写的切水果小游戏它来了

前言 切水果游戏曾经是一款风靡手机的休闲游戏,今天要分享的就是一款网页版的切水果游戏, 由HTMLCSSJS实现,虽然功能和原版的相差太大,但基本的功能具备,效果逼真。感兴趣的小伙伴可收藏学习(完整源码在文…

每日一题 —— LC. 891 子序列的宽度之和

891. 子序列的宽度之和 一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums ,返回 nums 的所有非空 子序列 的 宽度之和 。由于答案可能非常大,请返回对 109710^9 71097 取余 后的结果。 子序列 定义为从一个数组里删…

nltk download所需包

众所周知,nltk需要download一些文件才能用,但由于网络不通畅,经常下载不下来。官方链接在这里:点击官方链接 我已经帮大家下载好了必备的几个文件,资源在这里,不必担心网络问题,仅需0积分&…

jenkins 共用宿主机中的docker自动化部署

目录 第一节 jenkins 共用宿主机中的docker自动化部署 1.docker命令安装启动jenkins 2.查询jenkins内是否可以执行宿主机中的docker 第二节.jenkins 配置自动化部署 1.界面配置 1.配置mave 2.配置gitee 第三节 创建springboot多模块项目 1.相关配置 1.pom 2.编写docke…