Improve shape detection with mask - clean code - fixe some bugs
This commit is contained in:
parent
f0de694c6a
commit
e795d902ab
@ -1697,14 +1697,13 @@ void LocCCmaskCurve::Set(const Curve &pCurve)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void LocCCmaskCurve::Set(const std::vector<double> &curvePoints, bool &HHutili)
|
void LocCCmaskCurve::Set(const std::vector<double> &curvePoints)
|
||||||
{
|
{
|
||||||
// if (HHutili && !curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
|
// if (HHutili && !curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
|
||||||
if (!curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
|
if (!curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
|
||||||
FlatCurve ttcurve(curvePoints, false, CURVES_MIN_POLY_POINTS / 2);
|
FlatCurve ttcurve(curvePoints, false, CURVES_MIN_POLY_POINTS / 2);
|
||||||
ttcurve.setIdentityValue(0.);
|
ttcurve.setIdentityValue(0.);
|
||||||
Set(ttcurve);
|
Set(ttcurve);
|
||||||
HHutili = true;
|
|
||||||
} else {
|
} else {
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
@ -1743,14 +1742,13 @@ void LocLLmaskCurve::Set(const Curve &pCurve)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void LocLLmaskCurve::Set(const std::vector<double> &curvePoints, bool &HHutili)
|
void LocLLmaskCurve::Set(const std::vector<double> &curvePoints)
|
||||||
{
|
{
|
||||||
// if (HHutili && !curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
|
// if (HHutili && !curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
|
||||||
if (!curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
|
if (!curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
|
||||||
FlatCurve ttcurve(curvePoints, false, CURVES_MIN_POLY_POINTS / 2);
|
FlatCurve ttcurve(curvePoints, false, CURVES_MIN_POLY_POINTS / 2);
|
||||||
ttcurve.setIdentityValue(0.);
|
ttcurve.setIdentityValue(0.);
|
||||||
Set(ttcurve);
|
Set(ttcurve);
|
||||||
HHutili = true;
|
|
||||||
} else {
|
} else {
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
|
@ -702,7 +702,7 @@ public:
|
|||||||
virtual ~LocCCmaskCurve() {};
|
virtual ~LocCCmaskCurve() {};
|
||||||
LocCCmaskCurve();
|
LocCCmaskCurve();
|
||||||
void Reset();
|
void Reset();
|
||||||
void Set(const std::vector<double> &curvePoints, bool &HHutili);
|
void Set(const std::vector<double> &curvePoints);
|
||||||
float getSum() const
|
float getSum() const
|
||||||
{
|
{
|
||||||
return sum;
|
return sum;
|
||||||
@ -730,7 +730,7 @@ public:
|
|||||||
virtual ~LocLLmaskCurve() {};
|
virtual ~LocLLmaskCurve() {};
|
||||||
LocLLmaskCurve();
|
LocLLmaskCurve();
|
||||||
void Reset();
|
void Reset();
|
||||||
void Set(const std::vector<double> &curvePoints, bool &HHutili);
|
void Set(const std::vector<double> &curvePoints);
|
||||||
float getSum() const
|
float getSum() const
|
||||||
{
|
{
|
||||||
return sum;
|
return sum;
|
||||||
|
@ -895,8 +895,6 @@ void Crop::update(int todo)
|
|||||||
LUTu lhist16loc2(32770, 0);
|
LUTu lhist16loc2(32770, 0);
|
||||||
bool LHutili = parent->LHutili;
|
bool LHutili = parent->LHutili;
|
||||||
bool HHutili = parent->HHutili;
|
bool HHutili = parent->HHutili;
|
||||||
bool CCmaskutili = parent->CCmaskutili;
|
|
||||||
bool LLmaskutili = parent->LLmaskutili;
|
|
||||||
LUTu dummy;
|
LUTu dummy;
|
||||||
bool needslocal = params.locallab.enabled;
|
bool needslocal = params.locallab.enabled;
|
||||||
LocretigainCurve locRETgainCurve;
|
LocretigainCurve locRETgainCurve;
|
||||||
@ -919,8 +917,8 @@ void Crop::update(int todo)
|
|||||||
locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve);
|
locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve);
|
||||||
loclhCurve.Set(params.locallab.spots.at(sp).LHcurve, LHutili);
|
loclhCurve.Set(params.locallab.spots.at(sp).LHcurve, LHutili);
|
||||||
lochhCurve.Set(params.locallab.spots.at(sp).HHcurve, HHutili);
|
lochhCurve.Set(params.locallab.spots.at(sp).HHcurve, HHutili);
|
||||||
locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve, CCmaskutili);
|
locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve);
|
||||||
locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve, LLmaskutili);
|
locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve);
|
||||||
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
|
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
|
||||||
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
|
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
|
||||||
locallutili = false;
|
locallutili = false;
|
||||||
@ -952,7 +950,7 @@ void Crop::update(int todo)
|
|||||||
sca);
|
sca);
|
||||||
|
|
||||||
parent->ipf.Lab_Local(1, sp, parent->sobelrefs, (float**)shbuffer, labnCrop, labnCrop, reservCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, lllocalcurve2,
|
parent->ipf.Lab_Local(1, sp, parent->sobelrefs, (float**)shbuffer, labnCrop, labnCrop, reservCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, lllocalcurve2,
|
||||||
loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, locccmasexpCurve, locllmasexpCurve, CCmaskutili, LLmaskutili, LHutili, HHutili, cclocalcurve2, localskutili, sklocalcurve2, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, huere, chromare, lumare, sobelre);
|
loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, locccmasexpCurve, locllmasexpCurve, LHutili, HHutili, cclocalcurve2, localskutili, sklocalcurve2, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, huere, chromare, lumare, sobelre);
|
||||||
|
|
||||||
lllocalcurve2.clear();
|
lllocalcurve2.clear();
|
||||||
cclocalcurve2.clear();
|
cclocalcurve2.clear();
|
||||||
|
@ -781,14 +781,11 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
localexutili = false;
|
localexutili = false;
|
||||||
localcutili = false;
|
localcutili = false;
|
||||||
localskutili = false;
|
localskutili = false;
|
||||||
CCmaskutili = false;
|
|
||||||
LLmaskutili = false;
|
|
||||||
locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve);
|
locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve);
|
||||||
loclhCurve.Set(params.locallab.spots.at(sp).LHcurve, LHutili);
|
loclhCurve.Set(params.locallab.spots.at(sp).LHcurve, LHutili);
|
||||||
lochhCurve.Set(params.locallab.spots.at(sp).HHcurve, HHutili);
|
lochhCurve.Set(params.locallab.spots.at(sp).HHcurve, HHutili);
|
||||||
locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve, CCmaskutili);
|
locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve);
|
||||||
locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve, LLmaskutili);
|
locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve);
|
||||||
locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve, CCmaskutili);
|
|
||||||
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
|
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
|
||||||
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
|
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
|
||||||
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve, sca);
|
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve, sca);
|
||||||
@ -828,7 +825,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
* - maxspot, huerefs, centerx and centery aren't used in Lab_Local (only for printf) so values aren't important
|
* - maxspot, huerefs, centerx and centery aren't used in Lab_Local (only for printf) so values aren't important
|
||||||
* - shbuffer is used as nullptr
|
* - shbuffer is used as nullptr
|
||||||
*/
|
*/
|
||||||
ipf.Lab_Local(3, sp, sobelrefs, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, locccmasexpCurve, locllmasexpCurve, CCmaskutili, LLmaskutili,
|
ipf.Lab_Local(3, sp, sobelrefs, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, locccmasexpCurve, locllmasexpCurve,
|
||||||
LHutili, HHutili, cclocalcurve, localskutili, sklocalcurve, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerblu, huer, chromar, lumar, sobeler);
|
LHutili, HHutili, cclocalcurve, localskutili, sklocalcurve, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerblu, huer, chromar, lumar, sobeler);
|
||||||
|
|
||||||
if (params.locallab.spots.at(sp).spotMethod == "exc") {
|
if (params.locallab.spots.at(sp).spotMethod == "exc") {
|
||||||
|
@ -245,8 +245,6 @@ protected:
|
|||||||
bool localexutili;
|
bool localexutili;
|
||||||
bool LHutili;
|
bool LHutili;
|
||||||
bool HHutili;
|
bool HHutili;
|
||||||
bool CCmaskutili;
|
|
||||||
bool LLmaskutili;
|
|
||||||
LUTf huerefs;
|
LUTf huerefs;
|
||||||
LUTf huerefblurs;
|
LUTf huerefblurs;
|
||||||
LUTf chromarefs;
|
LUTf chromarefs;
|
||||||
|
@ -289,7 +289,7 @@ public:
|
|||||||
void calc_ref(int sp, LabImage* original, LabImage* transformed, int cx, int cy, int oW, int oH, int sk, double &huerefblur, double &huere, double &chromare, double &lumare, double &sobelref, LUTu & histogram);
|
void calc_ref(int sp, LabImage* original, LabImage* transformed, int cx, int cy, int oW, int oH, int sk, double &huerefblur, double &huere, double &chromare, double &lumare, double &sobelref, LUTu & histogram);
|
||||||
void copy_ref(LabImage* spotbuffer, LabImage* original, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp, double &huerefspot, double &chromarefspot, double &lumarefspot);
|
void copy_ref(LabImage* spotbuffer, LabImage* original, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp, double &huerefspot, double &chromarefspot, double &lumarefspot);
|
||||||
void paste_ref(LabImage* spotbuffer, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp);
|
void paste_ref(LabImage* spotbuffer, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp);
|
||||||
void Lab_Local(int call, int sp, LUTf & sobelrefs, float** shbuffer, LabImage* original, LabImage* transformed, LabImage* reserved, int cx, int cy, int oW, int oH, int sk, const LocretigainCurve & locRETgainCcurve, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, const LocCCmaskCurve & locccmasCurve, const LocLLmaskCurve & locllmasCurve, const LocCCmaskexpCurve & locccmasexpCurve, const LocLLmaskexpCurve & locllmasexpCurve,bool CCmaskutili, bool LLmaskutili, bool &LHutili, bool &HHutili, LUTf & cclocalcurve, bool & localskutili, LUTf & sklocalcurve, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, LUTf & lightCurveloc, double & huerefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref);
|
void Lab_Local(int call, int sp, LUTf & sobelrefs, float** shbuffer, LabImage* original, LabImage* transformed, LabImage* reserved, int cx, int cy, int oW, int oH, int sk, const LocretigainCurve & locRETgainCcurve, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, const LocCCmaskCurve & locccmasCurve, const LocLLmaskCurve & locllmasCurve, const LocCCmaskexpCurve & locccmasexpCurve, const LocLLmaskexpCurve & locllmasexpCurve, bool &LHutili, bool &HHutili, LUTf & cclocalcurve, bool & localskutili, LUTf & sklocalcurve, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, LUTf & lightCurveloc, double & huerefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref);
|
||||||
void addGaNoise(LabImage *lab, LabImage *dst, const float mean, const float variance, const int sk);
|
void addGaNoise(LabImage *lab, LabImage *dst, const float mean, const float variance, const int sk);
|
||||||
void BlurNoise_Localold(int call, const struct local_params& lp, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy);
|
void BlurNoise_Localold(int call, const struct local_params& lp, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy);
|
||||||
void InverseBlurNoise_Local(const struct local_params& lp, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy);
|
void InverseBlurNoise_Local(const struct local_params& lp, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy);
|
||||||
|
@ -413,11 +413,6 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
|||||||
lp.showmaskexpmet = 4;
|
lp.showmaskexpmet = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (locallab.spots.at(sp).showmaskexpMethod == "none") {
|
|
||||||
lp.showmaskexpmet = 0;
|
|
||||||
} else if (locallab.spots.at(sp).showmaskexpMethod == "expo") {
|
|
||||||
lp.showmaskexpmet = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (locallab.spots.at(sp).blurMethod == "norm") {
|
if (locallab.spots.at(sp).blurMethod == "norm") {
|
||||||
lp.blurmet = 0;
|
lp.blurmet = 0;
|
||||||
@ -5114,7 +5109,8 @@ void ImProcFunctions::Expo_vibr_Local(float moddE, float powdE, int senstype, La
|
|||||||
LabImage *origblurmask = nullptr;
|
LabImage *origblurmask = nullptr;
|
||||||
|
|
||||||
float radius = 3.f / sk;
|
float radius = 3.f / sk;
|
||||||
if (lp.showmaskexpmet >= 2 && senstype == 1) {
|
bool usemask = lp.showmaskexpmet >= 2 && senstype == 1;
|
||||||
|
if (usemask) {
|
||||||
origblurmask = new LabImage(GW, GH);
|
origblurmask = new LabImage(GW, GH);
|
||||||
|
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
@ -5210,12 +5206,20 @@ void ImProcFunctions::Expo_vibr_Local(float moddE, float powdE, int senstype, La
|
|||||||
float rchro = sqrt(SQR(origblur->b[y][x]) + SQR(origblur->a[y][x])) / 327.68f;
|
float rchro = sqrt(SQR(origblur->b[y][x]) + SQR(origblur->a[y][x])) / 327.68f;
|
||||||
#endif
|
#endif
|
||||||
float rL = origblur->L[y][x] / 327.68f;
|
float rL = origblur->L[y][x] / 327.68f;
|
||||||
|
float rhuemask = 0.f;
|
||||||
|
float rchromask = 0.f;
|
||||||
|
float rLmask = 0.f;
|
||||||
float dE = 0.f;
|
float dE = 0.f;
|
||||||
if (lp.showmaskexpmet >= 2 && senstype == 1) {
|
if (usemask) {
|
||||||
|
rhuemask = xatan2f(origblurmask->b[y][x], origblurmask->a[y][x]);
|
||||||
|
rchromask = sqrt(SQR(origblurmask->b[y][x]) + SQR(origblurmask->a[y][x])) / 327.68f;
|
||||||
|
rLmask = origblurmask->L[y][x] / 327.68f;
|
||||||
dE = sqrt(SQR(refa - origblurmask->a[y][x] / 327.68f) + SQR(refb - origblurmask->b[y][x] / 327.68f) + SQR(lumaref - origblurmask->L[y][x] / 327.68f));
|
dE = sqrt(SQR(refa - origblurmask->a[y][x] / 327.68f) + SQR(refb - origblurmask->b[y][x] / 327.68f) + SQR(lumaref - origblurmask->L[y][x] / 327.68f));
|
||||||
} else {
|
} else {
|
||||||
dE = sqrt(SQR(refa - origblur->a[y][x] / 327.68f) + SQR(refb - origblur->b[y][x] / 327.68f) + SQR(lumaref - rL));
|
dE = sqrt(SQR(refa - origblur->a[y][x] / 327.68f) + SQR(refb - origblur->b[y][x] / 327.68f) + SQR(lumaref - rL));
|
||||||
|
rhuemask = rhue;
|
||||||
|
rchromask = rchro;
|
||||||
|
rLmask = rL;
|
||||||
}
|
}
|
||||||
|
|
||||||
float cli = 1.f;
|
float cli = 1.f;
|
||||||
@ -5258,15 +5262,15 @@ void ImProcFunctions::Expo_vibr_Local(float moddE, float powdE, int senstype, La
|
|||||||
float realstrb = 1.f;
|
float realstrb = 1.f;
|
||||||
|
|
||||||
//prepare shape detection
|
//prepare shape detection
|
||||||
float deltachro = fabs(rchro - chromaref);
|
float deltachro = fabs(rchromask - chromaref);
|
||||||
float deltahue = fabs(rhue - hueref);
|
float deltahue = fabs(rhuemask - hueref);
|
||||||
|
|
||||||
if (deltahue > rtengine::RT_PI) {
|
if (deltahue > rtengine::RT_PI) {
|
||||||
deltahue = - (deltahue - 2.f * rtengine::RT_PI);
|
deltahue = - (deltahue - 2.f * rtengine::RT_PI);
|
||||||
}
|
}
|
||||||
|
|
||||||
float deltaE = 20.f * deltahue + deltachro; //between 0 and 280
|
float deltaE = 20.f * deltahue + deltachro; //between 0 and 280
|
||||||
float deltaL = fabs(lumaref - rL); //between 0 and 100
|
float deltaL = fabs(lumaref - rLmask); //between 0 and 100
|
||||||
|
|
||||||
float kch = 1.f;
|
float kch = 1.f;
|
||||||
float kchchro = 1.f;
|
float kchchro = 1.f;
|
||||||
@ -5836,10 +5840,19 @@ void ImProcFunctions::ColorLight_Local(float moddE, float powdE, int call, LabIm
|
|||||||
origblur->b[y][x] = 0.01f;
|
origblur->b[y][x] = 0.01f;
|
||||||
}
|
}
|
||||||
float dE = 0.f;
|
float dE = 0.f;
|
||||||
|
float rhuemask = 0.f;
|
||||||
|
float rchromask = 0.f;
|
||||||
|
float rLmask = 0.f;
|
||||||
if (lp.showmaskcolmet >= 2) {
|
if (lp.showmaskcolmet >= 2) {
|
||||||
|
rhuemask = xatan2f(origblurmask->b[y][x], origblurmask->a[y][x]);
|
||||||
|
rchromask = sqrt(SQR(origblurmask->b[y][x]) + SQR(origblurmask->a[y][x])) / 327.68f;
|
||||||
|
rLmask = origblurmask->L[y][x] / 327.68f;
|
||||||
dE = sqrt(SQR(refa - origblurmask->a[y][x] / 327.68f) + SQR(refb - origblurmask->b[y][x] / 327.68f) + SQR(lumaref - origblurmask->L[y][x] / 327.68f));
|
dE = sqrt(SQR(refa - origblurmask->a[y][x] / 327.68f) + SQR(refb - origblurmask->b[y][x] / 327.68f) + SQR(lumaref - origblurmask->L[y][x] / 327.68f));
|
||||||
} else {
|
} else {
|
||||||
dE = sqrt(SQR(refa - origblur->a[y][x] / 327.68f) + SQR(refb - origblur->b[y][x] / 327.68f) + SQR(lumaref - rL));
|
dE = sqrt(SQR(refa - origblur->a[y][x] / 327.68f) + SQR(refb - origblur->b[y][x] / 327.68f) + SQR(lumaref - rL));
|
||||||
|
rhuemask = rhue;
|
||||||
|
rchromask = rchro;
|
||||||
|
rLmask = rL;
|
||||||
}
|
}
|
||||||
//retriev data curve lightness
|
//retriev data curve lightness
|
||||||
float cli = (buflight[loy - begy][lox - begx]);
|
float cli = (buflight[loy - begy][lox - begx]);
|
||||||
@ -5888,9 +5901,9 @@ void ImProcFunctions::ColorLight_Local(float moddE, float powdE, int call, LabIm
|
|||||||
float realclighsl = 1.f;
|
float realclighsl = 1.f;
|
||||||
float realhh = 0.f;
|
float realhh = 0.f;
|
||||||
//evaluate delta Hue and delta Chro
|
//evaluate delta Hue and delta Chro
|
||||||
float deltachro = fabs(rchro - chromaref);
|
float deltachro = fabs(rchromask - chromaref);
|
||||||
|
|
||||||
float deltahue = fabs(rhue - hueref);
|
float deltahue = fabs(rhuemask - hueref);
|
||||||
|
|
||||||
if (deltahue > rtengine::RT_PI) {
|
if (deltahue > rtengine::RT_PI) {
|
||||||
deltahue = - (deltahue - 2.f * rtengine::RT_PI);
|
deltahue = - (deltahue - 2.f * rtengine::RT_PI);
|
||||||
@ -5898,7 +5911,7 @@ void ImProcFunctions::ColorLight_Local(float moddE, float powdE, int call, LabIm
|
|||||||
|
|
||||||
//pseudo deltaE
|
//pseudo deltaE
|
||||||
float deltaE = 20.f * deltahue + deltachro; //pseudo deltaE between 0 and 280
|
float deltaE = 20.f * deltahue + deltachro; //pseudo deltaE between 0 and 280
|
||||||
float deltaL = fabs(lumaref - rL); //between 0 and 100
|
float deltaL = fabs(lumaref - rLmask); //between 0 and 100
|
||||||
|
|
||||||
float kchchro = 1.f;
|
float kchchro = 1.f;
|
||||||
float kch = 1.f;
|
float kch = 1.f;
|
||||||
@ -7565,7 +7578,7 @@ void ImProcFunctions::fftw_denoise(int GW, int GH, int max_numblox_W, int min_nu
|
|||||||
|
|
||||||
|
|
||||||
void ImProcFunctions::Lab_Local(int call, int sp, LUTf & sobelrefs, float** shbuffer, LabImage * original, LabImage * transformed, LabImage * reserved, int cx, int cy, int oW, int oH, int sk,
|
void ImProcFunctions::Lab_Local(int call, int sp, LUTf & sobelrefs, float** shbuffer, LabImage * original, LabImage * transformed, LabImage * reserved, int cx, int cy, int oW, int oH, int sk,
|
||||||
const LocretigainCurve & locRETgainCcurve, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, const LocCCmaskCurve & locccmasCurve, const LocLLmaskCurve & locllmasCurve, const LocCCmaskexpCurve & locccmasexpCurve, const LocLLmaskexpCurve & locllmasexpCurve, bool CCmaskutili, bool LLmaskutili,
|
const LocretigainCurve & locRETgainCcurve, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, const LocCCmaskCurve & locccmasCurve, const LocLLmaskCurve & locllmasCurve, const LocCCmaskexpCurve & locccmasexpCurve, const LocLLmaskexpCurve & locllmasexpCurve,
|
||||||
bool & LHutili, bool & HHutili, LUTf & cclocalcurve, bool & localskutili, LUTf & sklocalcurve, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurveloc, LUTf & shtonecurveloc, LUTf & tonecurveloc, LUTf & lightCurveloc, double & huerefblur, double & hueref, double & chromaref, double & lumaref, double & sobelref)
|
bool & LHutili, bool & HHutili, LUTf & cclocalcurve, bool & localskutili, LUTf & sklocalcurve, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurveloc, LUTf & shtonecurveloc, LUTf & tonecurveloc, LUTf & lightCurveloc, double & huerefblur, double & hueref, double & chromaref, double & lumaref, double & sobelref)
|
||||||
{
|
{
|
||||||
//general call of others functions : important return hueref, chromaref, lumaref
|
//general call of others functions : important return hueref, chromaref, lumaref
|
||||||
|
@ -1103,8 +1103,6 @@ private:
|
|||||||
// Set local curves of current spot to LUT
|
// Set local curves of current spot to LUT
|
||||||
bool LHutili = false;
|
bool LHutili = false;
|
||||||
bool HHutili = false;
|
bool HHutili = false;
|
||||||
bool CCmaskutili = false;
|
|
||||||
bool LLmaskutili = false;
|
|
||||||
bool locallutili = false;
|
bool locallutili = false;
|
||||||
bool localcutili = false;
|
bool localcutili = false;
|
||||||
bool localskutili = false;
|
bool localskutili = false;
|
||||||
@ -1112,8 +1110,10 @@ private:
|
|||||||
locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve);
|
locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve);
|
||||||
loclhCurve.Set(params.locallab.spots.at(sp).LHcurve, LHutili);
|
loclhCurve.Set(params.locallab.spots.at(sp).LHcurve, LHutili);
|
||||||
lochhCurve.Set(params.locallab.spots.at(sp).HHcurve, HHutili);
|
lochhCurve.Set(params.locallab.spots.at(sp).HHcurve, HHutili);
|
||||||
locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve, CCmaskutili);
|
locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve);
|
||||||
locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve, LLmaskutili);
|
locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve);
|
||||||
|
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
|
||||||
|
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
|
||||||
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve, 1);
|
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve, 1);
|
||||||
CurveFactory::curveCCLocal(localcutili, params.locallab.spots.at(sp).cccurve, cclocalcurve, 1);
|
CurveFactory::curveCCLocal(localcutili, params.locallab.spots.at(sp).cccurve, cclocalcurve, 1);
|
||||||
CurveFactory::curveskLocal(localskutili, params.locallab.spots.at(sp).skintonescurve, sklocalcurve, 1);
|
CurveFactory::curveskLocal(localskutili, params.locallab.spots.at(sp).skintonescurve, sklocalcurve, 1);
|
||||||
@ -1139,7 +1139,7 @@ private:
|
|||||||
hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
||||||
1);
|
1);
|
||||||
|
|
||||||
ipf.Lab_Local(2, sp, sobelrefs, (float**)shbuffer, labView, labView, reservView, 0, 0, fw, fh, 1, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, locccmasexpCurve, locllmasexpCurve, CCmaskutili, LLmaskutili,
|
ipf.Lab_Local(2, sp, sobelrefs, (float**)shbuffer, labView, labView, reservView, 0, 0, fw, fh, 1, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, locccmasexpCurve, locllmasexpCurve,
|
||||||
LHutili, HHutili, cclocalcurve, localskutili, sklocalcurve, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerefblu, huere, chromare, lumare, sobelre);
|
LHutili, HHutili, cclocalcurve, localskutili, sklocalcurve, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerefblu, huere, chromare, lumare, sobelre);
|
||||||
|
|
||||||
// Clear local curves
|
// Clear local curves
|
||||||
|
Loading…
x
Reference in New Issue
Block a user