VS2019下cmake项目:利用ELAS方法计算双目视差

ELAS方法计算双目视差

由于需要用到高精度的双目视差算法,找到了这个算法,为了防止我自己忘记,把它的使用过程,特地记录在这里啦。如果对大家有帮助就更好啦,嘿嘿。。

ELAS是由Andreas Geiger于2010年提出的一种比较新颖的立体匹配算法,全称为《Efficient Large Scale Stereo Matching》。这种算法的优点是对于高分辨率的图像,能够兼顾较高的匹配速度和匹配精度,在许多公开的数据集中ELAS的平均匹配精度十分接近SGM,但是速度却比SGM更快。

ELAS算法的基本流程是:
(1) 对左右图像进行sobel滤波,生成sobel特征图;
(2) 基于sobel特征进行匹配,筛选出其中具有较高置信度的匹配点,作为"support points",即支持点;
(3) 对支持点构建Delaunay三角网格;
(4) 构建立体匹配的概率生成模型;
(5) 基于最大后验概率密度估计(MAP)进行稠密立体匹配,获取初始视差图;
(6) 视差后处理:无效孔洞插值、(自适应)中值滤波、连通域噪声剔除、左右一致性检验。

下面是我具体的使用过程
该算法的代码下载地址为:ELAS下载地址
下载好后,可以利用matlab和vs联合编程,也可直接利用VS运行。

采用VS运行过程如下:

  1. 我使用的是VS2019,选择打开本地文件,选择文件中由CMakeLists.txt文件的根目录,进行添加:

打开本地文件夹选择文件根目录打开
打开
2.加载成功后,选择main.cpp文件运行:main
我在运行过程中,遇到了如下问题:
重定义
经过查询,发现将文件中出现问题的语句改为typedef signed __int8 int8_t;(中间加上signed就运行成功了)。
运行成功
3.由于ELAS算法只能针对pgm格式的图像进行处理,所以我利用了opencv读取JPG格式的图像,在转化为PGM的格式。
A.第一次尝试 (没有成功,可以直接跳至B.第二次尝试)
1)在CMake文件中利用opencv,需要对CMakeLists.txt进行修改:
a.添加OpenCV头文件
b.添加OpenCV的链接库路径
c.在cmake文件配置文件中指定引用的库文件名
a
bc
2)配置好后,重新编译后cmake仍然找不到opencv。

B.第二次尝试
参考了文末的第四篇文章,做出如下改正:

# project
cmake_minimum_required (VERSION 2.6)
project (libelas)
find_package(OpenCV REQUIRED)
# directories
set (LIBELAS_SRC_DIR src)

# include directory
include_directories("${LIBELAS_SRC_DIR}/${OpenCV_INCLUE_DIR}")
include_directories("E:/opencv4.3.0/opencv/build/include")

# use sse3 instruction set
SET(CMAKE_CXX_FLAGS "-msse3")

# sources
FILE(GLOB LIBELAS_SRC_FILES "src/*.cpp")

# make release version
set(CMAKE_BUILD_TYPE Release)

# build demo program
add_executable(elas ${LIBELAS_SRC_FILES})

link_directories("E:/opencv4.3.0/opencv/build/x64/vc15/lib")
target_link_libraries(elas opencv_world430 opencv_world430d)

有以下问题需要注意:
在这里插入图片描述
在对每个CMakeLists.txt的文件进编辑的时候,按下CTRL+S即文件保存的按键,自动触发CMake项目的配置流程,这回终于成功,cmake中找到了OpenCV,可以开始编写自己的程序啦!!!

4.在主函数中编程,将已有的JPG 格式的图像文件批量转化为PGM格式的文件,利用ELAS算法计算双目视差,结果如下图:
原始图像:(左图)
左图
视差图:
视差图

***联合编程过程尝试如下: ***(未成功,可跳过不看)

1.首先打开MATLAB,配置您的 MATLAB MEX C++ 编译器(如果尚未配置)(mex -setup)具体流程可以详见我的另一篇文章:
Matlab2016使用mex命令寻找编辑器Visual Studio2019
2.配置完成后,切换到libelas/matlab目录,运行运行“make.m”后,得到一个名为“elasMex”的 MEX 文件,然后尝试运行“demo.m”,它会打开一个 GUI 并显示包含的测试图像的一些结果。
可惜,我运行到此处,出现了错误(还不知如何更改)
PS:如有人明白问题在哪,恳求赐教,万分感谢!!!

运行结果如下:
在这里插入图片描述在这里插入图片描述
如有错误,欢迎指正,万分感谢

以上参考:详解双目立体匹配算法ELAS
用vs2017的cmake工具为其他项目添加OpenCV库
利用opencv将JPG等格式的文件转化为PGM的函数
Visual Studio 2019 cmake配置opencv开发环境

CMake的具体内容,可以参见下文,讲的比较清楚:
VS2019 C++的跨平台开发——Cmake项目(一)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值