Merged retinex-yoni1 into master

This commit is contained in:
Morgan Hardwood
2015-09-16 20:15:40 +02:00
8 changed files with 126 additions and 163 deletions

View File

@@ -650,6 +650,7 @@ HISTORY_MSG_417;Retinex - Transmission median
HISTORY_MSG_418;Retinex - Threshold
HISTORY_MSG_419;Retinex - Color space
HISTORY_MSG_420;Retinex - Histogram - HSL
HISTORY_MSG_421;Retinex - Gamma
HISTORY_NEWSNAPSHOT;Add
HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
HISTORY_SNAPSHOTS;Snapshots

View File

@@ -22,6 +22,10 @@
namespace rtengine
{
// Aligned so the first entry starts on line 30
enum ProcEvent {
EvPhotoLoaded = 0,
EvProfileLoaded = 1,
@@ -226,7 +230,6 @@ enum ProcEvent {
EvDPDNredchro = 200,
EvDPDNbluechro = 201,
EvDPDNmet = 202,
// EvDPDNperform=201,
EvDemosaicLMMSEIter = 203,
EvCATbadpix = 204,
EvCATAutoAdap = 205,
@@ -278,15 +281,13 @@ enum ProcEvent {
EvDirPyrEqualizerSkin = 251,
EvDirPyrEqlgamutlab = 252,
EvDirPyrEqualizerHueskin = 253,
// EvDirPyrEqualizeralg=254,
EvDPDNmedian = 254,
EvDPDNmedian = 254, // EvDirPyrEqualizeralg=254,
EvDPDNmedmet = 255,
EvColorToningEnabled = 256,
EvColorToningColor = 257,
EvColorToningOpacity = 258,
EvColorToningCLCurve = 259,
EvColorToningCLCurve = 259, // EvColorToningTwocolor=259,
EvColorToningMethod = 260,
// EvColorToningTwocolor=259,
EvColorToningLLCurve = 261,
EvColorToningredlow = 262,
EvColorToninggreenlow = 263,
@@ -444,7 +445,7 @@ enum ProcEvent {
EvRetinexEnabled = 415,
EvRetinexmedianmap = 416,
EvLlimd = 417,
EvretinexColorSpace = 418, //change to 418 if we want a separate history entry "Retinex - Color space"
EvretinexColorSpace = 418, // 418 if we want a separate history entry "Retinex - Color space", 406 if we don't
EvLCDHCurve = 419,
Evretinexgamma = 420,
NUMOFEVENTS
@@ -452,4 +453,3 @@ enum ProcEvent {
}
#endif

View File

@@ -123,10 +123,6 @@ RetinexParams::RetinexParams ()
void RetinexParams::getDefaulttransmissionCurve(std::vector<double> &curve)
{
/* double v[8] = { 0.0, 0.50, 0.35, 0.35,
1.0, 0.50, 0.35, 0.35,
};
*/
double v[12] = { 0.00, 0.25, 0.35, 0.35,
0.60, 0.90, 0.35, 0.35,
1.00, 0.50, 0.35, 0.35,
@@ -141,40 +137,6 @@ void RetinexParams::getDefaulttransmissionCurve(std::vector<double> &curve)
}
}
void RetinexParams::getDefaultCDCurve(std::vector<double> &curve)
{
double v[4] = { 0., 0.,
// 0.25, 0.25,
// 0.5, 0.5,
// 0.75, 0.75,
1., 1.,
};
curve.resize(5);
curve.at(0) = double(DCT_NURBS);
for (size_t i = 1; i < curve.size(); ++i) {
curve.at(i) = v[i - 1];
}
}
void RetinexParams::getDefaultCDHCurve(std::vector<double> &curve)
{
double v[4] = { 0.00, 0.00,
// 0.5, 0.5,
1.0, 1.0,
};
curve.resize(5);
curve.at(0) = double(DCT_NURBS);
for (size_t i = 1; i < curve.size(); ++i) {
curve.at(i) = v[i - 1];
}
}
void RetinexParams::setDefaults()
{
enabled = false;
@@ -185,14 +147,15 @@ void RetinexParams::setDefaults()
offs = 0;
vart = 125;
limd = 8;
getDefaulttransmissionCurve(transmissionCurve);
getDefaultCDCurve(cdcurve);
getDefaultCDHCurve(cdHcurve);
retinexMethod = "high";
retinexcolorspace = "Lab";
gammaretinex = "none";
medianmap = true;
cdcurve.clear();
cdcurve.push_back(DCT_Linear);
cdHcurve.clear();
cdHcurve.push_back(DCT_Linear);
getDefaulttransmissionCurve(transmissionCurve);
}
void RetinexParams::getCurves(RetinextransmissionCurve &transmissionCurveLUT) const

View File

@@ -288,9 +288,6 @@ public:
void getCurves(RetinextransmissionCurve &transmissionCurveLUT) const;
static void getDefaulttransmissionCurve(std::vector<double> &curve);
static void getDefaultCDCurve(std::vector<double> &curve);
static void getDefaultCDHCurve(std::vector<double> &curve);
};

View File

@@ -19,6 +19,13 @@
#include "refreshmap.h"
#include "procevents.h"
// Aligned so the first entry starts on line 30
int refreshmap[rtengine::NUMOFEVENTS] = {
ALL, // EvPhotoLoaded,
ALL, // EvProfileLoaded,
@@ -102,7 +109,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
RESIZE, // EvResizeHeight
RESIZE, // EvResizeEnabled
ALL, // EvProfileChangeNotification
// RETINEX, // EvShrHighQuality
RETINEX, // EvShrHighQuality
TRANSFORM, // EvPerspCorr
DARKFRAME, // EvLCPFile
RGBCURVE, // EvRGBrCurveLumamode
@@ -169,7 +176,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
SHARPENING, // EvSharpenEdgeThreechannels
SHARPENING, // EvSharpenMicroEnabled
SHARPENING, // EvSharpenMicroMatrix
DEMOSAIC, // EvDemosaicALLEnhanced // Disabled but not removed for now, may be reintroduced some day
DEMOSAIC, // EvDemosaicALLEnhanced Disabled but not removed for now, may be reintroduced some day
RGBCURVE, // EvVibranceEnabled
RGBCURVE, // EvVibrancePastels
RGBCURVE, // EvVibranceSaturated
@@ -255,7 +262,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
RGBCURVE, // EvBWAfterCurve
RGBCURVE, // EvBWAfterCurveMode
RGBCURVE, // EvAutoch
NONE, // --unused--
0, // --unused--
RGBCURVE, // EvNeutralBW
TRANSFORM, // EvGradientFeather
TRANSFORM, // EvGradientStrength
@@ -275,14 +282,12 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
DIRPYREQUALIZER, // EvDirPyrEqlgamutlab
DIRPYREQUALIZER, // EvDirPyrEqualizerHueskin
ALLNORAW, // EvDPDNmedian
ALLNORAW, //EvDPDNmedmet
//DIRPYREQUALIZER // EvDirPyrEqualizeralg
ALLNORAW, // EvDPDNmedmet
RGBCURVE, // EvColorToningEnabled
RGBCURVE, // EvColorToningColor
RGBCURVE, // EvColorToningOpacity
RGBCURVE, // EvColorToningCLCurve
RGBCURVE, // EvColorToningMethod
//RGBCURVE, // EvColorToningTwocolor
RGBCURVE, // EvColorToningLLCurve
RGBCURVE, // EvColorToningredlow
RGBCURVE, // EvColorToninggreenlow
@@ -304,27 +309,27 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
RGBCURVE, // EvColorToningHighights
RGBCURVE, // EvColorToningSatProtection
RGBCURVE, // EvColorToningSatThreshold
RGBCURVE, //EvColorToningStrength
RGBCURVE, //EvColorToningautosat
ALLNORAW, //EvDPDNmetmed
ALLNORAW, //EvDPDNrgbmet
ALLNORAW, //EvDPDNpasses
RGBCURVE, // EvColorToningStrength
RGBCURVE, // EvColorToningautosat
ALLNORAW, // EvDPDNmetmed
ALLNORAW, // EvDPDNrgbmet
ALLNORAW, // EvDPDNpasses
FLATFIELD, // EvFlatFieldClipControl
FLATFIELD, // EvFlatFieldAutoClipControl
DARKFRAME, // EvPreProcessExpBlackRed
DARKFRAME, // EvPreProcessExpBlackGreen
DARKFRAME, // EvPreProcessExpBlackBlue
RGBCURVE, //EvFilmSimulationEnabled
RGBCURVE, //EvFilmSimulationStrength
RGBCURVE, //EvFilmSimulationFilename
ALLNORAW, // EvDPDNLCurve
ALLNORAW, // EvDPDNsmet
RGBCURVE, // EvFilmSimulationEnabled
RGBCURVE, // EvFilmSimulationStrength
RGBCURVE, // EvFilmSimulationFilename
ALLNORAW, // EvDPDNLCurve
ALLNORAW, // EvDPDNsmet
DARKFRAME, // EvPreProcessDeadPixel
ALLNORAW, //EvDPDNCCCurve
ALLNORAW, //EvDPDNautochroma
ALLNORAW, // EvDPDNLmet
ALLNORAW, // EvDPDNCmet
ALLNORAW, // EvDPDNC2met
ALLNORAW, // EvDPDNCCCurve
ALLNORAW, // EvDPDNautochroma
ALLNORAW, // EvDPDNLmet
ALLNORAW, // EvDPDNCmet
ALLNORAW, // EvDPDNC2met
DIRPYREQUALIZER, // EvWavelet
DIRPYREQUALIZER, // EvEnabled
DIRPYREQUALIZER, // EvWavLmethod
@@ -365,86 +370,83 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
DIRPYREQUALIZER, // EvWavdaubcoeffmet
DIRPYREQUALIZER, // EvWavedgreinf
DIRPYREQUALIZER, // EvWaveletch
DIRPYREQUALIZER, //EvWavCHSLmet
DIRPYREQUALIZER, //EvWavedgcont
DIRPYREQUALIZER, //EvWavEDmet
DIRPYREQUALIZER, //EvWavlev0nois
DIRPYREQUALIZER, //EvWavlev1nois
DIRPYREQUALIZER, //EvWavlev2nois
DIRPYREQUALIZER, //EvWavmedianlev
DIRPYREQUALIZER, //EvWavHHCurve
DIRPYREQUALIZER, //EvWavBackmet
DIRPYREQUALIZER, //EvWavedgedetect
DIRPYREQUALIZER, //EvWavlipst
DIRPYREQUALIZER, //EvWavedgedetectthr
DIRPYREQUALIZER, //EvWavedgedetectthr2
DIRPYREQUALIZER, //EvWavlinkedg
DIRPYREQUALIZER, //EvWavCHCurve
DARKFRAME, //EvPreProcessHotDeadThresh
SHARPENING, //EvEPDgamma
DIRPYREQUALIZER, //EvWavtmr
DIRPYREQUALIZER, //EvWavTMmet
DIRPYREQUALIZER, //EvWavtmrs
DIRPYREQUALIZER, //EvWavbalance
DIRPYREQUALIZER, //EvWaviter
DIRPYREQUALIZER, //EvWavgamma
DIRPYREQUALIZER, //EvWavCLCurve
DIRPYREQUALIZER, //EvWavopacity
DIRPYREQUALIZER, //EvWavBAmet
DIRPYREQUALIZER, //EvWavopacityWL
RESIZE, // EvPrShrEnabled
RESIZE, // EvPrShrRadius
RESIZE, // EvPrShrAmount
RESIZE, // EvPrShrThresh
RESIZE, // EvPrShrEdgeOnly
RESIZE, // EvPrShrEdgeRadius=375,
RESIZE, // EvPrShrEdgeTolerance=376,
RESIZE, // EvPrShrHaloControl=377,
RESIZE, // EvPrShrHaloAmount=378,
RESIZE, // EvPrShrMethod=379,
RESIZE, // EvPrShrDRadius=380,
RESIZE, // EvPrShrDAmount=381,
RESIZE, // EvPrShrDDamping=382,
RESIZE, // EvPrShrDIterations=383,
DIRPYREQUALIZER, // EvWavcbenab
DIRPYREQUALIZER, // EvWavgreenhigh
DIRPYREQUALIZER, // EvWavbluehigh
DIRPYREQUALIZER, // EvWavgreenmed
DIRPYREQUALIZER, // EvWavbluemed
DIRPYREQUALIZER, // EvWavgreenlow
DIRPYREQUALIZER, // EvWavbluelow
DIRPYREQUALIZER, // EvWavNeutral
RGBCURVE, // EvDCPApplyLookTable,
RGBCURVE, // EvDCPApplyBaselineExposureOffset,
INPUTPROFILE, // EvDCPApplyHueSatMap
DIRPYREQUALIZER, // EvWavenacont
DIRPYREQUALIZER, // EvWavenachrom
DIRPYREQUALIZER, // EvWavenaedge
DIRPYREQUALIZER, // EvWavenares
DIRPYREQUALIZER, // EvWavenafin
DIRPYREQUALIZER, // EvWavenatoning
DIRPYREQUALIZER, // EvWavenanoise
DIRPYREQUALIZER, // EvWavedgesensi
DIRPYREQUALIZER, // EvWavedgeampli
DIRPYREQUALIZER, //EvWavlev3nois
DIRPYREQUALIZER, //EvWavNPmet
DEMOSAIC, // Unused?
ALLNORAW, // EvretinexMethod
ALLNORAW, // EvLneigh
ALLNORAW, // EvLgain
ALLNORAW, // EvLoffs was EvLstr
ALLNORAW, // EvLstr was EvLscal
ALLNORAW, // EvLscal was EvLvart
ALLNORAW, // EvLvart was EvLCDCurve
ALLNORAW, // EvRetinexOpacity // not used
ALLNORAW, // EvRetinextransmission
DEMOSAIC, // EvRetinexEnabled was EvRetinexretinex <-- TODO we can probably delete this
ALLNORAW, // EvRetinexmedianmap
ALLNORAW, // EvLlimd
DEMOSAIC, // Evretinexcolorspace
DEMOSAIC, // EvRetinexgamma
ALLNORAW // EvLCDHCurve
DIRPYREQUALIZER, // EvWavCHSLmet
DIRPYREQUALIZER, // EvWavedgcont
DIRPYREQUALIZER, // EvWavEDmet
DIRPYREQUALIZER, // EvWavlev0nois
DIRPYREQUALIZER, // EvWavlev1nois
DIRPYREQUALIZER, // EvWavlev2nois
DIRPYREQUALIZER, // EvWavmedianlev
DIRPYREQUALIZER, // EvWavHHCurve
DIRPYREQUALIZER, // EvWavBackmet
DIRPYREQUALIZER, // EvWavedgedetect
DIRPYREQUALIZER, // EvWavlipst
DIRPYREQUALIZER, // EvWavedgedetectthr
DIRPYREQUALIZER, // EvWavedgedetectthr2
DIRPYREQUALIZER, // EvWavlinkedg
DIRPYREQUALIZER, // EvWavCHCurve
DARKFRAME, // EvPreProcessHotDeadThresh
SHARPENING, // EvEPDgamma
DIRPYREQUALIZER, // EvWavtmr
DIRPYREQUALIZER, // EvWavTMmet
DIRPYREQUALIZER, // EvWavtmrs
DIRPYREQUALIZER, // EvWavbalance
DIRPYREQUALIZER, // EvWaviter
DIRPYREQUALIZER, // EvWavgamma
DIRPYREQUALIZER, // EvWavCLCurve
DIRPYREQUALIZER, // EvWavopacity
DIRPYREQUALIZER, // EvWavBAmet
DIRPYREQUALIZER, // EvWavopacityWL
RESIZE, // EvPrShrEnabled
RESIZE, // EvPrShrRadius
RESIZE, // EvPrShrAmount
RESIZE, // EvPrShrThresh
RESIZE, // EvPrShrEdgeOnly
RESIZE, // EvPrShrEdgeRadius=375,
RESIZE, // EvPrShrEdgeTolerance=376,
RESIZE, // EvPrShrHaloControl=377,
RESIZE, // EvPrShrHaloAmount=378,
RESIZE, // EvPrShrMethod=379,
RESIZE, // EvPrShrDRadius=380,
RESIZE, // EvPrShrDAmount=381,
RESIZE, // EvPrShrDDamping=382,
RESIZE, // EvPrShrDIterations=383,
DIRPYREQUALIZER, // EvWavcbenab
DIRPYREQUALIZER, // EvWavgreenhigh
DIRPYREQUALIZER, // EvWavbluehigh
DIRPYREQUALIZER, // EvWavgreenmed
DIRPYREQUALIZER, // EvWavbluemed
DIRPYREQUALIZER, // EvWavgreenlow
DIRPYREQUALIZER, // EvWavbluelow
DIRPYREQUALIZER, // EvWavNeutral
RGBCURVE, // EvDCPApplyLookTable,
RGBCURVE, // EvDCPApplyBaselineExposureOffset,
INPUTPROFILE, // EvDCPApplyHueSatMap
DIRPYREQUALIZER, // EvWavenacont
DIRPYREQUALIZER, // EvWavenachrom
DIRPYREQUALIZER, // EvWavenaedge
DIRPYREQUALIZER, // EvWavenares
DIRPYREQUALIZER, // EvWavenafin
DIRPYREQUALIZER, // EvWavenatoning
DIRPYREQUALIZER, // EvWavenanoise
DIRPYREQUALIZER, // EvWavedgesensi
DIRPYREQUALIZER, // EvWavedgeampli
DIRPYREQUALIZER, // EvWavlev3nois
DIRPYREQUALIZER, // EvWavNPmet
ALLNORAW, // EvretinexMethod
ALLNORAW, // EvLneigh
ALLNORAW, // EvLgain
ALLNORAW, // EvLoffs
ALLNORAW, // EvLstr
ALLNORAW, // EvLscal
ALLNORAW, // EvLvart
ALLNORAW, // EvLCDCurve
ALLNORAW, // EvRetinextransmission
DEMOSAIC, // EvRetinexEnabled
ALLNORAW, // EvRetinexmedianmap
ALLNORAW, // EvLlimd
DEMOSAIC, // Evretinexcolorspace
ALLNORAW, // EvLCDHCurve
DEMOSAIC // Evretinexgamma
};

View File

@@ -68,7 +68,6 @@
#define INPUTPROFILE WHITEBALANCE
#define GAMMA (M_COLOR|M_LUMINANCE)
#define MINUPDATE M_MINUPDATE
#define NONE 0
#define ALLNORAW (M_INIT|M_LINDENOISE|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
extern int refreshmap[];

View File

@@ -47,17 +47,15 @@ Retinex::Retinex () : FoldableToolPanel(this, "retinex", M("TP_RETINEX_LABEL"),
retinexcolorspace->set_active(0);
retinexColorSpaceConn = retinexcolorspace->signal_changed().connect ( sigc::mem_fun(*this, &Retinex::retinexColorSpaceChanged) );
dhbox->pack_start(*retinexMethod);
dhbox->pack_start(*retinexcolorspace);
retinexVBox->pack_start(*dhbox);
std::vector<double> defaultCurve;
// Histogram equalizer Lab curve
curveEditorGD = new CurveEditorGroup (options.lastRetinexDir, M("TP_RETINEX_CONTEDIT_LAB"));
curveEditorGD->setCurveListener (this);
rtengine::RetinexParams::getDefaultCDCurve(defaultCurve);
cdshape = static_cast<DiagonalCurveEditor*>(curveEditorGD->addCurve(CT_Diagonal, M("TP_RETINEX_CURVEEDITOR_CD")));
cdshape->setResetCurve(DiagonalCurveType(defaultCurve.at(0)), defaultCurve);
cdshape->setTooltip(M("TP_RETINEX_CURVEEDITOR_CD_TOOLTIP"));
std::vector<GradientMilestone> milestones22;
@@ -68,11 +66,11 @@ Retinex::Retinex () : FoldableToolPanel(this, "retinex", M("TP_RETINEX_LABEL"),
curveEditorGD->curveListComplete();
// Histogram equalizer HSL curve
curveEditorGDH = new CurveEditorGroup (options.lastRetinexDir, M("TP_RETINEX_CONTEDIT_HSL"));
curveEditorGDH->setCurveListener (this);
rtengine::RetinexParams::getDefaultCDHCurve(defaultCurve);
cdshapeH = static_cast<DiagonalCurveEditor*>(curveEditorGDH->addCurve(CT_Diagonal, M("TP_RETINEX_CURVEEDITOR_CD")));
cdshapeH->setResetCurve(DiagonalCurveType(defaultCurve.at(0)), defaultCurve);
cdshapeH->setTooltip(M("TP_RETINEX_CURVEEDITOR_CD_TOOLTIP"));
std::vector<GradientMilestone> milestones22H;
@@ -84,9 +82,11 @@ Retinex::Retinex () : FoldableToolPanel(this, "retinex", M("TP_RETINEX_LABEL"),
curveEditorGDH->curveListComplete();
// Transmission map curve
transmissionCurveEditorG = new CurveEditorGroup (options.lastRetinexDir, M("TP_RETINEX_TRANSMISSION"));
transmissionCurveEditorG->setCurveListener (this);
std::vector<double> defaultCurve;
rtengine::RetinexParams::getDefaulttransmissionCurve(defaultCurve);
transmissionShape = static_cast<FlatCurveEditor*>(transmissionCurveEditorG->addCurve(CT_Flat, "", NULL, false));
transmissionShape->setIdentityValue(0.);
@@ -257,8 +257,8 @@ void Retinex::writeOptions(std::vector<int> &tpOpen)
void Retinex::updateToolState(std::vector<int> &tpOpen)
{
if(tpOpen.size() == 9) {
expsettings->set_expanded(tpOpen.at(0));
if(tpOpen.size() == 10) {
expsettings->set_expanded(tpOpen.at(9));
}
}

View File

@@ -559,6 +559,7 @@ void ToolPanelCoordinator::writeOptions ()
}
wavelet->writeOptions(options.tpOpen);
retinex->writeOptions(options.tpOpen);
}