Skip to content
Snippets Groups Projects
Commit 72838e34 authored by Nicolas Pope's avatar Nicolas Pope
Browse files

Tune Variance weighted hierarchical census

parent 6edc2ced
No related branches found
No related tags found
2 merge requests!347Feature buckets experiment,!300Implement experimental SGM algorithms
Pipeline #25898 passed
...@@ -90,6 +90,8 @@ static void run_hcensussgm(MiddleburyData &data, cv::Mat &disparity) { ...@@ -90,6 +90,8 @@ static void run_hcensussgm(MiddleburyData &data, cv::Mat &disparity) {
stereo.params.subpixel = 1; stereo.params.subpixel = 1;
stereo.params.lr_consistency = true; stereo.params.lr_consistency = true;
stereo.params.debug = false; stereo.params.debug = false;
stereo.params.alpha = 0.5f;
stereo.params.beta = 1.0f;
stereo.compute(data.imL, data.imR, disparity); stereo.compute(data.imL, data.imR, disparity);
} }
...@@ -104,6 +106,8 @@ static void run_hgcensussgm(MiddleburyData &data, cv::Mat &disparity) { ...@@ -104,6 +106,8 @@ static void run_hgcensussgm(MiddleburyData &data, cv::Mat &disparity) {
stereo.params.lr_consistency = true; stereo.params.lr_consistency = true;
stereo.params.debug = false; stereo.params.debug = false;
stereo.params.pattern = CensusPattern::GENERALISED; stereo.params.pattern = CensusPattern::GENERALISED;
stereo.params.alpha = 0.5f;
stereo.params.beta = 1.0f;
stereo.compute(data.imL, data.imR, disparity); stereo.compute(data.imL, data.imR, disparity);
} }
......
...@@ -97,16 +97,18 @@ void StereoHierCensusSgm::compute(cv::InputArray l, cv::InputArray r, cv::Output ...@@ -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); 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::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); 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::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); 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::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; cv::Mat tmp;
var_fine.download(tmp); impl_->var_coarse.toGpuMat().download(tmp);
cv::imshow("Var", tmp); cv::imshow("Var", tmp);
// CT // CT
......
...@@ -55,7 +55,7 @@ namespace impl { ...@@ -55,7 +55,7 @@ namespace impl {
float pw = 1.0f; float pw = 1.0f;
#pragma unroll #pragma unroll
for (int n=0; n<N; ++n) { 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)); cost += pw*w*float(costs[n](y,x,d));
pw *= 1.0f-w; pw *= 1.0f-w;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment