diff --git a/lib/libstereo/middlebury/middlebury.cpp b/lib/libstereo/middlebury/middlebury.cpp index a54b4f153ae4cf0813d588626d4c7c71cff9500f..e3136325f1275ba1c1de9983ebeb24b223f71ba8 100644 --- a/lib/libstereo/middlebury/middlebury.cpp +++ b/lib/libstereo/middlebury/middlebury.cpp @@ -169,3 +169,13 @@ MiddEvalResult evaluate(const cv::Mat &disp, const cv::Mat >, const cv::Mat &m result.rms_bad_nonoccl = sqrt(err2_bad/n); return result; } + +void add_noise(cv::Mat &im, double stddev, double mean) { + cv::Mat noise = cv::Mat(im.size(),CV_64FC3); + cv::randn(noise, mean, stddev); + + cv::Mat tmp; + im.convertTo(tmp, CV_64FC3, 1.0/255.0); + tmp += noise; + cv::normalize(tmp, im, 0, 255, cv::NORM_MINMAX, CV_8UC3); +} diff --git a/lib/libstereo/middlebury/middlebury.hpp b/lib/libstereo/middlebury/middlebury.hpp index e2c18e02b736db79a3ed48e4a6f4fdded67764d0..87d9af5d307bb10782a8723cdb728841982c0ab7 100644 --- a/lib/libstereo/middlebury/middlebury.hpp +++ b/lib/libstereo/middlebury/middlebury.hpp @@ -32,3 +32,12 @@ MiddEvalCalib read_calibration(const std::string &filename); MiddEvalResult evaluate(const cv::Mat &disp, const cv::Mat >, const cv::Mat &mask, float threshold=1.0f); cv::Mat read_pfm(const std::string &filename); + +/** + * Add gaussian noise to image. + * + * @param im CV_8UC3 + * @param stddev standar deviation + * @param mean mean for noise + */ +void add_noise(cv::Mat &im, double stddev, double mean=0.0);