18 #ifndef PIC_TONE_MAPPING_HYBRID_TMO_HPP 19 #define PIC_TONE_MAPPING_HYBRID_TMO_HPP 21 #include "../algorithms/segmentation_tmo_approx.hpp" 22 #include "../algorithms/pyramid.hpp" 23 #include "../filtering/filter_drago_tmo.hpp" 24 #include "../filtering/filter_sigmoid_tmo.hpp" 66 alpha1 = 1.0f / (2.0f * sqrtf(2.0f));
67 alpha2 = powf(1.6f, 9.0f);
105 if((indx == 2) || (indx == 4)) {
121 if(count[0] > 0 && count[1] > 0) {
125 if(count[0] > 0 && count[1] == 0) {
129 if(count[0] == 0 && count[1] > 0) {
Image * seg_map
Definition: hybrid_tmo.hpp:40
float Ld_Max
Definition: hybrid_tmo.hpp:38
void blend(Pyramid *pyr, Pyramid *weight)
blend
Definition: pyramid.hpp:379
int size() const
size computes the number of values.
Definition: image.hpp:481
Image * imgDrago
Definition: hybrid_tmo.hpp:40
float * data
data is the main buffer where pixel values are stored.
Definition: image.hpp:91
int channels
Definition: image.hpp:80
float b
Definition: hybrid_tmo.hpp:38
virtual Image * Process(ImageVec imgIn, Image *imgOut)
Process.
Definition: filter.hpp:390
The Segmentation class.
Definition: segmentation_tmo_approx.hpp:35
The HybridTMO class.
Definition: hybrid_tmo.hpp:31
Pyramid * pyrWeight
Definition: hybrid_tmo.hpp:37
The FilterSigmoidTMO class.
Definition: filter_sigmoid_tmo.hpp:34
void ReinhardApprox(float &alpha1, float &alpha2)
ReinhardApprox.
Definition: hybrid_tmo.hpp:64
The FilterDragoTMO class.
Definition: filter_drago_tmo.hpp:30
void update(Image *img)
update recomputes the pyramid given a compatible image, img.
Definition: pyramid.hpp:280
Image * reconstruct(Image *imgOut)
reconstruct evaluates a Gaussian/Laplacian pyramid.
Definition: pyramid.hpp:320
The Image class stores an image as buffer of float.
Definition: image.hpp:60
HybridTMO()
HybridTMO.
Definition: hybrid_tmo.hpp:46
The Pyramid class.
Definition: pyramid.hpp:36
Pyramid * pyrB
Definition: hybrid_tmo.hpp:37
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
bool isValid()
isValid checks if the current image is valid, which means if they have an allocated buffer or not...
Pyramid * pyrA
Definition: hybrid_tmo.hpp:37
Image * imgReinhard
Definition: hybrid_tmo.hpp:40
Image * execute(Image *imgIn, Image *imgOut)
execute
Definition: hybrid_tmo.hpp:76
int width
Definition: image.hpp:80
int height
Definition: image.hpp:80
bool Write(std::string nameFile, LDR_type typeWrite, int writerCounter)
Write saves an Image into a file on the disk.
Image * Process(Image *imgIn, Image *imgOut)
Process.
Definition: segmentation_tmo_approx.hpp:113
FilterSigmoidTMO fltReinhardTMO
Definition: hybrid_tmo.hpp:36
FilterDragoTMO fltDragoTMO
Definition: hybrid_tmo.hpp:35
Segmentation seg
Definition: hybrid_tmo.hpp:34