18 #ifndef PIC_FILTERING_FILTER_DRAGO_TMO_HPP 19 #define PIC_FILTERING_FILTER_DRAGO_TMO_HPP 21 #include "../util/array.hpp" 22 #include "../filtering/filter.hpp" 23 #include "../filtering/filter_luminance.hpp" 85 this->b = (
b > 0.0f) ?
b : 0.95
f;
99 int channels = src[0]->channels;
101 for(
int j = box->
y0; j < box->y1; j++) {
103 for(
int i = box->
x0; i < box->x1; i++) {
105 float *dataIn = (*src[0])(i, j);
106 float *dataLum = (*src[1])(i, j);
107 float *dataOut = (*dst )(i, j);
109 if(dataLum[0] > 0.0
f) {
113 float Ld =
constant2 * logf(1.0
f + L_scaled) / logf(2.0
f + 8.0
f * tmp);
115 for(
int k = 0; k < channels; k++) {
116 dataOut[k] = (dataIn[k] * Ld) / dataLum[0];
The BBox class manages the creation of bounding boxes for images.
Definition: bbox.hpp:29
std::vector< Image * > ImageVec
ImageVec an std::vector of pic::Image.
Definition: image_vec.hpp:29
int x0
Definition: bbox.hpp:32
float Lw_Max
Definition: filter_drago_tmo.hpp:34
The Filter class.
Definition: filter.hpp:50
void ProcessBBox(Image *dst, ImageVec src, BBox *box)
ProcessBBox.
Definition: filter_drago_tmo.hpp:97
float Lw_a
Definition: filter_drago_tmo.hpp:34
float Lw_Max_scaled
Definition: filter_drago_tmo.hpp:33
int y0
Definition: bbox.hpp:32
The FilterDragoTMO class.
Definition: filter_drago_tmo.hpp:30
float b
Definition: filter_drago_tmo.hpp:34
#define PIC_INLINE
Definition: base.hpp:33
float Lw_a_scaled
Definition: filter_drago_tmo.hpp:33
FilterDragoTMO()
FilterDragoTMO.
Definition: filter_drago_tmo.hpp:69
The Image class stores an image as buffer of float.
Definition: image.hpp:60
virtual void f(FilterFData *data)
f
Definition: filter_radial_basis_function.hpp:69
float constant2
Definition: filter_drago_tmo.hpp:33
float Ld_Max
Definition: filter_drago_tmo.hpp:34
Definition: bilateral_separation.hpp:25
static T * assign(T *data, int size, T *ret)
assign
Definition: array.hpp:464
float constant1
Definition: filter_drago_tmo.hpp:33
void update(float Ld_Max, float b, float Lw_Max, float Lwa)
update
Definition: filter_drago_tmo.hpp:80