PICCANTE  0.4
The hottest HDR imaging library!
filter_sampling_map.hpp
Go to the documentation of this file.
1 /*
2 
3 PICCANTE
4 The hottest HDR imaging library!
5 http://vcg.isti.cnr.it/piccante
6 
7 Copyright (C) 2014
8 Visual Computing Laboratory - ISTI CNR
9 http://vcg.isti.cnr.it
10 First author: Francesco Banterle
11 
12 This Source Code Form is subject to the terms of the Mozilla Public
13 License, v. 2.0. If a copy of the MPL was not distributed with this
14 file, You can obtain one at http://mozilla.org/MPL/2.0/.
15 
16 */
17 
18 #ifndef PIC_GL_FILTERING_FILTER_SAMPLING_MAP_HPP
19 #define PIC_GL_FILTERING_FILTER_SAMPLING_MAP_HPP
20 
21 #include "../../base.hpp"
22 
23 #include "../../util/std_util.hpp"
24 
25 #include "../../util/gl/fbo.hpp"
26 
27 #include "../../gl/filtering/filter_npasses.hpp"
28 #include "../../gl/filtering/filter_gradient.hpp"
29 #include "../../gl/filtering/filter_sigmoid_tmo.hpp"
30 #include "../../gl/filtering/filter_sampler_2d.hpp"
31 #include "../../gl/filtering/filter_gaussian_2d.hpp"
32 
33 namespace pic {
34 
39 {
40 protected:
41  float scale, sigma;
42 
47 
53  void update(float sigma, float scale)
54  {
55  this->sigma = sigma;
56  this->scale = scale;
57 
60  filterG = new FilterGLGradient();
62 
67  }
68 
69 public:
75  {
76  target = GL_TEXTURE_2D;
77  float rateScale = 2.0f;
78  update(rateScale, rateScale / sigma);
79  }
80 
81 
88  {
89  target = GL_TEXTURE_2D;
90  update(sigma * scale, scale);
91  }
92 
94  {
95  release();
96  }
97 
101  void releaseAux()
102  {
103  delete_s(filterD);
104  delete_s(filterS);
105  delete_s(filterG);
107  }
108 
113  float getScale()
114  {
115  return scale;
116  }
117 
123  {
124  if(filters.empty()) {
125  return NULL;
126  }
127 
128  return filters[filters.size() - 1]->getFbo();
129  }
130 
138  static ImageGL *execute(ImageGL *imgIn, ImageGL *imgOut, float sigma)
139  {
140  FilterGLSamplingMap filter(sigma);
141 
142  imgOut = filter.Process(SingleGL(imgIn), imgOut);
143 
144  return imgOut;
145  }
146 };
147 
148 } // end namespace pic
149 
150 #endif /* PIC_GL_FILTERING_FILTER_SAMPLING_MAP_HPP */
151 
FilterGLGaussian2D * filterG2D
Definition: filter_sampling_map.hpp:46
void insertFilter(FilterGL *flt)
insertFilter
Definition: display.hpp:143
T * delete_s(T *data)
delete_s
Definition: std_util.hpp:123
The Fbo class.
Definition: fbo.hpp:32
GLenum target
Definition: display.hpp:47
The FilterGLNPasses class.
Definition: filter_npasses.hpp:36
PIC_INLINE ImageGLVec SingleGL(ImageGL *img)
SingleGL creates a single for filters input.
Definition: image_vec.hpp:39
ImageGL * Process(ImageGLVec imgIn, ImageGL *imgOut)
Process.
Definition: filter_npasses.hpp:323
float scale
Definition: filter_sampling_map.hpp:41
FilterGLSampler2D * filterD
Definition: filter_sampling_map.hpp:45
The ImageGL class.
Definition: image.hpp:42
void update(float sigma, float scale)
update
Definition: filter_sampling_map.hpp:53
std::vector< FilterGL *> filters
Definition: display.hpp:55
The FilterGLGradient class.
Definition: filter_gradient.hpp:28
FilterGLGradient * filterG
Definition: filter_sampling_map.hpp:43
The FilterGLSampler2D class.
Definition: filter_sampler_2d.hpp:28
FilterGLSigmoidTMO * filterS
Definition: filter_sampling_map.hpp:44
FilterGLSamplingMap(float sigma, float scale)
FilterGLSamplingMap.
Definition: filter_sampling_map.hpp:87
float getScale()
getScale
Definition: filter_sampling_map.hpp:113
static ImageGL * execute(ImageGL *imgIn, ImageGL *imgOut, float sigma)
execute
Definition: filter_sampling_map.hpp:138
The FilterGLSigmoidTMO class.
Definition: filter_sigmoid_tmo.hpp:31
The FilterGLGaussian2D class.
Definition: filter_gaussian_2d.hpp:33
Definition: bilateral_separation.hpp:25
~FilterGLSamplingMap()
Definition: filter_sampling_map.hpp:93
The FilterGLSamplingMap class.
Definition: filter_sampling_map.hpp:38
float sigma
Definition: filter_sampling_map.hpp:41
FilterGLSamplingMap(float sigma)
FilterGLSamplingMap.
Definition: filter_sampling_map.hpp:74
void releaseAux()
releaseAux
Definition: filter_sampling_map.hpp:101
Fbo * getFbo()
getFbo
Definition: filter_sampling_map.hpp:122
void release()
release
Definition: display.hpp:85