MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ gaussian_blur() [1/2]

MAYAFLUX_API void MayaFlux::Kinesis::Vision::gaussian_blur ( std::span< const float >  src,
std::span< float >  tmp,
std::span< float >  dst,
uint32_t  w,
uint32_t  h,
float  sigma 
)

Gaussian blur writing into caller-supplied buffers.

Parameters
srcInput span, size w * h.
tmpScratch span for horizontal pass, size >= w * h.
dstOutput span, size >= w * h.
wImage width in pixels.
hImage height in pixels.
sigmaStandard deviation in pixels. Must be > 0.

Definition at line 522 of file ImageFilter.cpp.

528{
529 const auto radius = static_cast<int32_t>(std::ceil(3.0F * sigma));
530 const int32_t size = 2 * radius + 1;
531
532 std::vector<float> kernel(static_cast<size_t>(size));
533 float sum = 0.0F;
534
535 const float inv_2s2 = 1.0F / (2.0F * sigma * sigma);
536 for (int32_t i = -radius; i <= radius; ++i) {
537 const float v = std::exp(-static_cast<float>(i * i) * inv_2s2);
538 kernel[static_cast<size_t>(i + radius)] = v;
539 sum += v;
540 }
541
542 auto kmap = Eigen::Map<Eigen::ArrayXf>(kernel.data(), static_cast<Eigen::Index>(kernel.size()));
543 kmap /= sum;
544 filter_separable(src, tmp, dst, w, h, kernel, kernel);
545}
uint32_t h
Definition InkPress.cpp:28
uint32_t radius
float sigma

References filter_separable(), h, radius, and sigma.

+ Here is the call graph for this function: