GUI enhancement for DeHaze
This commit is contained in:
@@ -1552,6 +1552,10 @@ TP_LABCURVE_LCREDSK;Restrict LC to red and skin-tones
|
||||
TP_LABCURVE_LCREDSK_TIP;If enabled, the LC Curve affects only red and skin-tones.\nIf disabled, it applies to all tones.
|
||||
TP_LABCURVE_RSTPROTECTION;Red and skin-tones protection
|
||||
TP_LABCURVE_RSTPRO_TOOLTIP;Works on the Chromaticity slider and the CC curve.
|
||||
TP_DEHAZ_MLABEL;Restored haze-free Min=%1 Max=%2
|
||||
TP_DEHAZ_MLABEL_TOOLTIP;Should be near of min=0 max=32768\nRestored image with no mixture
|
||||
TP_DEHAZ_TLABEL;TR m=%1 M=%2 Me=%3 Si=%4 Tm=%5 TM=%6
|
||||
TP_DEHAZ_TLABEL_TOOLTIP;Transmission map result\nm=Mini M=Maxi used by Variance\nMe=Mean Si=Sigma\nTm=Min TM=Max of Transmission map
|
||||
TP_DEHAZ_STR;Strength
|
||||
TP_DEHAZ_STR_TOOLTIP;Mixture in proportion to the original image and that obtained by Retinex algoritm
|
||||
TP_DEHAZ_RETIN;Complete Retinex algoritm
|
||||
|
@@ -158,7 +158,7 @@ void Crop::update (int todo)
|
||||
int heiIm = parent->fh;
|
||||
|
||||
bool needstransform = parent->ipf.needsTransform();
|
||||
|
||||
|
||||
if (todo & (M_INIT | M_LINDENOISE)) {
|
||||
MyMutex::MyLock lock(parent->minit); // Also used in improccoord
|
||||
|
||||
@@ -305,7 +305,6 @@ void Crop::update (int todo)
|
||||
if(parent->adnListener) {
|
||||
parent->adnListener->noiseTilePrev (centerTile_X[poscenterX], centerTile_Y[poscenterY], CenterPreview_X, CenterPreview_Y, crW, trafw * skip);
|
||||
}
|
||||
|
||||
// I have tried "blind" some solutions..to move review ...but GUI is not my truc !
|
||||
// int W,H;
|
||||
// cropgl->cropMoved (centerTile_X[poscenterX],centerTile_Y[poscenterY] , W, H);
|
||||
|
@@ -70,13 +70,13 @@ public:
|
||||
virtual void preprocess (const RAWParams &raw, const LensProfParams &lensProf, const CoarseTransformParams& coarse) {};
|
||||
virtual void demosaic (const RAWParams &raw) {};
|
||||
// virtual void // dehaz (RAWParams raw, ColorManagementParams cmp, DehazParams lcur, LUTf & cdcurve, bool dehacontlutili) {};
|
||||
virtual void dehaz (RAWParams raw, ColorManagementParams cmp, DehazParams deh, LUTf & cdcurve, const DehaztransmissionCurve & dehatransmissionCurve, bool dehacontlutili) {};
|
||||
virtual void dehaz (RAWParams raw, ColorManagementParams cmp, DehazParams deh, LUTf & cdcurve, const DehaztransmissionCurve & dehatransmissionCurve, bool dehacontlutili, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax) {};
|
||||
virtual void flushRawData () {};
|
||||
virtual void flushRGB () {};
|
||||
virtual void HLRecovery_Global (ToneCurveParams hrp) {};
|
||||
virtual void HLRecovery_inpaint (float** red, float** green, float** blue) {};
|
||||
// virtual void MSR(LabImage* lab, int width, int height, int skip, DehazParams lcur) {};
|
||||
virtual void MSR(LabImage* lab, int width, int height, int skip, DehazParams deh, const DehaztransmissionCurve & dehatransmissionCurve) {};
|
||||
virtual void MSR(LabImage* lab, int width, int height, int skip, DehazParams deh, const DehaztransmissionCurve & dehatransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax) {};
|
||||
|
||||
virtual bool IsrgbSourceModified() = 0; // tracks whether cached rgb output of demosaic has been modified
|
||||
// virtual void MSR(LabImage* lab, int width, int height, int skip, const LCurveParams &lcur);
|
||||
|
@@ -86,7 +86,7 @@ ImProcCoordinator::ImProcCoordinator ()
|
||||
bcurvehist(256), bcurvehistCropped(256), bbeforehist(256),
|
||||
fullw(1), fullh(1),
|
||||
pW(-1), pH(-1),
|
||||
plistener(NULL), imageListener(NULL), aeListener(NULL), acListener(NULL), abwListener(NULL), actListener(NULL), adnListener(NULL), awavListener(NULL), hListener(NULL),
|
||||
plistener(NULL), imageListener(NULL), aeListener(NULL), acListener(NULL), abwListener(NULL), actListener(NULL), adnListener(NULL), awavListener(NULL), dehaListener(NULL), hListener(NULL),
|
||||
resultValid(false), changeSinceLast(0), updaterRunning(false), destroying(false), utili(false), autili(false), wavcontlutili(false),
|
||||
butili(false), ccutili(false), cclutili(false), clcutili(false), opautili(false)
|
||||
|
||||
@@ -240,9 +240,13 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
|
||||
CurveFactory::curveDehaContL (dehacontlutili, params.dehaz.cdcurve, cdcurve, 1);
|
||||
DehazParams DehaParams = params.dehaz;
|
||||
DehaParams.getCurves(dehatransmissionCurve);
|
||||
imgsrc->dehaz( params.raw, params.icm, params.dehaz, cdcurve, dehatransmissionCurve, dehacontlutili);//enabled Dehaze
|
||||
float minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax;
|
||||
imgsrc->dehaz( params.raw, params.icm, params.dehaz, cdcurve, dehatransmissionCurve, dehacontlutili, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);//enabled Dehaze
|
||||
if(dehaListener) {
|
||||
dehaListener->minmaxChanged(maxCD, minCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Updating toneCurve.hrenabled if necessary
|
||||
|
@@ -154,7 +154,8 @@ protected:
|
||||
AutoColorTonListener* actListener;
|
||||
AutoChromaListener* adnListener;
|
||||
WaveletListener* awavListener;
|
||||
|
||||
DehazListener* dehaListener;
|
||||
|
||||
HistogramListener* hListener;
|
||||
std::vector<SizeListener*> sizeListeners;
|
||||
|
||||
@@ -299,6 +300,10 @@ public:
|
||||
{
|
||||
adnListener = adn;
|
||||
}
|
||||
void setDehazListener (DehazListener* adh)
|
||||
{
|
||||
dehaListener = adh;
|
||||
}
|
||||
void setWaveletListener (WaveletListener* awa)
|
||||
{
|
||||
awavListener = awa;
|
||||
|
@@ -16,10 +16,21 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
* adaptation to Rawtherapee
|
||||
* 2015 Jacques Desmis <jdesmis@gmail.com>
|
||||
* 2015 Ingo Weyrich <heckflosse@i-weyrich.de>
|
||||
|
||||
* D. J. Jobson, Z. Rahman, and G. A. Woodell. A multi-scale
|
||||
* Retinex for bridging the gap between color images and the
|
||||
* human observation of scenes. IEEE Transactions on Image Processing,
|
||||
* 1997, 6(7): 965-976
|
||||
|
||||
* Fan Guo Zixing Cai Bin Xie Jin Tang
|
||||
* School of Information Science and Engineering, Central South University Changsha, China
|
||||
|
||||
* Weixing Wang and Lian Xu
|
||||
* College of Physics and Information Engineering, Fuzhou University, Fuzhou, China
|
||||
|
||||
* inspired from 2003 Fabien Pelisson <Fabien.Pelisson@inrialpes.fr>
|
||||
|
||||
*/
|
||||
@@ -187,12 +198,13 @@ void mean_stddv( float **dst, float &mean, float &stddv, int W_L, int H_L, const
|
||||
stddv = (float)sqrt(stddv);
|
||||
}
|
||||
|
||||
void RawImageSource::MSR(float** luminance, float** originalLuminance, int width, int height, DehazParams deh, const DehaztransmissionCurve & dehatransmissionCurve)
|
||||
void RawImageSource::MSR(float** luminance, float** originalLuminance, int width, int height, DehazParams deh, const DehaztransmissionCurve & dehatransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax)
|
||||
{
|
||||
if (deh.enabled) {//enabled
|
||||
StopWatch Stop1("MSR");
|
||||
float mean, stddv, maxtr, mintr;
|
||||
float mini, delta, maxi;
|
||||
// float mini, delta, maxi;
|
||||
float delta;
|
||||
float eps = 2.f;
|
||||
float gain2 = (float) deh.gain / 100.f; //def =1 not use
|
||||
float offse = (float) deh.offs; //def = 0 not use
|
||||
@@ -426,17 +438,43 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, int width
|
||||
}
|
||||
|
||||
float cdfactor = gain2 * 32768.f / delta;
|
||||
maxCD =-9999999.f;
|
||||
minCD =9999999.f;
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
float cdmax = -999999.f, cdmin = 999999.f;
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
|
||||
for ( int i = 0; i < H_L; i ++ )
|
||||
for (int j = 0; j < W_L; j++) {
|
||||
// float cd = cdfactor * ( luminance[i][j] * logBetaGain - mini ) + offse;
|
||||
float cd = cdfactor * ( luminance[i][j] - mini ) + offse;
|
||||
if(cd > cdmax) cdmax=cd;
|
||||
if(cd < cdmin) cdmin=cd;
|
||||
|
||||
|
||||
luminance[i][j] = clipdehaz( cd, 0.f, 32768.f ) * strength + (1.f - strength) * originalLuminance[i][j];
|
||||
}
|
||||
#ifdef _OPENMP
|
||||
#pragma omp critical
|
||||
#endif
|
||||
{
|
||||
maxCD = maxCD > cdmax ? maxCD : cdmax;
|
||||
minCD = minCD < cdmin ? minCD : cdmin;
|
||||
}
|
||||
|
||||
}
|
||||
// printf("cdmin=%f cdmax=%f\n",minCD, maxCD);
|
||||
Tmean = mean;
|
||||
Tsigma = stddv;
|
||||
Tmin = mintr;
|
||||
Tmax = maxtr;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1800,7 +1800,7 @@ void RawImageSource::demosaic(const RAWParams &raw)
|
||||
}
|
||||
}
|
||||
|
||||
void RawImageSource::dehaz(RAWParams raw, ColorManagementParams cmp, DehazParams deh, LUTf & cdcurve, const DehaztransmissionCurve & dehatransmissionCurve, bool dehacontlutili)
|
||||
void RawImageSource::dehaz(RAWParams raw, ColorManagementParams cmp, DehazParams deh, LUTf & cdcurve, const DehaztransmissionCurve & dehatransmissionCurve, bool dehacontlutili, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax)
|
||||
{
|
||||
|
||||
MyTime t4, t5;
|
||||
@@ -1863,7 +1863,7 @@ void RawImageSource::dehaz(RAWParams raw, ColorManagementParams cmp, DehazParams
|
||||
labdeha->b[i - border][j - border] = bb;
|
||||
}
|
||||
|
||||
MSR(labdeha->L, labTmp, WNew, HNew, deh, dehatransmissionCurve);
|
||||
MSR(labdeha->L, labTmp, WNew, HNew, deh, dehatransmissionCurve, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
||||
|
||||
delete [] labTmpBuffer;
|
||||
|
||||
|
@@ -152,7 +152,7 @@ public:
|
||||
void preprocess (const RAWParams &raw, const LensProfParams &lensProf, const CoarseTransformParams& coarse);
|
||||
void demosaic (const RAWParams &raw);
|
||||
// void dehaz (RAWParams raw, ColorManagementParams cmp, DehazParams lcur, LUTf & cdcurve, bool dehacontlutili);
|
||||
void dehaz (RAWParams raw, ColorManagementParams cmp, DehazParams deh, LUTf & cdcurve, const DehaztransmissionCurve & dehatransmissionCurve, bool dehacontlutili);
|
||||
void dehaz (RAWParams raw, ColorManagementParams cmp, DehazParams deh, LUTf & cdcurve, const DehaztransmissionCurve & dehatransmissionCurve, bool dehacontlutili, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax);
|
||||
void flushRawData ();
|
||||
void flushRGB ();
|
||||
void HLRecovery_Global (ToneCurveParams hrp);
|
||||
@@ -228,7 +228,7 @@ public:
|
||||
|
||||
void boxblur2(float** src, float** dst, int H, int W, int box );
|
||||
void boxblur_resamp(float **src, float **dst, int H, int W, int box, int samp );
|
||||
void MSR(float** luminance, float **originalLuminance, int width, int height, DehazParams deh, const DehaztransmissionCurve & dehatransmissionCurve);
|
||||
void MSR(float** luminance, float **originalLuminance, int width, int height, DehazParams deh, const DehaztransmissionCurve & dehatransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax);
|
||||
// void MSR(LabImage* lab, int width, int height, int skip, DehazParams deh, const DehaztransmissionCurve & dehatransmissionCurve);
|
||||
|
||||
//void boxblur_resamp(float **red, float **green, float **blue, int H, int W, float thresh[3], float max[3],
|
||||
|
@@ -287,6 +287,14 @@ public :
|
||||
|
||||
};
|
||||
|
||||
class DehazListener
|
||||
{
|
||||
public :
|
||||
virtual ~DehazListener() {}
|
||||
virtual void minmaxChanged (double cdma, double cdmin, double mini, double maxi, double Tmean, double Tsigma, double Tmin, double Tmax) {}
|
||||
|
||||
};
|
||||
|
||||
class AutoColorTonListener
|
||||
{
|
||||
public :
|
||||
@@ -405,6 +413,7 @@ public:
|
||||
virtual void setAutoBWListener (AutoBWListener* l) = 0;
|
||||
virtual void setAutoColorTonListener (AutoColorTonListener* l) = 0;
|
||||
virtual void setAutoChromaListener (AutoChromaListener* l) = 0;
|
||||
virtual void setDehazListener (DehazListener* l) = 0;
|
||||
virtual void setWaveletListener (WaveletListener* l) = 0;
|
||||
|
||||
virtual ~StagedImageProcessor () {}
|
||||
|
@@ -124,8 +124,8 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
|
||||
CurveFactory::curveDehaContL (dehacontlutili, params.dehaz.cdcurve, cdcurve, 1);
|
||||
DehazParams DehaParams = params.dehaz;
|
||||
DehaParams.getCurves(dehatransmissionCurve);
|
||||
|
||||
imgsrc->dehaz( params.raw, params.icm, params.dehaz, cdcurve, dehatransmissionCurve, dehacontlutili );
|
||||
float minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax;
|
||||
imgsrc->dehaz( params.raw, params.icm, params.dehaz, cdcurve, dehatransmissionCurve, dehacontlutili, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
||||
}
|
||||
|
||||
if (pl) {
|
||||
|
@@ -11,7 +11,15 @@ Dehaz::Dehaz () : FoldableToolPanel(this, "dehaz", M("TP_DEHAZ_LABEL"), false, t
|
||||
{
|
||||
CurveListener::setMulti(true);
|
||||
std::vector<GradientMilestone> milestones;
|
||||
|
||||
nextmin =0.;
|
||||
nextmax =0.;
|
||||
nextminiT = 0.;
|
||||
nextmaxiT = 0.;
|
||||
nextmeanT = 0.;
|
||||
nextsigma = 0.;
|
||||
nextminT = 0.;
|
||||
nextmaxT = 0.;
|
||||
|
||||
dehazFrame = Gtk::manage (new Gtk::Frame (M("TP_DEHAZ_LAB")) );
|
||||
dehazFrame->set_tooltip_text(M("TP_DEHAZ_LAB_TOOLTIP"));
|
||||
dehazFrame->set_border_width(0);
|
||||
@@ -86,7 +94,13 @@ Dehaz::Dehaz () : FoldableToolPanel(this, "dehaz", M("TP_DEHAZ_LABEL"), false, t
|
||||
|
||||
dehazVBox->pack_start (*retinex);
|
||||
retinex->show ();
|
||||
|
||||
mMLabels = Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER));
|
||||
mMLabels->set_tooltip_markup (M("TP_DEHAZ_MLABEL_TOOLTIP"));
|
||||
|
||||
transLabels = Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER));
|
||||
transLabels->set_tooltip_markup (M("TP_DEHAZ_TLABEL_TOOLTIP"));
|
||||
|
||||
scal = Gtk::manage (new Adjuster (M("TP_DEHAZ_SCAL"), 1, 8., 1., 3.));
|
||||
gain = Gtk::manage (new Adjuster (M("TP_DEHAZ_GAIN"), 20, 200, 1, 100));//50 150
|
||||
offs = Gtk::manage (new Adjuster (M("TP_DEHAZ_OFFS"), -10000, 10000, 1, 0));
|
||||
@@ -102,6 +116,12 @@ Dehaz::Dehaz () : FoldableToolPanel(this, "dehaz", M("TP_DEHAZ_LABEL"), false, t
|
||||
medianmap->set_active (true);
|
||||
medianmapConn = medianmap->signal_toggled().connect( sigc::mem_fun(*this, &Dehaz::medianmapChanged) );
|
||||
|
||||
RetiVBox->pack_start (*mMLabels);
|
||||
mMLabels->show ();
|
||||
|
||||
RetiVBox->pack_start (*transLabels);
|
||||
transLabels->show ();
|
||||
|
||||
RetiVBox->pack_start (*curveEditorGD, Gtk::PACK_SHRINK, 4);
|
||||
curveEditorGD->show();
|
||||
|
||||
@@ -151,6 +171,77 @@ Dehaz::~Dehaz()
|
||||
delete transmissionCurveEditorG;
|
||||
|
||||
}
|
||||
int minmaxChangedUI (void* data)
|
||||
{
|
||||
GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected
|
||||
(static_cast<Dehaz*>(data))->minmaxComputed_ ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Dehaz::minmaxChanged (double cdma, double cdmin, double mini, double maxi, double Tmean, double Tsigma, double Tmin, double Tmax)
|
||||
{
|
||||
nextmin = cdmin;
|
||||
nextmax = cdma;
|
||||
nextminiT = mini;
|
||||
nextmaxiT = maxi;
|
||||
nextmeanT = Tmean;
|
||||
nextsigma = Tsigma;
|
||||
nextminT = Tmin;
|
||||
nextmaxT = Tmax;
|
||||
g_idle_add (minmaxChangedUI, this);
|
||||
|
||||
}
|
||||
|
||||
bool Dehaz::minmaxComputed_ ()
|
||||
{
|
||||
|
||||
disableListener ();
|
||||
enableListener ();
|
||||
updateLabel ();
|
||||
updateTrans ();
|
||||
return false;
|
||||
|
||||
}
|
||||
void Dehaz::updateLabel ()
|
||||
{
|
||||
if (!batchMode) {
|
||||
float nX, nY;
|
||||
nX = nextmin;
|
||||
nY = nextmax;
|
||||
{
|
||||
mMLabels->set_text(
|
||||
Glib::ustring::compose(M("TP_DEHAZ_MLABEL"),
|
||||
Glib::ustring::format(std::fixed, std::setprecision(0), nX),
|
||||
Glib::ustring::format(std::fixed, std::setprecision(0), nY))
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Dehaz::updateTrans ()
|
||||
{
|
||||
if (!batchMode) {
|
||||
float nm, nM, nZ, nA, nB, nS;
|
||||
nm = nextminiT;
|
||||
nM = nextmaxiT;
|
||||
nZ = nextmeanT;
|
||||
nA = nextminT;
|
||||
nB = nextmaxT;
|
||||
nS = nextsigma;
|
||||
{
|
||||
transLabels->set_text(
|
||||
Glib::ustring::compose(M("TP_DEHAZ_TLABEL"),
|
||||
Glib::ustring::format(std::fixed, std::setprecision(1), nm),
|
||||
Glib::ustring::format(std::fixed, std::setprecision(1), nM),
|
||||
Glib::ustring::format(std::fixed, std::setprecision(1), nZ),
|
||||
Glib::ustring::format(std::fixed, std::setprecision(1), nS),
|
||||
Glib::ustring::format(std::fixed, std::setprecision(1), nA),
|
||||
Glib::ustring::format(std::fixed, std::setprecision(1), nB))
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Dehaz::read (const ProcParams* pp, const ParamsEdited* pedited)
|
||||
@@ -235,6 +326,8 @@ void Dehaz::retinexUpdateUI ()
|
||||
vart->show();
|
||||
limd->show();
|
||||
medianmap->show();
|
||||
mMLabels->show();
|
||||
transLabels->show();
|
||||
transmissionCurveEditorG->show();
|
||||
curveEditorGD->show();
|
||||
dehazFrame->show();
|
||||
@@ -244,6 +337,8 @@ void Dehaz::retinexUpdateUI ()
|
||||
offs->hide();
|
||||
vart->hide();
|
||||
limd->hide();
|
||||
mMLabels->hide();
|
||||
transLabels->hide();
|
||||
medianmap->hide();
|
||||
transmissionCurveEditorG->hide();
|
||||
curveEditorGD->hide();
|
||||
|
@@ -13,8 +13,9 @@
|
||||
#include "thresholdadjuster.h"
|
||||
#include "colorprovider.h"
|
||||
|
||||
class Dehaz : public ToolParamBlock, public FoldableToolPanel, public CurveListener,
|
||||
class Dehaz : public ToolParamBlock, public FoldableToolPanel, public rtengine::DehazListener, public CurveListener,
|
||||
public AdjusterListener
|
||||
|
||||
{
|
||||
|
||||
protected:
|
||||
@@ -33,7 +34,18 @@ protected:
|
||||
Gtk::CheckButton* retinex;
|
||||
Gtk::Frame* dehazFrame;
|
||||
Gtk::CheckButton* medianmap;
|
||||
|
||||
double nextmin;
|
||||
double nextmax;
|
||||
double nextminiT;
|
||||
double nextmaxiT;
|
||||
double nextmeanT;
|
||||
double nextminT;
|
||||
double nextmaxT;
|
||||
double nextsigma;
|
||||
|
||||
Gtk::Label* mMLabels;
|
||||
Gtk::Label* transLabels;
|
||||
|
||||
DiagonalCurveEditor* cdshape;
|
||||
CurveEditorGroup* transmissionCurveEditorG;
|
||||
sigc::connection dehazmetConn;
|
||||
@@ -55,6 +67,10 @@ public:
|
||||
void autoOpenCurve ();
|
||||
void retinexChanged ();
|
||||
void medianmapChanged ();
|
||||
void minmaxChanged (double cdma, double cdmin, double mini, double maxi, double Tmean, double Tsigma, double Tmin, double Tmax);
|
||||
bool minmaxComputed_ ();
|
||||
void updateLabel ();
|
||||
void updateTrans ();
|
||||
|
||||
void enabledChanged ();
|
||||
void curveChanged (CurveEditor* ce);
|
||||
|
@@ -478,6 +478,7 @@ void ToolPanelCoordinator::initImage (rtengine::StagedImageProcessor* ipc_, bool
|
||||
ipc->setAutoColorTonListener (colortoning);
|
||||
ipc->setAutoChromaListener (dirpyrdenoise);
|
||||
ipc->setWaveletListener (wavelet);
|
||||
ipc->setDehazListener (dehaz);
|
||||
|
||||
ipc->setSizeListener (crop);
|
||||
ipc->setSizeListener (resize);
|
||||
|
Reference in New Issue
Block a user