Initial autostretch
This commit is contained in:
+25
-3
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user