我需要对图像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