在c ++中规格化直方图

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

我也有这个公式

目标是具有相同的结果,该函数可以规范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

链接地址: http://www.djcxy.com/p/89793.html

上一篇: normalize histogram in c++

下一篇: Normalising an image in opencv