在c ++中规范化直方图 - 函数在openCV中规范化

时间:2018-02-17 21:07:15

标签: c++ opencv

我需要对图像f的直方图进行标准化,这意味着应用图像直方图的变换,以便将f的值范围扩展到所有可用值。 标准(fmin)= Vmin(我们想要达到的最小值)和正常(fmin)= Vmax(我们想达到的最大值)

I have this formula too

目标是获得与openCV给出的函数规范化相同的结果。

Mat normalize(Mat image, float minValue, float maxValue)
{
  Mat res = image.clone();
  assert(minValue <= maxValue);
 float Fmax = 0; 
 float Fmin = 0;

for(int i = 0; i < res.rows; i++)
{
    for(int j = 0; j < res.cols; j++)
    {
        float x = res.at<float>(i,j);
        if(i < minValue)
        {
            Fmin = i;
        }
        if( i > maxValue)
        {
            Fmax = i;
        }
        res.at<float>(i,j) = (x - Fmin) * ((maxValue - minValue) / (Fmax - Fmin)) + minValue; 

    }
}
     return res;
}

我有这个错误:!!!警告,保存的图像值不在0和1之间。 !警告,保存的图像值不在0和1之间。

我想我不明白如何计算fmin / fmax

0 个答案:

没有答案