From bdcd4c34fc8feebbd6ee49ea4436671b8a4edb07 Mon Sep 17 00:00:00 2001 From: lumina37 Date: Sun, 22 Sep 2024 22:56:41 +0800 Subject: [PATCH] perf(quality): reduce buffer usage Reduce the buffer usage in `QualitySSIM::compute` by reusing `I1_I2`, `mu1_mu2` and `sigma12`. --- modules/quality/src/qualityssim.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/quality/src/qualityssim.cpp b/modules/quality/src/qualityssim.cpp index b8008b72278..921f5a9970c 100644 --- a/modules/quality/src/qualityssim.cpp +++ b/modules/quality/src/qualityssim.cpp @@ -78,9 +78,6 @@ std::pair QualitySSIM::_mat_data::compute(const _mat_data mat_type I1_I2 , mu1_mu2 - , t1 - , t2 - , t3 , sigma12 ; @@ -89,13 +86,16 @@ std::pair QualitySSIM::_mat_data::compute(const _mat_data cv::subtract(::blur(I1_I2), mu1_mu2, sigma12); // t3 = ((2*mu1_mu2 + C1).*(2*sigma12 + C2)) + mat_type& t1 = I1_I2; cv::multiply(mu1_mu2, 2., t1); cv::add(t1, C1, t1);// t1 += C1 + mat_type& t2 = mu1_mu2; cv::multiply(sigma12, 2., t2); cv::add(t2, C2, t2);// t2 += C2 // t3 = t1 * t2 + mat_type& t3 = sigma12; cv::multiply(t1, t2, t3); // t1 =((mu1_2 + mu2_2 + C1).*(sigma1_2 + sigma2_2 + C2))