函数原型:
void cv::normalize ( InputArray src,
InputOutputArray dst,
double alpha = 1,
double beta = 0,
int norm_type = NORM_L2,
int dtype = -1,
InputArray mask = noArray()
)
解析:
- src:输入
- dst:输出
- alpha:归一化目标值(范围归一化中的下边界)
- beta:(范围归一化中的上边界),其他情况无效
- norm_type:归一化方法
- dtype:当为负数的时候,输出数据类型和输入一致;否则输出的通道数和输入一致,输出的数据类型和这里设置的一致
- mask:掩膜
官方示例:
vector<double> positiveData = { 2.0, 8.0, 10.0 };
vector<double> normalizedData_l1, normalizedData_l2, normalizedData_inf, normalizedData_minmax;
// Norm to probability (total count) 求相对总数的概率
// sum(numbers) = 20.0
// 2.0 0.1 (2.0/20.0)
// 8.0 0.4 (8.0/20.0)
// 10.0 0.5 (10.0/20.0)
// 概率和为 1,即 0.1+0.4+0.5=1
normalize(positiveData, normalizedData_l1, 1.0, 0.0, NORM_L1);
// Norm to unit vector: ||positiveData|| = 1.0
// 2.0 0.15
// 8.0 0.62
// 10.0 0.77
// 归一化后的平方和为 1,即 0.15^2+0.62^2+0.77^2=1
normalize(positiveData, normalizedData_l2, 1.0, 0.0, NORM_L2);
// Norm to max element 除以最大值
// 2.0 0.2 (2.0/10.0)
// 8.0 0.8 (8.0/10.0)
// 10.0 1.0 (10.0/10.0)
normalize(positiveData, normalizedData_inf, 1.0, 0.0, NORM_INF);
// Norm to range [0.0;1.0] 减去最小值,再除以(最大值-最小值)
// 2.0 0.0 (shift to left border)
// 8.0 0.75 (6.0/8.0)
// 10.0 1.0 (shift to right border)
normalize(positiveData, normalizedData_minmax, 1.0, 0.0, NORM_MINMAX);