From eb307ea091ede87b6c4670763b4582f00f13b2b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Poizl?= Date: Sat, 28 Sep 2019 12:27:38 +0200 Subject: [PATCH] Optimize median calculation --- rawimage.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/rawimage.h b/rawimage.h index 0ff1f8e..db2c34e 100644 --- a/rawimage.h +++ b/rawimage.h @@ -84,6 +84,9 @@ public: uint64_t sqrSum = 0; uint64_t tMin = UINT64_MAX; uint64_t tMax = 0; + uint32_t histogram[65536]; + memset(histogram, 0, sizeof(histogram)); + const int shift = sizeof(T)>2 ? sizeof(T)*8 - 16 : 0; for(T i : m_img) { @@ -91,6 +94,7 @@ public: sqrSum += i*i; tMin = tMin>i ? i : tMin; tMax = tMax>shift]++; } if(mean)*mean = sum/m_img.size(); @@ -98,14 +102,9 @@ public: if(max)*max = tMax; if(stdDev)*stdDev = sqrt((sqrSum - (double)sum*sum/m_img.size()) / (double)(m_img.size()-1)); - const int shift = sizeof(T)>2 ? sizeof(T)*8 - 16 : 0; if(median) { - uint32_t histogram[65536]; - memset(histogram, 0, sizeof(histogram)); - for(T i : m_img) - histogram[i>>shift]++; size_t medianSum = 0; for(int i=0;i<65536;i++) {