Add saturation statistic

This commit is contained in:
2022-12-28 14:43:47 +01:00
parent fd49ba9a44
commit 468bcb5abb
6 changed files with 30 additions and 5 deletions
+10 -1
View File
@@ -3,6 +3,7 @@
int THUMB_SIZE = 128;
int THUMB_SIZE_BORDER = 138;
int THUMB_SIZE_BORDER_Y = 158;
double SATURATION = 0.95;
RawImage::ImgType CV2Type(int cvtype)
{
@@ -84,6 +85,7 @@ RawImage::RawImage(const RawImage &d)
m_max = d.m_max;
m_mad = d.m_mad;
m_stats = d.m_stats;
m_saturated = d.m_saturated;
}
RawImage::RawImage(const QImage &img)
@@ -126,7 +128,7 @@ RawImage::RawImage(const QImage &img)
m_stats = false;
}
bool RawImage::imageStats(double *mean, double *stdDev, double *median, double *min, double *max, double *mad)
bool RawImage::imageStats(double *mean, double *stdDev, double *median, double *min, double *max, double *mad, uint32_t *saturated)
{
if(!m_stats)calcStats();
if(mean)*mean = m_mean;
@@ -135,6 +137,7 @@ bool RawImage::imageStats(double *mean, double *stdDev, double *median, double *
if(min)*min = m_min;
if(max)*max = m_max;
if(mad)*mad = m_mad;
if(saturated)*saturated = m_saturated;
return true;
}
@@ -176,6 +179,12 @@ void RawImage::calcStats()
}
}
if(img.type() == CV_32F)m_median /= histSize;
int threshold = SATURATION * histSize;
m_saturated = 0;
for(int i = histSize-1; i >= threshold; i--)
m_saturated += hist.at<float>(0, i);
cv::Mat absDev;
img.convertTo(absDev, CV_32F, 1, -m_median);
absDev = cv::abs(absDev);