18 #ifndef PIC_FILTERING_FILTER_BILATERAL_2DF_HPP 19 #define PIC_FILTERING_FILTER_BILATERAL_2DF_HPP 21 #include "../base.hpp" 23 #include "../util/std_util.hpp" 25 #include "../util/array.hpp" 27 #include "../util/precomputed_gaussian.hpp" 29 #include "../filtering/filter.hpp" 103 this->
sigma_r_sq_2 = this->sigma_r * this->sigma_r * 2.0f;
130 for(
int j = box->
y0; j < box->y1; j++) {
131 for(
int i = box->
x0; i < box->x1; i++) {
133 float *dst_data = (*dst)(i, j);
135 float *data_edge = (*edge)(i, j);
150 float *cur_edge = (*edge)(ci, cj);
156 float weight = G1 * G2;
159 float *base_data_cur = (*base)(ci, cj);
161 for(
int m = 0; m < channels; m++) {
162 dst_data[m] += base_data_cur[m] * weight;
173 float *base_data = (*base)(i, j);
void ProcessBBox(Image *dst, ImageVec src, BBox *box)
ProcessBBox.
Definition: filter_bilateral_2df.hpp:114
The BBox class manages the creation of bounding boxes for images.
Definition: bbox.hpp:29
int channels
Definition: image.hpp:80
T * delete_s(T *data)
delete_s
Definition: std_util.hpp:123
std::vector< Image * > ImageVec
ImageVec an std::vector of pic::Image.
Definition: image_vec.hpp:29
int x0
Definition: bbox.hpp:32
The Filter class.
Definition: filter.hpp:50
virtual Image * Process(ImageVec imgIn, Image *imgOut)
Process.
Definition: filter.hpp:390
float * coeff
Definition: precomputed_gaussian.hpp:67
The FilterBilateral2DF class.
Definition: filter_bilateral_2df.hpp:36
static Image * execute(Image *imgIn, Image *imgOut, float sigma_s, float sigma_r)
execute
Definition: filter_bilateral_2df.hpp:83
static T distanceSq(T *data0, T *data1, int n)
distanceSq
Definition: array.hpp:195
PrecomputedGaussian * pg
Definition: filter_bilateral_2df.hpp:41
int y0
Definition: bbox.hpp:32
std::string genBilString(std::string type, float sigma_s, float sigma_r)
genBilString
Definition: string.hpp:366
#define PIC_INLINE
Definition: base.hpp:33
The Image class stores an image as buffer of float.
Definition: image.hpp:60
float sigma_r_sq_2
Definition: filter_bilateral_2df.hpp:39
float sigma_s
Definition: filter_bilateral_2df.hpp:39
static void div(T *data, int size, T value)
div
Definition: array.hpp:353
The PrecomputedGaussian class.
Definition: precomputed_gaussian.hpp:30
int halfKernelSize
Definition: precomputed_gaussian.hpp:66
virtual void f(FilterFData *data)
f
Definition: filter_radial_basis_function.hpp:69
int kernelSize
Definition: precomputed_gaussian.hpp:66
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 T * assign(T *data, int size, T *ret)
assign
Definition: array.hpp:464
float sigma_r
Definition: filter_bilateral_2df.hpp:39
FilterBilateral2DF()
FilterBilateral2DF.
Definition: filter_bilateral_2df.hpp:93
std::string signature()
signature
Definition: filter_bilateral_2df.hpp:70
~FilterBilateral2DF()
Definition: filter_bilateral_2df.hpp:109