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