From 72838e34d281a1a35c9f9a81e630899f7eb2fc33 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Tue, 5 May 2020 12:56:44 +0300 Subject: [PATCH] Tune Variance weighted hierarchical census --- lib/libstereo/middlebury/main.cpp | 4 ++++ lib/libstereo/src/algorithms/hcensussgm.cu | 8 +++++--- lib/libstereo/src/costs/dual.hpp | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/libstereo/middlebury/main.cpp b/lib/libstereo/middlebury/main.cpp index 40cd2ec4a..2c05c3c72 100644 --- a/lib/libstereo/middlebury/main.cpp +++ b/lib/libstereo/middlebury/main.cpp @@ -90,6 +90,8 @@ static void run_hcensussgm(MiddleburyData &data, cv::Mat &disparity) { stereo.params.subpixel = 1; stereo.params.lr_consistency = true; stereo.params.debug = false; + stereo.params.alpha = 0.5f; + stereo.params.beta = 1.0f; stereo.compute(data.imL, data.imR, disparity); } @@ -104,6 +106,8 @@ static void run_hgcensussgm(MiddleburyData &data, cv::Mat &disparity) { stereo.params.lr_consistency = true; stereo.params.debug = false; stereo.params.pattern = CensusPattern::GENERALISED; + stereo.params.alpha = 0.5f; + stereo.params.beta = 1.0f; stereo.compute(data.imL, data.imR, disparity); } diff --git a/lib/libstereo/src/algorithms/hcensussgm.cu b/lib/libstereo/src/algorithms/hcensussgm.cu index e8c8b000b..420f22f53 100644 --- a/lib/libstereo/src/algorithms/hcensussgm.cu +++ b/lib/libstereo/src/algorithms/hcensussgm.cu @@ -97,16 +97,18 @@ void StereoHierCensusSgm::compute(cv::InputArray l, cv::InputArray r, cv::Output variance_mask(impl_->l.toGpuMat(), var_fine, params.var_window); cv::cuda::normalize(var_fine, var_fine, params.alpha, params.beta, cv::NORM_MINMAX, -1); - cv::cuda::GpuMat var_medium = impl_->var_medium.toGpuMat(); + cv::cuda::GpuMat var_medium; // = impl_->var_medium.toGpuMat(); variance_mask(medium_l.toGpuMat(), var_medium, params.var_window); cv::cuda::normalize(var_medium, var_medium, params.alpha, params.beta, cv::NORM_MINMAX, -1); + cv::cuda::resize(var_medium, impl_->var_medium.toGpuMat(), cv::Size(l.cols(), l.rows())); - cv::cuda::GpuMat var_coarse = impl_->var_coarse.toGpuMat(); + cv::cuda::GpuMat var_coarse; // = impl_->var_coarse.toGpuMat(); variance_mask(coarse_l.toGpuMat(), var_coarse, params.var_window); cv::cuda::normalize(var_coarse, var_coarse, params.alpha, params.beta, cv::NORM_MINMAX, -1); + cv::cuda::resize(var_coarse, impl_->var_coarse.toGpuMat(), cv::Size(l.cols(), l.rows())); cv::Mat tmp; - var_fine.download(tmp); + impl_->var_coarse.toGpuMat().download(tmp); cv::imshow("Var", tmp); // CT diff --git a/lib/libstereo/src/costs/dual.hpp b/lib/libstereo/src/costs/dual.hpp index cb4942005..1e0a4774d 100644 --- a/lib/libstereo/src/costs/dual.hpp +++ b/lib/libstereo/src/costs/dual.hpp @@ -55,7 +55,7 @@ namespace impl { float pw = 1.0f; #pragma unroll for (int n=0; n<N; ++n) { - float w = 1.0f-weights[n](y,x); + float w = weights[n](y,x); cost += pw*w*float(costs[n](y,x,d)); pw *= 1.0f-w; } -- GitLab