Division by zero in ciecam02, Issue 2646
This commit is contained in:
parent
9d7bb2a917
commit
bc856c2377
@ -2131,6 +2131,7 @@ void ColorTemp::xyz2jchqms_ciecam02float( float &J, float &C, float &h, float &Q
|
||||
Q = wh * J;
|
||||
J *= J * 100.0f;
|
||||
M = C * pfl;
|
||||
Q = (Q == 0.f ? 0.0001f : Q); // avoid division by zero
|
||||
s = 100.0f * sqrtf( M / Q );
|
||||
h = (myh * 180.f) / (float)M_PI;
|
||||
|
||||
|
@ -620,9 +620,9 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) {
|
||||
ncie = new CieImage (pW, pH);
|
||||
|
||||
if (!CAMBrightCurveJ && (params.colorappearance.algo=="JC" || params.colorappearance.algo=="JS" || params.colorappearance.algo=="ALL"))
|
||||
CAMBrightCurveJ(65536,0);
|
||||
CAMBrightCurveJ(32768,0);
|
||||
if (!CAMBrightCurveQ && (params.colorappearance.algo=="QM" || params.colorappearance.algo=="ALL"))
|
||||
CAMBrightCurveQ(65536,0);
|
||||
CAMBrightCurveQ(32768,0);
|
||||
if(settings->ciecamfloat){
|
||||
ipf.ciecam_02float (ncie, float(adap), begh, endh, pW, 2, nprevl, ¶ms, customColCurve1,customColCurve2,customColCurve3, histLCAM, histCCAM, CAMBrightCurveJ, CAMBrightCurveQ, CAMMean, 5, 1, execsharp, d, scale, 1);
|
||||
if(params.colorappearance.autodegree && acListener && params.colorappearance.enabled) acListener->autoCamChanged(100.*(double)d);
|
||||
|
@ -1365,7 +1365,7 @@ if(params->colorappearance.enabled) {
|
||||
//evaluate lightness, contrast
|
||||
if (needJ) {
|
||||
if (!CAMBrightCurveJ) {
|
||||
CAMBrightCurveJ(65536,0);
|
||||
CAMBrightCurveJ(32768,0);
|
||||
CAMBrightCurveJ.dirty = false;
|
||||
}
|
||||
float jli=params->colorappearance.jlight;
|
||||
@ -1374,7 +1374,7 @@ if(params->colorappearance.enabled) {
|
||||
}
|
||||
if (needQ) {
|
||||
if (!CAMBrightCurveQ) {
|
||||
CAMBrightCurveQ(65536,0);
|
||||
CAMBrightCurveQ(32768,0);
|
||||
CAMBrightCurveQ.clear();
|
||||
CAMBrightCurveQ.dirty = false;
|
||||
}
|
||||
@ -1497,8 +1497,8 @@ if(settings->viewinggreySc==1) yb=18.0f;//fixed
|
||||
else if(alg==3 || alg==0 || alg==2) {
|
||||
if(alg==3 || alg==2) {
|
||||
float coef=32760.f/wh;
|
||||
if(Qpro*coef > 32767.0f)
|
||||
Qpro=(CAMBrightCurveQ[(float)32767.0f])/coef;//brightness and contrast
|
||||
if(Qpro*coef >= 32767.0f)
|
||||
Qpro=(CAMBrightCurveQ[32767])/coef;//brightness and contrast
|
||||
else
|
||||
Qpro=(CAMBrightCurveQ[(float)(Qpro*coef)])/coef;//brightness and contrast
|
||||
}
|
||||
@ -1512,6 +1512,7 @@ if(settings->viewinggreySc==1) yb=18.0f;//fixed
|
||||
Color::skinredfloat(Jpro, hpro, sres, Mp, dred, protect_red,0,rstprotection,100.f, Mpro);
|
||||
Jpro = SQR((10.f*Qpro)/wh);
|
||||
Cpro= Mpro/coe;
|
||||
Qpro = (Qpro == 0.f ? epsil : Qpro); // avoid division by zero
|
||||
spro = 100.0f * sqrtf( Mpro / Qpro );
|
||||
if(alg!=2) {
|
||||
if(Jpro > 99.9f)
|
||||
|
Loading…
x
Reference in New Issue
Block a user