在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