From e8630330b26d547dc8e6dea8c32de50de142c80f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Poizl?= Date: Sat, 30 Sep 2023 23:13:02 +0200 Subject: [PATCH] Show stats for each channel --- loadrunable.cpp | 29 ++++++++++++++++++++++------- rawimage.cpp | 5 +++-- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/loadrunable.cpp b/loadrunable.cpp index 00f2cd8..095fd76 100644 --- a/loadrunable.cpp +++ b/loadrunable.cpp @@ -406,13 +406,28 @@ void LoadRunable::run() rawImage->calcStats(); const RawImage::Stats &stats = rawImage->imageStats(); qDebug() << "image stats" << timer.restart(); - 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])}); - info.info.append({QObject::tr("Minimum"), QString::number(stats.m_min[0])}); - 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()) + "%"}); + 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])}); + info.info.append({QObject::tr("Minimum"), QString::number(stats.m_min[0])}); + 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) { diff --git a/rawimage.cpp b/rawimage.cpp index 495c98f..7f9f015 100644 --- a/rawimage.cpp +++ b/rawimage.cpp @@ -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++)