博主最近在研究双目测距的实现,要实现对高分辨率的图片进行实时匹配,对立体匹配算法的要求就比较苛刻。经过测试,OpenCV自带的BM、SGBM等算法对小图片的匹配效果还行,但是对高分辨率图片就力所不逮了。于是经过一番折腾,找到了这篇论文《Efficient Large-Scale Stereo Matching》及作者开源发布的源码库,但是发现源码库的example及网上相关资料均只能在VS的x86环境下运行,而受限于某些原因,我又只能在x64环境下运行,最后参考这位大佬的代码:链接,实现了ELAS算法在x64环境下的编译及运行。
代码运行环境:Win10+VS2015+OpenCV3.4.1
/*
ElasMatch的形参必须为灰度图像,因为ELAS算法处理的图像格式为*.pgm,其为灰度图像对应的便携式图像格式。而黑白对应*.pbm格式、彩色对应着*.ppm格式。
*/
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2\opencv.hpp>
#include "elas.h"
using namespace std;
using namespace cv;
int ElasMatch(cv::Mat leftImage, cv::Mat rightImage);
int main() {
Mat left = imread("L.jpg",IMREAD_GRAYSCALE);
Mat right = imread("R.jpg",IMREAD_GRAYSCALE);
ElasMatch(left, right);
waitKey(0);
return 0;
}
int Elas