From 0f60d084c36dcd21a951d7325e4c5999a3d3806f Mon Sep 17 00:00:00 2001 From: Mederic Fourmy <mederic.fourmy@gmail.com> Date: Mon, 25 Apr 2022 10:57:22 +0200 Subject: [PATCH] Add CLAHE preproc option to the processor --- demos/processor_visual_odometry.yaml | 5 +++++ include/vision/processor/processor_visual_odometry.h | 4 ++++ src/processor/processor_visual_odometry.cpp | 10 ++++++---- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/demos/processor_visual_odometry.yaml b/demos/processor_visual_odometry.yaml index dc256ca93..017dde68c 100644 --- a/demos/processor_visual_odometry.yaml +++ b/demos/processor_visual_odometry.yaml @@ -14,6 +14,11 @@ max_new_features: 100 #################################### # ProcessorVisualOdometry parameters + +# CLAHE = Contrast Limited Adaptive Histogram Equalization +# -> more continuous lighting and higher contrast images, 1-1.5 ms overhead +use_clahe: true + # FAST KeyPoint detection fast_params: # Threshold on the keypoint pixel intensity (in uchar [0-255]) diff --git a/include/vision/processor/processor_visual_odometry.h b/include/vision/processor/processor_visual_odometry.h index 8544e39ed..2a526b4f3 100644 --- a/include/vision/processor/processor_visual_odometry.h +++ b/include/vision/processor/processor_visual_odometry.h @@ -82,6 +82,7 @@ struct ParamsProcessorVisualOdometry : public ParamsProcessorTracker }; double std_pix_; + bool use_clahe_; RansacParams ransac_params_; KltParams klt_params_; FastParams fast_params_; @@ -95,6 +96,8 @@ struct ParamsProcessorVisualOdometry : public ParamsProcessorTracker { std_pix_ = _server.getParam<int>(prefix + _unique_name + "/std_pix"); + use_clahe_ = _server.getParam<bool>(prefix + _unique_name + "/use_clahe"); + ransac_params_.ransac_prob_ = _server.getParam<double>(prefix + _unique_name + "/ransac_params/ransac_prob"); ransac_params_.ransac_thresh_ = _server.getParam<double>(prefix + _unique_name + "/ransac_params/ransac_thresh"); @@ -119,6 +122,7 @@ struct ParamsProcessorVisualOdometry : public ParamsProcessorTracker std::string print() const override { return ParamsProcessorTracker::print() + "\n" + + "use_clahe_: " + std::to_string(use_clahe_) + "\n" + "ransac_params_.ransac_prob_: " + std::to_string(ransac_params_.ransac_prob_) + "\n" + "ransac_params_.ransac_thresh_: " + std::to_string(ransac_params_.ransac_thresh_) + "\n" + "klt_params_.tracker_width_: " + std::to_string(klt_params_.patch_width_) + "\n" diff --git a/src/processor/processor_visual_odometry.cpp b/src/processor/processor_visual_odometry.cpp index cf33dbcdf..ca1617787 100644 --- a/src/processor/processor_visual_odometry.cpp +++ b/src/processor/processor_visual_odometry.cpp @@ -86,10 +86,12 @@ void ProcessorVisualOdometry::preProcess() cv::Mat img_incoming = capture_image_incoming_->getImage(); - // Adaptive Histogram Correction to get more continuous lighting and higher contrast - // Seems to give better tracking but a bit slow, TOBENCHMARK - // cv::Ptr<cv::CLAHE> clahe = cv::createCLAHE(2.0, cv::Size(8,8)); - // clahe->apply(img_incoming, img_incoming); + if (params_visual_odometry_->use_clahe_){ + // Contrast Limited Adaptive Histogram Equalization + // -> more continuous lighting and higher contrast images + cv::Ptr<cv::CLAHE> clahe = cv::createCLAHE(2.0, cv::Size(8,8)); + clahe->apply(img_incoming, img_incoming); + } // Time to PREPreprocess the image if necessary: greyscale if BGR, CLAHE etc... -- GitLab