Initial autostretch

This commit is contained in:
2021-09-11 11:37:54 +02:00
parent f173e48a26
commit 206e1dd393
8 changed files with 117 additions and 24 deletions
+25 -3
View File
@@ -1,5 +1,7 @@
#include "stretchpanel.h"
#include <QVBoxLayout>
#include "imageringlist.h"
#include <QDebug>
StretchPanel::StretchPanel(QWidget *parent) : QWidget(parent)
{
@@ -33,6 +35,24 @@ StretchPanel::StretchPanel(QWidget *parent) : QWidget(parent)
connect(m_stretchSelect, SIGNAL(activated(int)), this, SLOT(calculateParam()));
}
void StretchPanel::imageLoaded(Image *img)
{
if(img)
{
if(img->rawImage())
{
double mean, stdDev, median;
img->rawImage()->imageStats(&mean, &stdDev, &median, nullptr, nullptr);
double mad = img->rawImage()->MAD();
float l = median - mad;
m_lowSlider->setValue(l);
float p = std::log(0.25)/std::log(mean/UINT16_MAX);
m_paramSlider->setValue(p * UINT16_MAX);
qDebug() << "Low" << l << p;
}
}
}
void StretchPanel::calculateParam()
{
float val = m_paramSlider->value();
@@ -40,14 +60,16 @@ void StretchPanel::calculateParam()
switch(m_stretchSelect->currentIndex())
{
case 2:
param = val*100/UINT16_MAX;
param = val/UINT16_MAX;
param = 1.0f / (param * 5.0f + 1);
break;
case 3:
param = val;
break;
case 4:
val += 100;
param = val/100.0f;
param = 1.0f/std::max(0.00001f, 1.0f-(val/UINT16_MAX));
//val += 100;
//param = val/100.0f;
break;
default:
return;