From 71c8643ce4158808222f391dc586e8ccb3d173ea Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 15 Jun 2017 23:18:46 +0200 Subject: [PATCH] Fix some coverity issues --- rtengine/colortemp.cc | 246 ++++++++++++++++++------------------- rtengine/ipretinex.cc | 2 +- rtengine/rawimagesource.cc | 4 +- rtengine/rawimagesource.h | 6 +- 4 files changed, 129 insertions(+), 129 deletions(-) diff --git a/rtengine/colortemp.cc b/rtengine/colortemp.cc index 5cf880b41..555ac7d29 100644 --- a/rtengine/colortemp.cc +++ b/rtengine/colortemp.cc @@ -1154,7 +1154,7 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul, double fx[50], fy[50], fz[50]; int palet = -1; - bool palette = false; +// bool palette = false; // double tempalet; // correlated temperature // We first test for specially handled methods @@ -1321,128 +1321,128 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul, gmul /= max; bmul /= max; - if(palette) // palette of color : 32 skin, 4 grey, 4 blue sky - //calculate L a b in function of color and illuminant - //J.Desmis january 2012 - { - double x_x, y_y, z_z; - // illuminants - // color - const double* spec_colorpalet[] = { - ColabSkin98_m2_10_spect, ColabSkin95_0_4_spect, ColabSkin91_4_14_spect, ColabSkin90_m1_20_spect, - ColorchechSGSkiK285_11_17_spect, ColabSkin87_8_8_spect, ColabSkin87_3_10_spect, ColabSkin89_8_21_spect, - ColabSkin70_7_32_spect, ColabSkin77_12_21_spect, ColabSkin75_8_4_spect, ColabSkin75_10_33_spect, - ColorchechSkiB166_18_18_spect, ColabSkin65_7_24_spect, ColorchechSGSkiF763_14_26_spect, ColabSkin65_33_11_spect, - ColabSkin57_19_6_spect, ColabSkin57_4_19_spect, ColabSkin57_10_28_spect, ColabSkin57_22_18_spect, - ColabSkin40_17_17_spect, ColabSkin40_7_19_spect, ColabSkin40_4_11_spect, ColabSkin40_17_6_spect, - ColorchechSkiA138_13_14_spect, ColabSkin33_6_15_spect, ColabSkin35_15_17_spect, ColabSkin33_15_5_spect, - ColabSkin26_18_18_spect, ColabSkin24_7_5_spect, ColabSkin24_5_6_spect, ColabSkin20_4_2_spect, - ColabSky42_0_m24_spect, ColorchechBluC150_m5_m22_spect, ColorchechWhiA496_spect, ColorchechSGBlaN3_6_spect, - JDC468_GraK14_44_spect, ColorchechGraC4_67_spect, ColabSky60_0_m31_spect, ColorchechDCBluN881_m7_m14_spect - //ColabSkin33_10_15_spect, - //ColabSkin81_2_14_spect, - }; - - int N_col = sizeof(spec_colorpalet) / sizeof(spec_colorpalet[0]); //number of color - - if(palet < 28) { - const double* spect_illummax[] = { - Daylight5300_spect, Cloudy6200_spect, Shade7600_spect, A2856_spect, FluoF1_spect, FluoF2_spect, FluoF3_spect, FluoF4_spect, FluoF5_spect, FluoF6_spect, FluoF7_spect, - FluoF8_spect, FluoF9_spect, FluoF10_spect, FluoF11_spect, FluoF12_spect, HMI_spect, GTI_spect, JudgeIII_spect, Solux3500_spect, Solux4100_spect, Solux4700_spect, NG_Solux4700_spect, NG_CRSSP12WWMR16_spect, NG_CRSSP12WWMR16_spect, - Flash5500_spect, Flash6000_spect, Flash6500_spect - }; - for(int i = 0; i < N_col; i++) { - spectrum_to_color_xyz_preset(spec_colorpalet[i], spect_illummax[palet], x_x, y_y, z_z); - Xpal[i] = x_x; - Ypal[i] = y_y; - Zpal[i] = z_z; - } - } else /*if(palet >= 28)*/ { - if(temp < INITIALBLACKBODY) { - for(int i = 0; i < N_col; i++) { - spectrum_to_color_xyz_blackbody(spec_colorpalet[i], temp, x_x, y_y, z_z); - Xpal[i] = x_x; - Ypal[i] = y_y; - Zpal[i] = z_z; - } - } else { - double m11p, m22p; - m11p = m1; - m22p = m2; - - for(int i = 0; i < N_col; i++) { // calculate XYZ palette for illuminant and color - spectrum_to_color_xyz_daylight(spec_colorpalet[i], m11p, m22p, x_x, y_y, z_z); - Xpal[i] = x_x; - Ypal[i] = y_y; - Zpal[i] = z_z; - } - } - } - - double xp = xD; - double yp = yD; - double Xwbpal = xp / yp; //white balance - double Ywbpal = 1.0; - double Zwbpal = (1.0 - xp - yp) / yp; - //chromatic adaptation CIECAT02 at temp - double adap = 1.0; - cieCAT02(Xwbpal, Ywbpal, Zwbpal, CAM02BB00, CAM02BB01, CAM02BB02, CAM02BB10, CAM02BB11, CAM02BB12, CAM02BB20, CAM02BB21, CAM02BB22, adap); - - //here new value of X,Y,Z with chromatic CAM02 adaptation - for(int i = 0; i < N_col; i++) { - Xcam02pal[i] = CAM02BB00 * Xpal[i] + CAM02BB01 * Ypal[i] + CAM02BB02 * Zpal[i] ; - Ycam02pal[i] = CAM02BB10 * Xpal[i] + CAM02BB11 * Ypal[i] + CAM02BB12 * Zpal[i] ; - Zcam02pal[i] = CAM02BB20 * Xpal[i] + CAM02BB21 * Ypal[i] + CAM02BB22 * Zpal[i] ; - //printf("CoulXYZ %i X %f Y %f Z %f\n", i, Xpal[i],Ypal[i],Zpal[i]); - //printf("CoulCAM %i X %f Y %f Z %f\n", i, Xcam02pal[i],Ycam02pal[i],Zcam02pal[i]); - } - - //Calculate Lab - for(int i = 0; i < N_col; i++) { - xr[i] = Xcam02pal[i] / whiteD50[0]; - yr[i] = Ycam02pal[i] / whiteD50[1]; - zr[i] = Zcam02pal[i] / whiteD50[2]; - - // xr, yr , zr > epsilon - if(xr[i] > epsilon) { - fx[i] = std::cbrt(xr[i]); - } else { - fx[i] = (903.3 * xr[i] + 16.0) / 116.0; - } - - if(yr[i] > epsilon) { - fy[i] = std::cbrt(yr[i]); - } else { - fy[i] = (903.3 * yr[i] + 16.0) / 116.0; - } - - if(zr[i] > epsilon) { - fz[i] = std::cbrt(zr[i]); - } else { - fz[i] = (903.3 * zr[i] + 16.0) / 116.0; - } - } - - //Lab values in function of color and illuminant - //these values can be compared to preview values when using white-balance (skin / sky / BW) - double Lpal[50], apal[50], bpal[50]; - - for(int i = 0; i < N_col; i++) { - Lpal[i] = 116.0 * fy[i] - 16.0; - apal[i] = 500.0 * (fx[i] - fy[i]); - bpal[i] = 200.0 * (fy[i] - fz[i]); - } - - // uncomment to display Lab values - //for(int i=0;iCRI_color != 0) { - printf("Lpal=%2.2f apal=%2.2f bpal=%2.2f\n", Lpal[0], apal[0], bpal[0]); //sample - } - - //} - - } //end palette +// if(palette) // palette of color : 32 skin, 4 grey, 4 blue sky +// //calculate L a b in function of color and illuminant +// //J.Desmis january 2012 +// { +// double x_x, y_y, z_z; +// // illuminants +// // color +// const double* spec_colorpalet[] = { +// ColabSkin98_m2_10_spect, ColabSkin95_0_4_spect, ColabSkin91_4_14_spect, ColabSkin90_m1_20_spect, +// ColorchechSGSkiK285_11_17_spect, ColabSkin87_8_8_spect, ColabSkin87_3_10_spect, ColabSkin89_8_21_spect, +// ColabSkin70_7_32_spect, ColabSkin77_12_21_spect, ColabSkin75_8_4_spect, ColabSkin75_10_33_spect, +// ColorchechSkiB166_18_18_spect, ColabSkin65_7_24_spect, ColorchechSGSkiF763_14_26_spect, ColabSkin65_33_11_spect, +// ColabSkin57_19_6_spect, ColabSkin57_4_19_spect, ColabSkin57_10_28_spect, ColabSkin57_22_18_spect, +// ColabSkin40_17_17_spect, ColabSkin40_7_19_spect, ColabSkin40_4_11_spect, ColabSkin40_17_6_spect, +// ColorchechSkiA138_13_14_spect, ColabSkin33_6_15_spect, ColabSkin35_15_17_spect, ColabSkin33_15_5_spect, +// ColabSkin26_18_18_spect, ColabSkin24_7_5_spect, ColabSkin24_5_6_spect, ColabSkin20_4_2_spect, +// ColabSky42_0_m24_spect, ColorchechBluC150_m5_m22_spect, ColorchechWhiA496_spect, ColorchechSGBlaN3_6_spect, +// JDC468_GraK14_44_spect, ColorchechGraC4_67_spect, ColabSky60_0_m31_spect, ColorchechDCBluN881_m7_m14_spect +// //ColabSkin33_10_15_spect, +// //ColabSkin81_2_14_spect, +// }; +// +// int N_col = sizeof(spec_colorpalet) / sizeof(spec_colorpalet[0]); //number of color +// +// if(palet < 28) { +// const double* spect_illummax[] = { +// Daylight5300_spect, Cloudy6200_spect, Shade7600_spect, A2856_spect, FluoF1_spect, FluoF2_spect, FluoF3_spect, FluoF4_spect, FluoF5_spect, FluoF6_spect, FluoF7_spect, +// FluoF8_spect, FluoF9_spect, FluoF10_spect, FluoF11_spect, FluoF12_spect, HMI_spect, GTI_spect, JudgeIII_spect, Solux3500_spect, Solux4100_spect, Solux4700_spect, NG_Solux4700_spect, NG_CRSSP12WWMR16_spect, NG_CRSSP12WWMR16_spect, +// Flash5500_spect, Flash6000_spect, Flash6500_spect +// }; +// for(int i = 0; i < N_col; i++) { +// spectrum_to_color_xyz_preset(spec_colorpalet[i], spect_illummax[palet], x_x, y_y, z_z); +// Xpal[i] = x_x; +// Ypal[i] = y_y; +// Zpal[i] = z_z; +// } +// } else /*if(palet >= 28)*/ { +// if(temp < INITIALBLACKBODY) { +// for(int i = 0; i < N_col; i++) { +// spectrum_to_color_xyz_blackbody(spec_colorpalet[i], temp, x_x, y_y, z_z); +// Xpal[i] = x_x; +// Ypal[i] = y_y; +// Zpal[i] = z_z; +// } +// } else { +// double m11p, m22p; +// m11p = m1; +// m22p = m2; +// +// for(int i = 0; i < N_col; i++) { // calculate XYZ palette for illuminant and color +// spectrum_to_color_xyz_daylight(spec_colorpalet[i], m11p, m22p, x_x, y_y, z_z); +// Xpal[i] = x_x; +// Ypal[i] = y_y; +// Zpal[i] = z_z; +// } +// } +// } +// +// double xp = xD; +// double yp = yD; +// double Xwbpal = xp / yp; //white balance +// double Ywbpal = 1.0; +// double Zwbpal = (1.0 - xp - yp) / yp; +// //chromatic adaptation CIECAT02 at temp +// double adap = 1.0; +// cieCAT02(Xwbpal, Ywbpal, Zwbpal, CAM02BB00, CAM02BB01, CAM02BB02, CAM02BB10, CAM02BB11, CAM02BB12, CAM02BB20, CAM02BB21, CAM02BB22, adap); +// +// //here new value of X,Y,Z with chromatic CAM02 adaptation +// for(int i = 0; i < N_col; i++) { +// Xcam02pal[i] = CAM02BB00 * Xpal[i] + CAM02BB01 * Ypal[i] + CAM02BB02 * Zpal[i] ; +// Ycam02pal[i] = CAM02BB10 * Xpal[i] + CAM02BB11 * Ypal[i] + CAM02BB12 * Zpal[i] ; +// Zcam02pal[i] = CAM02BB20 * Xpal[i] + CAM02BB21 * Ypal[i] + CAM02BB22 * Zpal[i] ; +// //printf("CoulXYZ %i X %f Y %f Z %f\n", i, Xpal[i],Ypal[i],Zpal[i]); +// //printf("CoulCAM %i X %f Y %f Z %f\n", i, Xcam02pal[i],Ycam02pal[i],Zcam02pal[i]); +// } +// +// //Calculate Lab +// for(int i = 0; i < N_col; i++) { +// xr[i] = Xcam02pal[i] / whiteD50[0]; +// yr[i] = Ycam02pal[i] / whiteD50[1]; +// zr[i] = Zcam02pal[i] / whiteD50[2]; +// +// // xr, yr , zr > epsilon +// if(xr[i] > epsilon) { +// fx[i] = std::cbrt(xr[i]); +// } else { +// fx[i] = (903.3 * xr[i] + 16.0) / 116.0; +// } +// +// if(yr[i] > epsilon) { +// fy[i] = std::cbrt(yr[i]); +// } else { +// fy[i] = (903.3 * yr[i] + 16.0) / 116.0; +// } +// +// if(zr[i] > epsilon) { +// fz[i] = std::cbrt(zr[i]); +// } else { +// fz[i] = (903.3 * zr[i] + 16.0) / 116.0; +// } +// } +// +// //Lab values in function of color and illuminant +// //these values can be compared to preview values when using white-balance (skin / sky / BW) +// double Lpal[50], apal[50], bpal[50]; +// +// for(int i = 0; i < N_col; i++) { +// Lpal[i] = 116.0 * fy[i] - 16.0; +// apal[i] = 500.0 * (fx[i] - fy[i]); +// bpal[i] = 200.0 * (fy[i] - fz[i]); +// } +// +// // uncomment to display Lab values +// //for(int i=0;iCRI_color != 0) { +// printf("Lpal=%2.2f apal=%2.2f bpal=%2.2f\n", Lpal[0], apal[0], bpal[0]); //sample +// } +// +// //} +// +// } //end palette // begin CRI_RT : color rendering index RT - adaptation of CRI by J.Desmis // CRI = 100 for Blackbody and Daylight diff --git a/rtengine/ipretinex.cc b/rtengine/ipretinex.cc index 24567205f..e851cf56c 100644 --- a/rtengine/ipretinex.cc +++ b/rtengine/ipretinex.cc @@ -136,7 +136,7 @@ namespace rtengine extern const Settings* settings; -void RawImageSource::MSR(float** luminance, float** originalLuminance, float **exLuminance, LUTf & mapcurve, bool &mapcontlutili, int width, int height, RetinexParams deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax) +void RawImageSource::MSR(float** luminance, float** originalLuminance, float **exLuminance, LUTf & mapcurve, bool &mapcontlutili, int width, int height, const RetinexParams &deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax) { if (deh.enabled) {//enabled diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 98f4ef8f7..5bab3caa7 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -2103,7 +2103,7 @@ void RawImageSource::demosaic(const RAWParams &raw) //void RawImageSource::retinexPrepareBuffers(ColorManagementParams cmp, RetinexParams retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI) -void RawImageSource::retinexPrepareBuffers(ColorManagementParams cmp, RetinexParams retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI) +void RawImageSource::retinexPrepareBuffers(ColorManagementParams cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI) { bool useHsl = (retinexParams.retinexcolorspace == "HSLLOG" || retinexParams.retinexcolorspace == "HSLLIN"); conversionBuffer[0] (W - 2 * border, H - 2 * border); @@ -2357,7 +2357,7 @@ void RawImageSource::retinexPrepareBuffers(ColorManagementParams cmp, RetinexPar } -void RawImageSource::retinexPrepareCurves(RetinexParams retinexParams, LUTf &cdcurve, LUTf &mapcurve, RetinextransmissionCurve &retinextransmissionCurve, RetinexgaintransmissionCurve &retinexgaintransmissionCurve, bool &retinexcontlutili, bool &mapcontlutili, bool &useHsl, LUTu & lhist16RETI, LUTu & histLRETI) +void RawImageSource::retinexPrepareCurves(const RetinexParams &retinexParams, LUTf &cdcurve, LUTf &mapcurve, RetinextransmissionCurve &retinextransmissionCurve, RetinexgaintransmissionCurve &retinexgaintransmissionCurve, bool &retinexcontlutili, bool &mapcontlutili, bool &useHsl, LUTu & lhist16RETI, LUTu & histLRETI) { useHsl = (retinexParams.retinexcolorspace == "HSLLOG" || retinexParams.retinexcolorspace == "HSLLIN"); diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index 2c0ac6f19..b699a8a3f 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -116,8 +116,8 @@ public: void preprocess (const RAWParams &raw, const LensProfParams &lensProf, const CoarseTransformParams& coarse, bool prepareDenoise = true); void demosaic (const RAWParams &raw); void retinex (ColorManagementParams cmp, RetinexParams deh, ToneCurveParams Tc, LUTf & cdcurve, LUTf & mapcurve, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, multi_array2D &conversionBuffer, bool dehacontlutili, bool mapcontlutili, bool useHsl, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax, LUTu &histLRETI); - void retinexPrepareCurves (RetinexParams retinexParams, LUTf &cdcurve, LUTf &mapcurve, RetinextransmissionCurve &retinextransmissionCurve, RetinexgaintransmissionCurve &retinexgaintransmissionCurve, bool &retinexcontlutili, bool &mapcontlutili, bool &useHsl, LUTu & lhist16RETI, LUTu & histLRETI); - void retinexPrepareBuffers (ColorManagementParams cmp, RetinexParams retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI); + void retinexPrepareCurves (const RetinexParams &retinexParams, LUTf &cdcurve, LUTf &mapcurve, RetinextransmissionCurve &retinextransmissionCurve, RetinexgaintransmissionCurve &retinexgaintransmissionCurve, bool &retinexcontlutili, bool &mapcontlutili, bool &useHsl, LUTu & lhist16RETI, LUTu & histLRETI); + void retinexPrepareBuffers (ColorManagementParams cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI); void flushRawData (); void flushRGB (); void HLRecovery_Global (ToneCurveParams hrp); @@ -193,7 +193,7 @@ public: void boxblur2(float** src, float** dst, float** temp, int H, int W, int box ); void boxblur_resamp(float **src, float **dst, float** temp, int H, int W, int box, int samp ); - void MSR(float** luminance, float **originalLuminance, float **exLuminance, LUTf & mapcurve, bool &mapcontlutili, int width, int height, RetinexParams deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax); + void MSR(float** luminance, float **originalLuminance, float **exLuminance, LUTf & mapcurve, bool &mapcontlutili, int width, int height, const RetinexParams &deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax); void HLRecovery_inpaint (float** red, float** green, float** blue); static void HLRecovery_Luminance (float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval); static void HLRecovery_CIELab (float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval, double cam[3][3], double icam[3][3]);