18 #ifndef PIC_FILTERING_FILTER_GUIDED_HPP 19 #define PIC_FILTERING_FILTER_GUIDED_HPP 21 #include "../filtering/filter.hpp" 23 #include "../util/array.hpp" 25 #include "../util/matrix_3_x_3.hpp" 27 #include "../filtering/filter_guided_a_b.hpp" 29 #include "../util/math.hpp" 140 for(
int j = box->
y0; j < box->y1; j++) {
141 for(
int i = box->
x0; i < box->x1; i++) {
142 float *tmpQ = (*q)(i, j);
143 float *tmpI = (*I)(i, j);
148 for(
int c = 0; c < p->
channels; c++) {
150 float a = a_b_mean[index];
151 float b = a_b_mean[index + 1];
152 tmpQ[c] = a * tmpI[0] + b;
167 for(
int j = box->
y0; j < box->y1; j++) {
168 for(
int i = box->
x0; i < box->x1; i++) {
169 float *tmpQ = (*q)(i, j);
170 float *tmpI = (*I)(i, j);
175 for(
int c = 0; c < p->
channels; c++) {
177 int index = c * shift;
178 float *a = &a_b_mean[index];
179 float b = a_b_mean[index + I->
channels];
183 tmpQ[c] = a_dot_I + b;
196 if(src.size() == 2) {
The BBox class manages the creation of bounding boxes for images.
Definition: bbox.hpp:29
int channels
Definition: image.hpp:80
int radius
Definition: filter_guided.hpp:40
std::vector< Image * > ImageVec
ImageVec an std::vector of pic::Image.
Definition: image_vec.hpp:29
int x0
Definition: bbox.hpp:32
float * getMeanVal(BBox *box, float *ret)
getMeanVal computes the mean for the current Image.
The Filter class.
Definition: filter.hpp:50
float nPixels
Definition: filter_guided.hpp:41
virtual Image * Process(ImageVec imgIn, Image *imgOut)
Process.
Definition: filter.hpp:390
Image * ProcessP(ImageVec imgIn, Image *imgOut)
ProcessP.
Definition: filter.hpp:353
float e_regularization
Definition: filter_guided.hpp:41
int y0
Definition: bbox.hpp:32
void ProcessBBox(Image *dst, ImageVec src, BBox *box)
ProcessBBox.
Definition: filter_guided.hpp:191
FilterGuidedAB flt
Definition: filter_guided.hpp:44
FilterGuided()
FilterGuided.
Definition: filter_guided.hpp:77
The FilterGuided class.
Definition: filter_guided.hpp:36
PIC_INLINE ImageVec Double(Image *img1, Image *img2)
Double creates an std::vector which contains img1 and img2; this is for filters input.
Definition: image_vec.hpp:49
void update(int radius, float e_regularization)
update
Definition: filter_guided.hpp:124
#define PIC_INLINE
Definition: base.hpp:33
The FilterGuidedAB class.
Definition: filter_guided_a_b.hpp:34
void update(int radius, float e_regularization)
update
Definition: filter_guided_a_b.hpp:165
static T dot(T *data0, T *data1, int n)
dot
Definition: array.hpp:281
The Image class stores an image as buffer of float.
Definition: image.hpp:60
static Image * execute(Image *imgIn, Image *guide, Image *imgOut, int radius, float e_regularization)
execute
Definition: filter_guided.hpp:116
virtual void f(FilterFData *data)
f
Definition: filter_radial_basis_function.hpp:69
Definition: bilateral_separation.hpp:25
Image * Process(ImageVec imgIn, Image *imgOut)
FilterGuided::Process.
Definition: filter_guided.hpp:216
void Process3Channel(Image *I, Image *p, Image *q, BBox *box)
Process3Channel.
Definition: filter_guided.hpp:160
virtual Image * setupAux(ImageVec imgIn, Image *imgOut)
setupAux
Definition: filter.hpp:288
Image * img_a_b
Definition: filter_guided.hpp:42
bool checkInput(ImageVec &imgIn)
checkInput
Definition: filter.hpp:385
FilterGuided(int radius, float e_regularization)
FilterGuided.
Definition: filter_guided.hpp:87
void Process1Channel(Image *I, Image *p, Image *q, BBox *box)
Process1Channel.
Definition: filter_guided.hpp:135