18 #ifndef PIC_FILTERING_FILTER_BILATERAL_1D_HPP 19 #define PIC_FILTERING_FILTER_BILATERAL_1D_HPP 21 #include "../util/precomputed_gaussian.hpp" 22 #include "../util/std_util.hpp" 23 #include "../util/array.hpp" 25 #include "../filtering/filter.hpp" 93 this->
sigma_r_sq_2 = this->sigma_r * this->sigma_r * 2.0f;
118 printf(
"ERROR: FilterGaussian1D::ChangePass\n");
123 dirs[ pass % tMod] = 1;
125 for(
int i = 1; i < tMod; i++) {
126 dirs[(pass + i) % tMod] = 0;
138 if(src.size() == 2) {
147 for(
int m = box->
z0; m < box->z1; m++) {
148 for(
int j = box->
y0; j < box->y1; j++) {
149 for(
int i = box->
x0; i < box->x1; i++) {
151 float *tmpDst = (*dst )(i, j, m);
152 float *tmpEdge = (*edge)(i, j, m);
165 int cj = j + tmpCoord *
dirs[0];
167 int ci = i + tmpCoord *
dirs[1];
169 int cm = m + tmpCoord *
dirs[2];
173 float *curEdge = (*edge)(ci, cj, cm);
182 float *curBase = (*base)(ci, cj, cm);
183 for(
int l = 0; l < dst->
channels; l++) {
184 tmpDst[l] += curBase[l] * weight;
194 float *base = (*edge)(i, j, m);
The FilterBilateral1D class.
Definition: filter_bilateral_1d.hpp:32
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
void ProcessBBox(Image *dst, ImageVec src, BBox *box)
ProcessBBox.
Definition: filter_bilateral_1d.hpp:134
The Filter class.
Definition: filter.hpp:50
float * coeff
Definition: precomputed_gaussian.hpp:67
int dirs[3]
Definition: filter_bilateral_1d.hpp:36
static T distanceSq(T *data0, T *data1, int n)
distanceSq
Definition: array.hpp:195
void changePass(int pass, int tPass)
changePass
Definition: filter_bilateral_1d.hpp:103
int y0
Definition: bbox.hpp:32
std::string signature()
signature
Definition: filter_bilateral_1d.hpp:69
float sigma_s
Definition: filter_bilateral_1d.hpp:49
std::string genBilString(std::string type, float sigma_s, float sigma_r)
genBilString
Definition: string.hpp:366
#define PIC_INLINE
Definition: base.hpp:33
PrecomputedGaussian * pg
Definition: filter_bilateral_1d.hpp:35
The Image class stores an image as buffer of float.
Definition: image.hpp:60
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
Definition: bilateral_separation.hpp:25
float sigma_r_sq_2
Definition: filter_bilateral_1d.hpp:37
static T * assign(T *data, int size, T *ret)
assign
Definition: array.hpp:464
FilterBilateral1D(float sigma_s, float sigma_r)
FilterBilateral1D.
Definition: filter_bilateral_1d.hpp:82
void update(float sigma_s, float sigma_r)
update
Definition: filter_bilateral_1d.hpp:88
int z0
Definition: bbox.hpp:32
float sigma_r
Definition: filter_bilateral_1d.hpp:49