Newer
Older
#include <ftl/algorithms/opencv_bm.hpp>
using ftl::algorithms::OpenCVBM;
using namespace cv::ximgproc;
using namespace cv;
static ftl::Disparity::Register opencvbm("bm", OpenCVBM::create);
OpenCVBM::OpenCVBM(nlohmann::json &config) : Disparity(config) {
int wsize = config.value("windows_size", 5);
float sigma = config.value("sigma", 1.5);
float lambda = config.value("lambda", 8000.0);
left_matcher_ = StereoBM::create(max_disp_,wsize);
wls_filter_ = createDisparityWLSFilter(left_matcher_);
right_matcher_ = createRightMatcher(left_matcher_);
wls_filter_->setLambda(lambda);
wls_filter_->setSigmaColor(sigma);
}
void OpenCVBM::compute(const cv::Mat &l, const cv::Mat &r, cv::Mat &disp) {
Mat left_disp;
Mat right_disp;

Sebastian Hahta
committed
Mat lg, rg;
cv::cvtColor(l, lg, cv::COLOR_BGR2GRAY);
cv::cvtColor(r, rg, cv::COLOR_BGR2GRAY);
left_matcher_-> compute(lg, rg,left_disp);
right_matcher_->compute(rg, lg, right_disp);
wls_filter_->filter(left_disp, l, disp, right_disp);