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;
left_matcher_-> compute(l, r,left_disp);
right_matcher_->compute(r,l, right_disp);
wls_filter_->filter(left_disp,l,disp,right_disp);
}