Add saturation statistic
This commit is contained in:
+10
-1
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user