43 const uint32_t norm_size =
info.norm_size();
45 float beta =
info.beta();
46 uint32_t kappa =
info.kappa();
48 const int cols =
src.shape()[0];
49 const int rows =
src.shape()[1];
50 const int depth =
src.shape()[2];
51 int upper_dims =
src.shape().total_size() / (
cols *
rows);
53 float coeff =
info.scale_coeff();
54 int radius_cols = norm_size / 2;
59 if(
info.is_cross_map())
65 for(
int r = 0; r < upper_dims; ++r)
67 for(
int i = 0; i <
rows; ++i)
69 for(
int k = 0; k <
cols; ++k)
71 for(
int l = 0; l < depth; ++l)
73 float accumulated_scale = 0.f;
75 for(
int j = -radius_cols; j <= radius_cols; ++j)
79 if(z >= 0 && z < depth)
82 accumulated_scale += value * value;
94 for(
int r = 0; r < upper_dims; ++r)
96 for(
int i = 0; i <
rows; ++i)
98 for(
int k = 0; k <
cols; ++k)
100 float accumulated_scale = 0.f;
102 for(
int j = -radius_rows; j <= radius_rows; ++j)
105 for(
int l = -radius_cols; l <= radius_cols; ++l)
109 if((x >= 0 && y >= 0) && (x <
cols && y <
rows))
112 accumulated_scale += value * value;
117 dst[k + i *
cols + r *
cols *
rows] = kappa + accumulated_scale * coeff;
125 for(
int i = 0; i <
dst.num_elements(); ++i)
130 else if(beta == 0.5f)
132 for(
int i = 0; i <
dst.num_elements(); ++i)
139 for(
int i = 0; i <
dst.num_elements(); ++i)
141 dst[i] =
src[i] * std::exp(std::log(
dst[i]) * -beta);