18 #ifndef PIC_TONE_MAPPING_RAMAN_TMO_HPP 19 #define PIC_TONE_MAPPING_RAMAN_TMO_HPP 21 #include "../base.hpp" 22 #include "../util/std_util.hpp" 24 #include "../filtering/filter_luminance.hpp" 25 #include "../filtering/filter_bilateral_2dg.hpp" 27 #include "../tone_mapping/get_all_exposures.hpp" 28 #include "../tone_mapping/tone_mapping_operator.hpp" 48 if(imgIn.size() > 1) {
58 stdVectorClear<Image>(stack);
72 return fabsf(x) + param[0];
83 int n = int(imgIn.size());
92 float C = 70.0f / 255.0f;
94 int width = imgIn[0]->
width;
95 int height = imgIn[0]->height;
97 float sigma_s = K1 *
MIN(width, height);
101 std::vector<float> param;
113 printf(
"Blending...");
118 for(
int j = 0; j < n; j++) {
123 images[0]->getMinVal(NULL, &min);
124 images[0]->getMaxVal(NULL, &max);
125 float sigma_r = K2 * (max - min);
134 auto tmp = imgIn[j]->clone();
156 setToANullVector<Image>(
images, 3);
185 return rtmo.
Process(imgIn, imgOut);
~RamanTMO()
Definition: raman_tmo.hpp:159
PIC_INLINE bool ImageVecCheck(ImageVec &imgIn, int minInputImages)
ImageVecCheck.
Definition: image_vec.hpp:147
Image * Process(ImageVec imgIn, Image *imgOut=NULL)
Process.
Definition: tone_mapping_operator.hpp:120
void setZero()
setZero sets data to 0.0f.
std::vector< Image * > ImageVec
ImageVec an std::vector of pic::Image.
Definition: image_vec.hpp:29
ImageVec images
Definition: tone_mapping_operator.hpp:35
The ToneMappingOperator class.
Definition: tone_mapping_operator.hpp:31
static Image * execute(Image *imgIn, Image *imgOut)
execute
Definition: raman_tmo.hpp:170
virtual Image * Process(ImageVec imgIn, Image *imgOut)
Process.
Definition: filter.hpp:390
The FilterLuminance class.
Definition: filter_luminance.hpp:33
Image * ProcessAuxStack(ImageVec imgIn, Image *imgOut)
ProcessAuxStack.
Definition: raman_tmo.hpp:81
static Image * executeStack(ImageVec imgIn, Image *imgOut)
executeStack
Definition: raman_tmo.hpp:182
void updateImage(Image *imgIn)
updateImage
Definition: tone_mapping_operator.hpp:78
void release()
release
Definition: tone_mapping_operator.hpp:68
FilterLuminance flt_lum
Definition: raman_tmo.hpp:38
Image * ProcessAux(ImageVec imgIn, Image *imgOut)
ProcessAux.
Definition: raman_tmo.hpp:46
static Image * execute(Image *imgIn, Image *imgOut, float sigma_s, float sigma_r)
execute
Definition: filter_bilateral_2dg.hpp:101
#define MIN(a, b)
Definition: math.hpp:69
The Image class stores an image as buffer of float.
Definition: image.hpp:60
PIC_INLINE ImageVec getAllExposuresImages(Image *imgIn, std::vector< float > &fstops, float gamma=2.2f)
getAllExposuresImages converts an image into a stack of images.
Definition: get_all_exposures.hpp:144
The RamanTMO class.
Definition: raman_tmo.hpp:35
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
static float ramanFunction(float x, std::vector< float > ¶m)
ramanFunction
Definition: raman_tmo.hpp:70
int width
Definition: image.hpp:80
RamanTMO()
RamanTMO.
Definition: raman_tmo.hpp:154
PIC_INLINE std::vector< float > getAllExposuresUniform(Image *imgIn)
getAllExposuresUniform computes all required exposure values for reconstructing the input image using...
Definition: get_all_exposures.hpp:87