当前位置: 代码迷 >> 综合 >> opencv的NORM_MINMAX参数
  详细解决方案

opencv的NORM_MINMAX参数

热度:80   发布时间:2024-03-08 16:09:29.0
cv::NormTypes::NORM_MINMAX

这个参数在normalize函数里面用到。

void cv::normalize ( InputArray  src,
    InputOutputArray  dst,
    double  alpha = 1,
    double  beta = 0,
    int  norm_type = NORM_L2,
    int  dtype = -1,
    InputArray  mask = noArray() 
  )

通常情况下用到这个参数比较多。

那这个参数是要怎么样根据原图计算输出图像的呢?

下面是计算的公式,蛮简单的。

 

	Mat dst1;float beta = 10.0f;float alpha = 0.0f;Mat img = (Mat_<float>(3, 3) << 1.2, 3.4, 5.6,7.8, 9.1, 2.3,4.5, 6.7, 8.9);normalize(img, dst1, alpha, beta, NORM_MINMAX);Mat dst2 = Mat::zeros(img.size(), img.type());double minval, maxval;minMaxLoc(img, &minval, &maxval);for (int row = 0; row < img.rows; row++){for (int col = 0; col < img.cols; col++){//公式实现dst2.at<float>(row, col) = ((beta - alpha) / (float(maxval) - float(minval))) * (img.at<float>(row, col) - float(minval));}}

以下是上面的两种方式的计算结果:

normalize函数的计算结果dst1:

0 2.78481 5.56962 8.35443 10 1.3924 4.17721 6.96202 9.74683

根据公式的计算结果dst2:
0 2.78481 5.56962 8.35443 10 1.3924 4.17721 6.96202 9.74683