Optimize calculating stast for debayer

This commit is contained in:
2023-11-15 10:13:49 +01:00
parent 35d5934227
commit 5c6df4a59f
+13 -3
View File
@@ -177,10 +177,20 @@ void calcStats(const T *data, size_t n, size_t w, RawImage::Stats &stats)
statsFunc(data[i*ch + 1], 1);
statsFunc(data[i*ch + 2], 2);
}
if constexpr(ch == 1)
}
if constexpr(ch == 1)
{
size_t h = (n / w) & (SIZE_MAX-1);
w &= (SIZE_MAX-1);
for(size_t y=0; y<h; y+=2)
{
int bayer = (i % w & 1) + (i / w & 1) + 1;
statsFunc(data[i], bayer);
for(size_t x=0; x<w; x+=2)
{
statsFunc(data[y*w+x], 1);
statsFunc(data[y*w+x+1], 2);
statsFunc(data[(y+1)*w+x], 2);
statsFunc(data[(y+1)*w+x+1], 3);
}
}
}