Show stats for each channel

This commit is contained in:
2023-09-30 23:13:02 +02:00
parent 5955a02175
commit e8630330b2
2 changed files with 25 additions and 9 deletions
+15
View File
@@ -406,6 +406,8 @@ void LoadRunable::run()
rawImage->calcStats();
const RawImage::Stats &stats = rawImage->imageStats();
qDebug() << "image stats" << timer.restart();
if(rawImage->channels() == 1)
{
info.info.append({QObject::tr("Mean"), QString::number(stats.m_mean[0])});
info.info.append({QObject::tr("Standart deviation"), QString::number(stats.m_stdDev[0])});
info.info.append({QObject::tr("Median"), QString::number(stats.m_median[0])});
@@ -413,6 +415,19 @@ void LoadRunable::run()
info.info.append({QObject::tr("Maximum"), QString::number(stats.m_max[0])});
info.info.append({QObject::tr("MAD"), QString::number(stats.m_mad[0])});
info.info.append({QObject::tr("Saturated"), QString::number(100.0 * stats.m_saturated[0] / rawImage->size()) + "%"});
}
else
{
info.info.append({QObject::tr("Mean"), QString("%1 %2 %3").arg(stats.m_mean[0]).arg(stats.m_mean[1]).arg(stats.m_mean[2])});
info.info.append({QObject::tr("Standart deviation"), QString("%1 %2 %3").arg(stats.m_stdDev[0]).arg(stats.m_stdDev[1]).arg(stats.m_stdDev[2])});
info.info.append({QObject::tr("Median"), QString("%1 %2 %3").arg(stats.m_median[0]).arg(stats.m_median[1]).arg(stats.m_median[2])});
info.info.append({QObject::tr("Minimum"), QString("%1 %2 %3").arg(stats.m_min[0]).arg(stats.m_min[1]).arg(stats.m_min[2])});
info.info.append({QObject::tr("Maximum"), QString("%1 %2 %3").arg(stats.m_max[0]).arg(stats.m_max[1]).arg(stats.m_max[2])});
info.info.append({QObject::tr("MAD"), QString("%1 %2 %3").arg(stats.m_mad[0]).arg(stats.m_mad[1]).arg(stats.m_mad[2])});
info.info.append({QObject::tr("Saturated"), QString("%1 %2 %3%").arg(100.0 * stats.m_saturated[0] / rawImage->size())
.arg(100.0 * stats.m_saturated[1] / rawImage->size())
.arg(100.0 * stats.m_saturated[2] / rawImage->size())});
}
if(m_analyzeLevel >= Peaks)
{
+3 -2
View File
@@ -165,7 +165,7 @@ void calcStats(const T *data, size_t n, RawImage::Stats &stats)
for(size_t i = 0; i < n; i++)
{
statsFunc(data[i*ch], 0);
if constexpr(ch == 4)
if constexpr(ch >= 3)
{
statsFunc(data[i*ch + 1], 1);
statsFunc(data[i*ch + 2], 2);
@@ -181,8 +181,9 @@ void calcStats(const T *data, size_t n, RawImage::Stats &stats)
double sum2 = (double)sum[i] * sum[i];
stats.m_stdDev[i] = std::sqrt((sumSq[i] - sum2 / n) / (n - 1));
uint32_t median = findMedian(histogram[0]);
uint32_t median = findMedian(histogram[i]);
stats.m_median[i] = median;
qDebug() << i << median << median / 65535;
uint32_t madHist[65536] = {0};
madHist[0] = histogram[i][median];
for(size_t o = 1; o < histSize; o++)