From 19a3c41e1851e81d4fdc27560389379dfa0487ae Mon Sep 17 00:00:00 2001 From: Sebastian Hahta <joseha@utu.fi> Date: Fri, 1 Nov 2019 13:05:28 +0200 Subject: [PATCH] off filter: gpumat --- components/rgbd-sources/include/ftl/offilter.hpp | 1 + components/rgbd-sources/src/algorithms/fixstars_sgm.cpp | 7 ++++++- components/rgbd-sources/src/offilter.cpp | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/components/rgbd-sources/include/ftl/offilter.hpp b/components/rgbd-sources/include/ftl/offilter.hpp index 6aece39aa..0e273d80d 100644 --- a/components/rgbd-sources/include/ftl/offilter.hpp +++ b/components/rgbd-sources/include/ftl/offilter.hpp @@ -17,6 +17,7 @@ public: OFDisparityFilter() : n_max_(0), threshold_(0.0) {} OFDisparityFilter(cv::Size size, int n_frames, float threshold); void filter(ftl::rgbd::Frame &frame, cv::cuda::Stream &stream); + void filter(cv::cuda::GpuMat &disp, cv::cuda::GpuMat &optflow, cv::cuda::Stream &stream); private: int n_max_; diff --git a/components/rgbd-sources/src/algorithms/fixstars_sgm.cpp b/components/rgbd-sources/src/algorithms/fixstars_sgm.cpp index a8a4982c7..9052f3540 100644 --- a/components/rgbd-sources/src/algorithms/fixstars_sgm.cpp +++ b/components/rgbd-sources/src/algorithms/fixstars_sgm.cpp @@ -154,6 +154,7 @@ bool FixstarsSGM::updateOFDisparityFilter() { } if (enable) { + LOG(INFO) << "Optical flow filter, size: " << off_size << ", threshold: " << off_threshold; off_ = ftl::rgbd::OFDisparityFilter(size_, off_size, off_threshold); use_off_ = true; } @@ -206,7 +207,11 @@ void FixstarsSGM::compute(ftl::rgbd::Frame &frame, cv::cuda::Stream &stream) cv::cuda::threshold(dispt_, dispt_, 4096.0f, 0.0f, cv::THRESH_TOZERO_INV, stream); #ifdef HAVE_OPTFLOW - if (use_off_) { off_.filter(frame, stream); } + if (use_off_) { + frame.upload(Channel::Flow, stream); + stream.waitForCompletion(); + off_.filter(dispt_, frame.get<GpuMat>(Channel::Flow), stream); + } #endif // TODO: filter could be applied after upscaling (to the upscaled disparity image) diff --git a/components/rgbd-sources/src/offilter.cpp b/components/rgbd-sources/src/offilter.cpp index 34c01c1fe..832ed467a 100644 --- a/components/rgbd-sources/src/offilter.cpp +++ b/components/rgbd-sources/src/offilter.cpp @@ -39,4 +39,9 @@ void OFDisparityFilter::filter(ftl::rgbd::Frame &frame, cv::cuda::Stream &stream ftl::cuda::optflow_filter(disp, optflow, disp_old_, n_max_, threshold_, stream); } +void OFDisparityFilter::filter(cv::cuda::GpuMat &disp, cv::cuda::GpuMat &optflow, cv::cuda::Stream &stream) +{ + ftl::cuda::optflow_filter(disp, optflow, disp_old_, n_max_, threshold_, stream); +} + #endif // HAVE_OPTFLOW -- GitLab