18 #ifndef PIC_TONE_MAPPING_TUMBLIN_TMO_HPP 19 #define PIC_TONE_MAPPING_TUMBLIN_TMO_HPP 21 #include "../base.hpp" 23 #include "../filtering/filter.hpp" 24 #include "../filtering/filter_luminance.hpp" 25 #include "../tone_mapping/tone_mapping_operator.hpp" 52 images[0]->getMaxVal(NULL, &Lw_Max);
58 images[0]->getLogMeanVal(NULL, &Lw_a_t);
63 float gamma_wd = gamma_w / (1.855f + 0.4f * logf(
Ld_a));
64 float m = powf(
C_Max, (gamma_wd - 1.0f) / 2.0f);
66 float exponent = gamma_w / gamma_d;
67 float scale_norm =
Lw_a;
72 std::vector<float> param;
73 param.push_back(exponent);
74 param.push_back(scale_norm);
75 param.push_back(scale);
89 static float TumblinFun(
float Lw, std::vector<float> ¶m)
92 float Ld = powf(Lw / param[1], param[0]) * param[2];
129 this->Ld_a =
Ld_a > 0.0f ?
Ld_a : 20.0f;
132 this->Lw_a =
Lw_a > 0.0f ?
Lw_a : 1.0f;
155 return 1.855f + 0.4f * log10f(x + 2.3e-5f);
void assign(const Image *imgIn)
assign
Image * Process(ImageVec imgIn, Image *imgOut=NULL)
Process.
Definition: tone_mapping_operator.hpp:120
void update(float Ld_a=20.0f, float Ld_Max=100.0f, float C_Max=100.0f, float Lw_a=1.0f)
update
Definition: tumblin_tmo.hpp:127
std::vector< Image * > ImageVec
ImageVec an std::vector of pic::Image.
Definition: image_vec.hpp:29
ImageVec images
Definition: tone_mapping_operator.hpp:35
float Ld_Max
Definition: tumblin_tmo.hpp:35
The ToneMappingOperator class.
Definition: tone_mapping_operator.hpp:31
float C_Max
Definition: tumblin_tmo.hpp:35
static Image * execute(Image *imgIn, Image *imgOut)
execute
Definition: tumblin_tmo.hpp:141
virtual Image * Process(ImageVec imgIn, Image *imgOut)
Process.
Definition: filter.hpp:390
The FilterLuminance class.
Definition: filter_luminance.hpp:33
~TumblinTMO()
Definition: tumblin_tmo.hpp:115
static float StevenCSF(float x)
StevenCSF.
Definition: tumblin_tmo.hpp:152
void updateImage(Image *imgIn)
updateImage
Definition: tone_mapping_operator.hpp:78
float Ld_a
Definition: tumblin_tmo.hpp:35
void release()
release
Definition: tone_mapping_operator.hpp:68
The TumblinTMO class.
Definition: tumblin_tmo.hpp:32
The Image class stores an image as buffer of float.
Definition: image.hpp:60
static float TumblinFun(float Lw, std::vector< float > ¶m)
TumblinFun.
Definition: tumblin_tmo.hpp:89
float Lw_a
Definition: tumblin_tmo.hpp:35
TumblinTMO(float Ld_a=20.0f, float Ld_Max=100.0f, float C_Max=100.0f, float Lw_a=-1.0f)
TumblinTMO.
Definition: tumblin_tmo.hpp:109
PIC_INLINE ImageVec Single(Image *img)
Single creates an std::vector which contains img; this is for filters input.
Definition: image_vec.hpp:36
Definition: bilateral_separation.hpp:25
Image * ProcessAux(ImageVec imgIn, Image *imgOut)
ProcessAux.
Definition: tumblin_tmo.hpp:44
FilterLuminance flt_lum
Definition: tumblin_tmo.hpp:36