UpSampler::UpSampler(size_t inputBlockSize) : m_inputBlockSize(inputBlockSize) , m_kernel(DefaultKernelSize) , m_convolver(inputBlockSize) , m_tempBuffer(inputBlockSize) , m_inputBuffer(inputBlockSize * 2) { initializeKernel(); }
Image2DPtr HighPassFilter::ApplyLowPass(const Image2DCPtr &image, const Mask2DCPtr &mask) { initializeKernel(); Image2DPtr outputImage = Image2D::CreateUnsetImagePtr(image->Width(), image->Height()), weights = Image2D::CreateUnsetImagePtr(image->Width(), image->Height()); setFlaggedValuesToZeroAndMakeWeightsSSE(image, outputImage, mask, weights); applyLowPassSSE(outputImage); applyLowPassSSE(weights); elementWiseDivideSSE(outputImage, weights); weights.reset(); return outputImage; }