Локальная нормализация в OpenCV

Я пытаюсь реализовать в OpenCV алгоритм локальной нормализации, чтобы уменьшить разницу освещенности в изображении. Я нашелФункция MATLABи я реализовал это в OpenCV. Однако результат, который я получаю, отличается от результата, данного функцией MATLAB.

Это мой код:

Mat localNorm(Mat image, float sigma1, float sigma2)
{
    Mat floatGray, blurred1, blurred2, temp1, temp2, res;

    image.convertTo(floatGray, CV_32FC1);
    floatGray = floatGray/255.0;

    int blur1 = 2*ceil(-NormInv(0.05, 0, sigma1))+1;
    cv::GaussianBlur(floatGray, blurred1, cv::Size(blur1,blur1), sigma1);
    temp1 = floatGray-blurred1;

    cv::pow(temp1, 2.0, temp2);
    int blur2 = 2*ceil(-NormInv(0.05, 0, sigma2))+1;
    cv::GaussianBlur(temp2, blurred2, cv::Size(blur2,blur2), sigma2);
    cv::pow(blurred2, 0.5, temp2);

    floatGray = temp1/temp2;
    floatGray = 255.0*floatGray;
    floatGray.convertTo(res, CV_8UC1);

    return res;
}

ФункцияNormInv реализация C ++, данная Юаном Дином вэта почта.

Ниже показан результат, который я получаю, и теоретический результат для тех же значенийsigma1 а такжеsigma2 (2.0 и 20.0 соответственно)

Я пытался использовать разные значения дляsigma1 а такжеsigma2, но ни один из них, кажется, не работает. Я также пытался сделатьblur1=0 а такжеblur2=0 в гауссовой функции, но она тоже не работает.

Любая помощь будет оценена. Заранее спасибо.