in IsometricPatternMatcher/DotExtractor.h [100:122]
void blurKernel(size_t& radius, const float sigma) {
radius = std::min((size_t)ceil(3 * sigma), MAX_RAD_BLUR_SMEM - 1);
float sum = 0.0f;
const float a = 1.0f / (sigma * std::sqrt(2.0f * M_PI));
for (size_t i = 0; i < MAX_RAD_BLUR_SMEM; i++) {
const float b = (float)i * (float)i;
const float c = -b / (2.0f * (sigma * sigma));
kernel_[i] = a * exp(c);
// the kernel is symmetric, so we only store one side of it
// as a result, coeffs count double...
sum += (i == 0 ? 1.0 : 2.0) * kernel_[i];
}
for (size_t i = 0; i < MAX_RAD_BLUR_SMEM; i++) {
kernel_[i] /= sum;
}
}